# Email ## Domain Types ### Radar Email Series - `class RadarEmailSeries: …` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Radar Email Summary - `class RadarEmailSummary: …` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. # Routing ## Get email routing summary by dimension `radar.email.routing.summary_v2(Literal["IP_VERSION", "ENCRYPTED", "ARC", 3 more]dimension, RoutingSummaryV2Params**kwargs) -> RoutingSummaryV2Response` **get** `/radar/email/routing/summary/{dimension}` Retrieves the distribution of email routing metrics by the specified dimension. ### Parameters - `dimension: Literal["IP_VERSION", "ENCRYPTED", "ARC", 3 more]` Specifies the attribute by which to group the results. - `"IP_VERSION"` - `"ENCRYPTED"` - `"ARC"` - `"DKIM"` - `"DMARC"` - `"SPF"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `encrypted: Optional[List[Literal["ENCRYPTED", "NOT_ENCRYPTED"]]]` Filters results by encryption status (encrypted vs. not-encrypted). - `"ENCRYPTED"` - `"NOT_ENCRYPTED"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `ip_version: Optional[List[Literal["IPv4", "IPv6"]]]` Filters results by IP version (Ipv4 vs. IPv6). - `"IPv4"` - `"IPv6"` - `limit_per_group: Optional[int]` Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category. Only supported on high-cardinality dimensions; otherwise the request is rejected. Minimum value is 2. - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class RoutingSummaryV2Response: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Dict[str, str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.summary_v2( dimension="IP_VERSION", ) print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "FAIL": "25.084366", "PASS": "50.168733" } }, "success": true } ``` ## Get email routing time series grouped by dimension `radar.email.routing.timeseries_groups_v2(Literal["IP_VERSION", "ENCRYPTED", "ARC", 3 more]dimension, RoutingTimeseriesGroupsV2Params**kwargs) -> RoutingTimeseriesGroupsV2Response` **get** `/radar/email/routing/timeseries_groups/{dimension}` Retrieves the distribution of email routing metrics grouped by dimension over time. ### Parameters - `dimension: Literal["IP_VERSION", "ENCRYPTED", "ARC", 3 more]` Specifies the attribute by which to group the results. - `"IP_VERSION"` - `"ENCRYPTED"` - `"ARC"` - `"DKIM"` - `"DMARC"` - `"SPF"` - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `encrypted: Optional[List[Literal["ENCRYPTED", "NOT_ENCRYPTED"]]]` Filters results by encryption status (encrypted vs. not-encrypted). - `"ENCRYPTED"` - `"NOT_ENCRYPTED"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `ip_version: Optional[List[Literal["IPv4", "IPv6"]]]` Filters results by IP version (Ipv4 vs. IPv6). - `"IPv4"` - `"IPv6"` - `limit_per_group: Optional[int]` Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category. Only supported on high-cardinality dimensions; otherwise the request is rejected. Minimum value is 2. - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class RoutingTimeseriesGroupsV2Response: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `timestamps: List[datetime]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.timeseries_groups_v2( dimension="IP_VERSION", ) print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "timestamps": [ "2023-08-08T10:15:00Z" ] } }, "success": true } ``` ## Domain Types ### Routing Summary V2 Response - `class RoutingSummaryV2Response: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Dict[str, str]` ### Routing Timeseries Groups V2 Response - `class RoutingTimeseriesGroupsV2Response: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `timestamps: List[datetime]` # Summary ## Get email ARC validation summary `radar.email.routing.summary.arc(SummaryARCParams**kwargs) -> SummaryARCResponse` **get** `/radar/email/routing/summary/arc` Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation. ### Parameters - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `encrypted: Optional[List[Literal["ENCRYPTED", "NOT_ENCRYPTED"]]]` Filters results by encryption status (encrypted vs. not-encrypted). - `"ENCRYPTED"` - `"NOT_ENCRYPTED"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `ip_version: Optional[List[Literal["IPv4", "IPv6"]]]` Filters results by IP version (Ipv4 vs. IPv6). - `"IPv4"` - `"IPv6"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class SummaryARCResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.summary.arc() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "FAIL": "10", "NONE": "10", "PASS": "10" } }, "success": true } ``` ## Get email DKIM validation summary `radar.email.routing.summary.dkim(SummaryDKIMParams**kwargs) -> SummaryDKIMResponse` **get** `/radar/email/routing/summary/dkim` Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation. ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `encrypted: Optional[List[Literal["ENCRYPTED", "NOT_ENCRYPTED"]]]` Filters results by encryption status (encrypted vs. not-encrypted). - `"ENCRYPTED"` - `"NOT_ENCRYPTED"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `ip_version: Optional[List[Literal["IPv4", "IPv6"]]]` Filters results by IP version (Ipv4 vs. IPv6). - `"IPv4"` - `"IPv6"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class SummaryDKIMResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.summary.dkim() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "FAIL": "10", "NONE": "10", "PASS": "10" } }, "success": true } ``` ## Get email DMARC validation summary `radar.email.routing.summary.dmarc(SummaryDMARCParams**kwargs) -> SummaryDMARCResponse` **get** `/radar/email/routing/summary/dmarc` Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation. ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `encrypted: Optional[List[Literal["ENCRYPTED", "NOT_ENCRYPTED"]]]` Filters results by encryption status (encrypted vs. not-encrypted). - `"ENCRYPTED"` - `"NOT_ENCRYPTED"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `ip_version: Optional[List[Literal["IPv4", "IPv6"]]]` Filters results by IP version (Ipv4 vs. IPv6). - `"IPv4"` - `"IPv6"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class SummaryDMARCResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.summary.dmarc() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "FAIL": "10", "NONE": "10", "PASS": "10" } }, "success": true } ``` ## Get email encryption status summary `radar.email.routing.summary.encrypted(SummaryEncryptedParams**kwargs) -> SummaryEncryptedResponse` **get** `/radar/email/routing/summary/encrypted` Retrieves the distribution of emails by encryption status (encrypted vs. not-encrypted). ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `ip_version: Optional[List[Literal["IPv4", "IPv6"]]]` Filters results by IP version (Ipv4 vs. IPv6). - `"IPv4"` - `"IPv6"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class SummaryEncryptedResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `encrypted: str` A numeric string. - `not_encrypted: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.summary.encrypted() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "ENCRYPTED": "10", "NOT_ENCRYPTED": "10" } }, "success": true } ``` ## Get email IP version summary `radar.email.routing.summary.ip_version(SummaryIPVersionParams**kwargs) -> SummaryIPVersionResponse` **get** `/radar/email/routing/summary/ip_version` Retrieves the distribution of emails by IP version. ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `encrypted: Optional[List[Literal["ENCRYPTED", "NOT_ENCRYPTED"]]]` Filters results by encryption status (encrypted vs. not-encrypted). - `"ENCRYPTED"` - `"NOT_ENCRYPTED"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class SummaryIPVersionResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `i_pv4: str` A numeric string. - `i_pv6: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.summary.ip_version() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "IPv4": "10", "IPv6": "10" } }, "success": true } ``` ## Get email SPF validation summary `radar.email.routing.summary.spf(SummarySPFParams**kwargs) -> SummarySPFResponse` **get** `/radar/email/routing/summary/spf` Retrieves the distribution of emails by SPF (Sender Policy Framework) validation. ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `encrypted: Optional[List[Literal["ENCRYPTED", "NOT_ENCRYPTED"]]]` Filters results by encryption status (encrypted vs. not-encrypted). - `"ENCRYPTED"` - `"NOT_ENCRYPTED"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `ip_version: Optional[List[Literal["IPv4", "IPv6"]]]` Filters results by IP version (Ipv4 vs. IPv6). - `"IPv4"` - `"IPv6"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. ### Returns - `class SummarySPFResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.summary.spf() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "FAIL": "10", "NONE": "10", "PASS": "10" } }, "success": true } ``` ## Domain Types ### Summary ARC Response - `class SummaryARCResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Summary DKIM Response - `class SummaryDKIMResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Summary DMARC Response - `class SummaryDMARCResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Summary Encrypted Response - `class SummaryEncryptedResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `encrypted: str` A numeric string. - `not_encrypted: str` A numeric string. ### Summary IP Version Response - `class SummaryIPVersionResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `i_pv4: str` A numeric string. - `i_pv6: str` A numeric string. ### Summary SPF Response - `class SummarySPFResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. # Timeseries Groups ## Get email ARC validation time series `radar.email.routing.timeseries_groups.arc(TimeseriesGroupARCParams**kwargs) -> TimeseriesGroupARCResponse` **get** `/radar/email/routing/timeseries_groups/arc` Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `encrypted: Optional[List[Literal["ENCRYPTED", "NOT_ENCRYPTED"]]]` Filters results by encryption status (encrypted vs. not-encrypted). - `"ENCRYPTED"` - `"NOT_ENCRYPTED"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `ip_version: Optional[List[Literal["IPv4", "IPv6"]]]` Filters results by IP version (Ipv4 vs. IPv6). - `"IPv4"` - `"IPv6"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class TimeseriesGroupARCResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.timeseries_groups.arc() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "FAIL": [ "10" ], "NONE": [ "10" ], "PASS": [ "10" ] } }, "success": true } ``` ## Get email DKIM validation time series `radar.email.routing.timeseries_groups.dkim(TimeseriesGroupDKIMParams**kwargs) -> TimeseriesGroupDKIMResponse` **get** `/radar/email/routing/timeseries_groups/dkim` Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `encrypted: Optional[List[Literal["ENCRYPTED", "NOT_ENCRYPTED"]]]` Filters results by encryption status (encrypted vs. not-encrypted). - `"ENCRYPTED"` - `"NOT_ENCRYPTED"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `ip_version: Optional[List[Literal["IPv4", "IPv6"]]]` Filters results by IP version (Ipv4 vs. IPv6). - `"IPv4"` - `"IPv6"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class TimeseriesGroupDKIMResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.timeseries_groups.dkim() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "FAIL": [ "10" ], "NONE": [ "10" ], "PASS": [ "10" ] } }, "success": true } ``` ## Get email DMARC validation time series `radar.email.routing.timeseries_groups.dmarc(TimeseriesGroupDMARCParams**kwargs) -> TimeseriesGroupDMARCResponse` **get** `/radar/email/routing/timeseries_groups/dmarc` Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `encrypted: Optional[List[Literal["ENCRYPTED", "NOT_ENCRYPTED"]]]` Filters results by encryption status (encrypted vs. not-encrypted). - `"ENCRYPTED"` - `"NOT_ENCRYPTED"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `ip_version: Optional[List[Literal["IPv4", "IPv6"]]]` Filters results by IP version (Ipv4 vs. IPv6). - `"IPv4"` - `"IPv6"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class TimeseriesGroupDMARCResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.timeseries_groups.dmarc() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "FAIL": [ "10" ], "NONE": [ "10" ], "PASS": [ "10" ] } }, "success": true } ``` ## Get email encryption status time series `radar.email.routing.timeseries_groups.encrypted(TimeseriesGroupEncryptedParams**kwargs) -> TimeseriesGroupEncryptedResponse` **get** `/radar/email/routing/timeseries_groups/encrypted` Retrieves the distribution of emails by encryption status (encrypted vs. not-encrypted) over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `ip_version: Optional[List[Literal["IPv4", "IPv6"]]]` Filters results by IP version (Ipv4 vs. IPv6). - `"IPv4"` - `"IPv6"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class TimeseriesGroupEncryptedResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `encrypted: List[str]` - `not_encrypted: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.timeseries_groups.encrypted() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "ENCRYPTED": [ "10" ], "NOT_ENCRYPTED": [ "10" ] } }, "success": true } ``` ## Get email IP version time series `radar.email.routing.timeseries_groups.ip_version(TimeseriesGroupIPVersionParams**kwargs) -> TimeseriesGroupIPVersionResponse` **get** `/radar/email/routing/timeseries_groups/ip_version` Retrieves the distribution of emails by IP version over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `encrypted: Optional[List[Literal["ENCRYPTED", "NOT_ENCRYPTED"]]]` Filters results by encryption status (encrypted vs. not-encrypted). - `"ENCRYPTED"` - `"NOT_ENCRYPTED"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class TimeseriesGroupIPVersionResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `i_pv4: List[str]` - `i_pv6: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.timeseries_groups.ip_version() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "IPv4": [ "10" ], "IPv6": [ "10" ] } }, "success": true } ``` ## Get email SPF validation time series `radar.email.routing.timeseries_groups.spf(TimeseriesGroupSPFParams**kwargs) -> TimeseriesGroupSPFResponse` **get** `/radar/email/routing/timeseries_groups/spf` Retrieves the distribution of emails by SPF (Sender Policy Framework) validation over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `encrypted: Optional[List[Literal["ENCRYPTED", "NOT_ENCRYPTED"]]]` Filters results by encryption status (encrypted vs. not-encrypted). - `"ENCRYPTED"` - `"NOT_ENCRYPTED"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `ip_version: Optional[List[Literal["IPv4", "IPv6"]]]` Filters results by IP version (Ipv4 vs. IPv6). - `"IPv4"` - `"IPv6"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. ### Returns - `class TimeseriesGroupSPFResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.routing.timeseries_groups.spf() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "FAIL": [ "10" ], "NONE": [ "10" ], "PASS": [ "10" ] } }, "success": true } ``` ## Domain Types ### Timeseries Group ARC Response - `class TimeseriesGroupARCResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Timeseries Group DKIM Response - `class TimeseriesGroupDKIMResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Timeseries Group DMARC Response - `class TimeseriesGroupDMARCResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Timeseries Group Encrypted Response - `class TimeseriesGroupEncryptedResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `encrypted: List[str]` - `not_encrypted: List[str]` ### Timeseries Group IP Version Response - `class TimeseriesGroupIPVersionResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `i_pv4: List[str]` - `i_pv6: List[str]` ### Timeseries Group SPF Response - `class TimeseriesGroupSPFResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` # Security ## Get email security summary by dimension `radar.email.security.summary_v2(Literal["SPAM", "MALICIOUS", "SPOOF", 6 more]dimension, SecuritySummaryV2Params**kwargs) -> SecuritySummaryV2Response` **get** `/radar/email/security/summary/{dimension}` Retrieves the distribution of email security metrics by the specified dimension. ### Parameters - `dimension: Literal["SPAM", "MALICIOUS", "SPOOF", 6 more]` Specifies the attribute by which to group the results. - `"SPAM"` - `"MALICIOUS"` - `"SPOOF"` - `"THREAT_CATEGORY"` - `"ARC"` - `"DKIM"` - `"DMARC"` - `"SPF"` - `"TLS_VERSION"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `limit_per_group: Optional[int]` Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category. Only supported on high-cardinality dimensions; otherwise the request is rejected. Minimum value is 2. - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class SecuritySummaryV2Response: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Dict[str, str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.summary_v2( dimension="SPAM", ) print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "FAIL": "25.084366", "PASS": "50.168733" } }, "success": true } ``` ## Get email security time series grouped by dimension `radar.email.security.timeseries_groups_v2(Literal["SPAM", "MALICIOUS", "SPOOF", 6 more]dimension, SecurityTimeseriesGroupsV2Params**kwargs) -> SecurityTimeseriesGroupsV2Response` **get** `/radar/email/security/timeseries_groups/{dimension}` Retrieves the distribution of email security metrics grouped by dimension over time. ### Parameters - `dimension: Literal["SPAM", "MALICIOUS", "SPOOF", 6 more]` Specifies the attribute by which to group the results. - `"SPAM"` - `"MALICIOUS"` - `"SPOOF"` - `"THREAT_CATEGORY"` - `"ARC"` - `"DKIM"` - `"DMARC"` - `"SPF"` - `"TLS_VERSION"` - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `limit_per_group: Optional[int]` Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category. Only supported on high-cardinality dimensions; otherwise the request is rejected. Minimum value is 2. - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class SecurityTimeseriesGroupsV2Response: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `timestamps: List[datetime]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.timeseries_groups_v2( dimension="SPAM", ) print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "timestamps": [ "2023-08-08T10:15:00Z" ] } }, "success": true } ``` ## Domain Types ### Security Summary V2 Response - `class SecuritySummaryV2Response: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Dict[str, str]` ### Security Timeseries Groups V2 Response - `class SecurityTimeseriesGroupsV2Response: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `timestamps: List[datetime]` # Top # TLDs ## Get top TLDs by email message volume `radar.email.security.top.tlds.get(TLDGetParams**kwargs) -> TLDGetResponse` **get** `/radar/email/security/top/tlds` Retrieves the top TLDs by number of email messages. ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `limit: Optional[int]` Limits the number of objects returned in the response. - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tld_category: Optional[Literal["CLASSIC", "COUNTRY"]]` Filters results by TLD category. - `"CLASSIC"` - `"COUNTRY"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class TLDGetResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: Optional[MetaConfidenceInfo]` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `top_0: List[Top0]` - `name: str` - `value: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) tld = client.radar.email.security.top.tlds.get() print(tld.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "top_0": [ { "name": "com.", "value": "10" } ] }, "success": true } ``` ## Domain Types ### TLD Get Response - `class TLDGetResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: Optional[MetaConfidenceInfo]` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `top_0: List[Top0]` - `name: str` - `value: str` A numeric string. # Malicious ## Get top TLDs by email malicious classification `radar.email.security.top.tlds.malicious.get(Literal["MALICIOUS", "NOT_MALICIOUS"]malicious, MaliciousGetParams**kwargs) -> MaliciousGetResponse` **get** `/radar/email/security/top/tlds/malicious/{malicious}` Retrieves the top TLDs by emails classified as malicious or not. ### Parameters - `malicious: Literal["MALICIOUS", "NOT_MALICIOUS"]` Malicious classification. - `"MALICIOUS"` - `"NOT_MALICIOUS"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `limit: Optional[int]` Limits the number of objects returned in the response. - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tld_category: Optional[Literal["CLASSIC", "COUNTRY"]]` Filters results by TLD category. - `"CLASSIC"` - `"COUNTRY"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class MaliciousGetResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: Optional[MetaConfidenceInfo]` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `top_0: List[Top0]` - `name: str` - `value: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) malicious = client.radar.email.security.top.tlds.malicious.get( malicious="MALICIOUS", ) print(malicious.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "top_0": [ { "name": "com.", "value": "10" } ] }, "success": true } ``` ## Domain Types ### Malicious Get Response - `class MaliciousGetResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: Optional[MetaConfidenceInfo]` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `top_0: List[Top0]` - `name: str` - `value: str` A numeric string. # Spam ## Get top TLDs by email spam classification `radar.email.security.top.tlds.spam.get(Literal["SPAM", "NOT_SPAM"]spam, SpamGetParams**kwargs) -> SpamGetResponse` **get** `/radar/email/security/top/tlds/spam/{spam}` Retrieves the top TLDs by emails classified as spam or not. ### Parameters - `spam: Literal["SPAM", "NOT_SPAM"]` Spam classification. - `"SPAM"` - `"NOT_SPAM"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `limit: Optional[int]` Limits the number of objects returned in the response. - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tld_category: Optional[Literal["CLASSIC", "COUNTRY"]]` Filters results by TLD category. - `"CLASSIC"` - `"COUNTRY"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class SpamGetResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: Optional[MetaConfidenceInfo]` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `top_0: List[Top0]` - `name: str` - `value: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) spam = client.radar.email.security.top.tlds.spam.get( spam="SPAM", ) print(spam.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "top_0": [ { "name": "com.", "value": "10" } ] }, "success": true } ``` ## Domain Types ### Spam Get Response - `class SpamGetResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: Optional[MetaConfidenceInfo]` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `top_0: List[Top0]` - `name: str` - `value: str` A numeric string. # Spoof ## Get top TLDs by email spoof classification `radar.email.security.top.tlds.spoof.get(Literal["SPOOF", "NOT_SPOOF"]spoof, SpoofGetParams**kwargs) -> SpoofGetResponse` **get** `/radar/email/security/top/tlds/spoof/{spoof}` Retrieves the top TLDs by emails classified as spoof or not. ### Parameters - `spoof: Literal["SPOOF", "NOT_SPOOF"]` Spoof classification. - `"SPOOF"` - `"NOT_SPOOF"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `limit: Optional[int]` Limits the number of objects returned in the response. - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tld_category: Optional[Literal["CLASSIC", "COUNTRY"]]` Filters results by TLD category. - `"CLASSIC"` - `"COUNTRY"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class SpoofGetResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: Optional[MetaConfidenceInfo]` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `top_0: List[Top0]` - `name: str` - `value: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) spoof = client.radar.email.security.top.tlds.spoof.get( spoof="SPOOF", ) print(spoof.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "top_0": [ { "name": "com.", "value": "10" } ] }, "success": true } ``` ## Domain Types ### Spoof Get Response - `class SpoofGetResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: Optional[MetaConfidenceInfo]` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `top_0: List[Top0]` - `name: str` - `value: str` A numeric string. # Summary ## Get email ARC validation summary `radar.email.security.summary.arc(SummaryARCParams**kwargs) -> SummaryARCResponse` **get** `/radar/email/security/summary/arc` Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation. ### Parameters - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class SummaryARCResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.summary.arc() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "FAIL": "10", "NONE": "10", "PASS": "10" } }, "success": true } ``` ## Get email DKIM validation summary `radar.email.security.summary.dkim(SummaryDKIMParams**kwargs) -> SummaryDKIMResponse` **get** `/radar/email/security/summary/dkim` Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation. ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class SummaryDKIMResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.summary.dkim() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "FAIL": "10", "NONE": "10", "PASS": "10" } }, "success": true } ``` ## Get email DMARC validation summary `radar.email.security.summary.dmarc(SummaryDMARCParams**kwargs) -> SummaryDMARCResponse` **get** `/radar/email/security/summary/dmarc` Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation. ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class SummaryDMARCResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.summary.dmarc() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "FAIL": "10", "NONE": "10", "PASS": "10" } }, "success": true } ``` ## Get email malicious classification summary `radar.email.security.summary.malicious(SummaryMaliciousParams**kwargs) -> SummaryMaliciousResponse` **get** `/radar/email/security/summary/malicious` Retrieves the distribution of emails by malicious classification. ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class SummaryMaliciousResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `malicious: str` A numeric string. - `not_malicious: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.summary.malicious() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "MALICIOUS": "10", "NOT_MALICIOUS": "10" } }, "success": true } ``` ## Get email spam classification summary `radar.email.security.summary.spam(SummarySpamParams**kwargs) -> SummarySpamResponse` **get** `/radar/email/security/summary/spam` Retrieves the proportion of emails by spam classification (spam vs. non-spam). ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class SummarySpamResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `not_spam: str` A numeric string. - `spam: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.summary.spam() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "NOT_SPAM": "10", "SPAM": "10" } }, "success": true } ``` ## Get email SPF validation summary `radar.email.security.summary.spf(SummarySPFParams**kwargs) -> SummarySPFResponse` **get** `/radar/email/security/summary/spf` Retrieves the distribution of emails by SPF (Sender Policy Framework) validation. ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class SummarySPFResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.summary.spf() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "FAIL": "10", "NONE": "10", "PASS": "10" } }, "success": true } ``` ## Get email threat category summary `radar.email.security.summary.threat_category(SummaryThreatCategoryParams**kwargs) -> SummaryThreatCategoryResponse` **get** `/radar/email/security/summary/threat_category` Retrieves the distribution of emails by threat categories. ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class SummaryThreatCategoryResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `brand_impersonation: str` A numeric string. - `credential_harvester: str` A numeric string. - `identity_deception: str` A numeric string. - `link: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.summary.threat_category() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "BrandImpersonation": "10", "CredentialHarvester": "10", "IdentityDeception": "10", "Link": "10" } }, "success": true } ``` ## Get email spoof classification summary `radar.email.security.summary.spoof(SummarySpoofParams**kwargs) -> SummarySpoofResponse` **get** `/radar/email/security/summary/spoof` Retrieves the proportion of emails by spoof classification (spoof vs. non-spoof). ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class SummarySpoofResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `not_spoof: str` A numeric string. - `spoof: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.summary.spoof() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "NOT_SPOOF": "10", "SPOOF": "10" } }, "success": true } ``` ## Get email TLS version summary `radar.email.security.summary.tls_version(SummaryTLSVersionParams**kwargs) -> SummaryTLSVersionResponse` **get** `/radar/email/security/summary/tls_version` Retrieves the distribution of emails by TLS version. ### Parameters - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class SummaryTLSVersionResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `tls_1_0: str` A numeric string. - `tls_1_1: str` A numeric string. - `tls_1_2: str` A numeric string. - `tls_1_3: str` A numeric string. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.summary.tls_version() print(response.meta) ``` #### Response ```json { "result": { "meta": { "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "summary_0": { "TLS 1.0": "10", "TLS 1.1": "10", "TLS 1.2": "10", "TLS 1.3": "10" } }, "success": true } ``` ## Domain Types ### Summary ARC Response - `class SummaryARCResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Summary DKIM Response - `class SummaryDKIMResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Summary DMARC Response - `class SummaryDMARCResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Summary Malicious Response - `class SummaryMaliciousResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `malicious: str` A numeric string. - `not_malicious: str` A numeric string. ### Summary Spam Response - `class SummarySpamResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `not_spam: str` A numeric string. - `spam: str` A numeric string. ### Summary SPF Response - `class SummarySPFResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: RadarEmailSummary` - `fail: str` A numeric string. - `none: str` A numeric string. - `pass_: str` A numeric string. ### Summary Threat Category Response - `class SummaryThreatCategoryResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `brand_impersonation: str` A numeric string. - `credential_harvester: str` A numeric string. - `identity_deception: str` A numeric string. - `link: str` A numeric string. ### Summary Spoof Response - `class SummarySpoofResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `not_spoof: str` A numeric string. - `spoof: str` A numeric string. ### Summary TLS Version Response - `class SummaryTLSVersionResponse: …` - `meta: Meta` Metadata for the results. - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `summary_0: Summary0` - `tls_1_0: str` A numeric string. - `tls_1_1: str` A numeric string. - `tls_1_2: str` A numeric string. - `tls_1_3: str` A numeric string. # Timeseries Groups ## Get email ARC validation time series `radar.email.security.timeseries_groups.arc(TimeseriesGroupARCParams**kwargs) -> TimeseriesGroupARCResponse` **get** `/radar/email/security/timeseries_groups/arc` Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class TimeseriesGroupARCResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.timeseries_groups.arc() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "FAIL": [ "10" ], "NONE": [ "10" ], "PASS": [ "10" ] } }, "success": true } ``` ## Get email DKIM validation time series `radar.email.security.timeseries_groups.dkim(TimeseriesGroupDKIMParams**kwargs) -> TimeseriesGroupDKIMResponse` **get** `/radar/email/security/timeseries_groups/dkim` Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class TimeseriesGroupDKIMResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.timeseries_groups.dkim() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "FAIL": [ "10" ], "NONE": [ "10" ], "PASS": [ "10" ] } }, "success": true } ``` ## Get email DMARC validation time series `radar.email.security.timeseries_groups.dmarc(TimeseriesGroupDMARCParams**kwargs) -> TimeseriesGroupDMARCResponse` **get** `/radar/email/security/timeseries_groups/dmarc` Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class TimeseriesGroupDMARCResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.timeseries_groups.dmarc() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "FAIL": [ "10" ], "NONE": [ "10" ], "PASS": [ "10" ] } }, "success": true } ``` ## Get email malicious classification time series `radar.email.security.timeseries_groups.malicious(TimeseriesGroupMaliciousParams**kwargs) -> TimeseriesGroupMaliciousResponse` **get** `/radar/email/security/timeseries_groups/malicious` Retrieves the distribution of emails by malicious classification over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class TimeseriesGroupMaliciousResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `malicious: List[str]` - `not_malicious: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.timeseries_groups.malicious() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "MALICIOUS": [ "10" ], "NOT_MALICIOUS": [ "10" ] } }, "success": true } ``` ## Get email spam classification time series `radar.email.security.timeseries_groups.spam(TimeseriesGroupSpamParams**kwargs) -> TimeseriesGroupSpamResponse` **get** `/radar/email/security/timeseries_groups/spam` Retrieves the distribution of emails by spam classification (spam vs. non-spam) over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class TimeseriesGroupSpamResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `not_spam: List[str]` - `spam: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.timeseries_groups.spam() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "NOT_SPAM": [ "10" ], "SPAM": [ "10" ] } }, "success": true } ``` ## Get email SPF validation time series `radar.email.security.timeseries_groups.spf(TimeseriesGroupSPFParams**kwargs) -> TimeseriesGroupSPFResponse` **get** `/radar/email/security/timeseries_groups/spf` Retrieves the distribution of emails by SPF (Sender Policy Framework) validation over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class TimeseriesGroupSPFResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.timeseries_groups.spf() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "FAIL": [ "10" ], "NONE": [ "10" ], "PASS": [ "10" ] } }, "success": true } ``` ## Get email threat category time series `radar.email.security.timeseries_groups.threat_category(TimeseriesGroupThreatCategoryParams**kwargs) -> TimeseriesGroupThreatCategoryResponse` **get** `/radar/email/security/timeseries_groups/threat_category` Retrieves the distribution of emails by threat category over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class TimeseriesGroupThreatCategoryResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `brand_impersonation: List[str]` - `credential_harvester: List[str]` - `identity_deception: List[str]` - `link: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.timeseries_groups.threat_category() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "BrandImpersonation": [ "10" ], "CredentialHarvester": [ "10" ], "IdentityDeception": [ "10" ], "Link": [ "10" ] } }, "success": true } ``` ## Get email spoof classification time series `radar.email.security.timeseries_groups.spoof(TimeseriesGroupSpoofParams**kwargs) -> TimeseriesGroupSpoofResponse` **get** `/radar/email/security/timeseries_groups/spoof` Retrieves the distribution of emails by spoof classification (spoof vs. non-spoof) over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `tls_version: Optional[List[Literal["TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3"]]]` Filters results by TLS version. - `"TLSv1_0"` - `"TLSv1_1"` - `"TLSv1_2"` - `"TLSv1_3"` ### Returns - `class TimeseriesGroupSpoofResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `not_spoof: List[str]` - `spoof: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.timeseries_groups.spoof() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "NOT_SPOOF": [ "10" ], "SPOOF": [ "10" ] } }, "success": true } ``` ## Get email TLS version time series `radar.email.security.timeseries_groups.tls_version(TimeseriesGroupTLSVersionParams**kwargs) -> TimeseriesGroupTLSVersionResponse` **get** `/radar/email/security/timeseries_groups/tls_version` Retrieves the distribution of emails by TLS version over time. ### Parameters - `agg_interval: Optional[Literal["15m", "1h", "1d", "1w"]]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). When omitted, the interval is auto-selected from the requested date range; finer intervals are only available for shorter ranges. If the requested interval is too granular for the date range, the request is rejected. - `"15m"` - `"1h"` - `"1d"` - `"1w"` - `arc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by ARC (Authenticated Received Chain) validation. - `"PASS"` - `"NONE"` - `"FAIL"` - `date_end: Optional[Sequence[Union[str, datetime]]]` End of the date range (inclusive). Alternative to `dateRange`; provide together with `dateStart`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `date_range: Optional[Sequence[str]]` Filters results by relative date range ending at the current time, with each value producing a separate series. Use `d` for days (up to `364d`) or `w` for weeks (up to `52w`). Append `control` to request the equivalent previous period for comparison: the comparison window is shifted back by the current window's length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. `7dcontrol` covers days -14 to -7, `10dcontrol` covers days -24 to -14). For example, pass `7d` and `7dcontrol` to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including `control`) satisfy this automatically. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters). - `date_start: Optional[Sequence[Union[str, datetime]]]` Start of the date range. Alternative to `dateRange`; provide together with `dateEnd`. When requesting comparison series, every series must resolve to the same duration as the main series. Each `dateStart`/`dateEnd` is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected. - `dkim: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `dmarc: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` - `format: Optional[Literal["JSON", "CSV"]]` Format in which results will be returned. - `"JSON"` - `"CSV"` - `name: Optional[Sequence[str]]` Array of names used to label the series in the response. - `spf: Optional[List[Literal["PASS", "NONE", "FAIL"]]]` Filters results by SPF (Sender Policy Framework) validation status. - `"PASS"` - `"NONE"` - `"FAIL"` ### Returns - `class TimeseriesGroupTLSVersionResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `tls_1_0: List[str]` - `tls_1_1: List[str]` - `tls_1_2: List[str]` - `tls_1_3: List[str]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) response = client.radar.email.security.timeseries_groups.tls_version() print(response.meta) ``` #### Response ```json { "result": { "meta": { "aggInterval": "FIFTEEN_MINUTES", "confidenceInfo": { "annotations": [ { "dataSource": "ALL", "description": "Cable cut in Tonga", "endDate": "2019-12-27T18:11:19.117Z", "eventType": "EVENT", "isInstantaneous": true, "linkedUrl": "https://example.com", "startDate": "2019-12-27T18:11:19.117Z", "tags": [ "BOT_CLASS" ] } ], "level": 0 }, "dateRange": [ { "endTime": "2022-09-17T10:22:57.555Z", "startTime": "2022-09-16T10:22:57.555Z" } ], "lastUpdated": "2019-12-27T18:11:19.117Z", "normalization": "PERCENTAGE", "units": [ { "name": "*", "value": "requests" } ] }, "serie_0": { "TLS 1.0": [ "10" ], "TLS 1.1": [ "10" ], "TLS 1.2": [ "10" ], "TLS 1.3": [ "10" ] } }, "success": true } ``` ## Domain Types ### Timeseries Group ARC Response - `class TimeseriesGroupARCResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Timeseries Group DKIM Response - `class TimeseriesGroupDKIMResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Timeseries Group DMARC Response - `class TimeseriesGroupDMARCResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Timeseries Group Malicious Response - `class TimeseriesGroupMaliciousResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `malicious: List[str]` - `not_malicious: List[str]` ### Timeseries Group Spam Response - `class TimeseriesGroupSpamResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `not_spam: List[str]` - `spam: List[str]` ### Timeseries Group SPF Response - `class TimeseriesGroupSPFResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: RadarEmailSeries` - `fail: List[str]` - `none: List[str]` - `pass_: List[str]` ### Timeseries Group Threat Category Response - `class TimeseriesGroupThreatCategoryResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `brand_impersonation: List[str]` - `credential_harvester: List[str]` - `identity_deception: List[str]` - `link: List[str]` ### Timeseries Group Spoof Response - `class TimeseriesGroupSpoofResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `not_spoof: List[str]` - `spoof: List[str]` ### Timeseries Group TLS Version Response - `class TimeseriesGroupTLSVersionResponse: …` - `meta: Meta` Metadata for the results. - `agg_interval: Literal["FIFTEEN_MINUTES", "ONE_HOUR", "ONE_DAY", 2 more]` Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://edgetunnel-b2h.pages.dev/radar/concepts/aggregation-intervals/). - `"FIFTEEN_MINUTES"` - `"ONE_HOUR"` - `"ONE_DAY"` - `"ONE_WEEK"` - `"ONE_MONTH"` - `confidence_info: MetaConfidenceInfo` - `annotations: List[MetaConfidenceInfoAnnotation]` - `data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]` Data source for annotations. - `"ALL"` - `"AI_BOTS"` - `"AI_GATEWAY"` - `"BGP"` - `"BOTS"` - `"CONNECTION_ANOMALY"` - `"CT"` - `"DNS"` - `"DNS_MAGNITUDE"` - `"DNS_AS112"` - `"DOS"` - `"EMAIL_ROUTING"` - `"EMAIL_SECURITY"` - `"FW"` - `"FW_PG"` - `"HTTP"` - `"HTTP_CONTROL"` - `"HTTP_CRAWLER_REFERER"` - `"HTTP_ORIGINS"` - `"IQI"` - `"LEAKED_CREDENTIALS"` - `"NET"` - `"ROBOTS_TXT"` - `"SPEED"` - `"WORKERS_AI"` - `description: str` - `end_date: datetime` - `event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]` Event type for annotations. - `"EVENT"` - `"GENERAL"` - `"OUTAGE"` - `"PARTIAL_PROJECTION"` - `"PIPELINE"` - `"TRAFFIC_ANOMALY"` - `is_instantaneous: bool` Whether event is a single point in time or a time range. - `linked_url: str` - `start_date: datetime` - `tags: Optional[List[str]]` - `level: int` Provides an indication of how much confidence Cloudflare has in the data. - `date_range: List[MetaDateRange]` - `end_time: datetime` Adjusted end of date range. - `start_time: datetime` Adjusted start of date range. - `last_updated: datetime` Timestamp of the last dataset update. - `normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `"PERCENTAGE"` - `"MIN0_MAX"` - `"MIN_MAX"` - `"RAW_VALUES"` - `"PERCENTAGE_CHANGE"` - `"ROLLING_AVERAGE"` - `"OVERLAPPED_PERCENTAGE"` - `"RATIO"` - `units: List[MetaUnit]` Measurement units for the results. - `name: str` - `value: str` - `serie_0: Serie0` - `tls_1_0: List[str]` - `tls_1_1: List[str]` - `tls_1_2: List[str]` - `tls_1_3: List[str]`