# Email ## Domain Types ### Radar Email Series - `type RadarEmailSeries struct{…}` - `Fail []string` - `None []string` - `Pass []string` ### Radar Email Summary - `type RadarEmailSummary struct{…}` - `Fail string` A numeric string. - `None string` A numeric string. - `Pass string` A numeric string. # Routing ## Get email routing summary by dimension `client.Radar.Email.Routing.SummaryV2(ctx, dimension, query) (*EmailRoutingSummaryV2Response, error)` **get** `/radar/email/routing/summary/{dimension}` Retrieves the distribution of email routing metrics by the specified dimension. ### Parameters - `dimension EmailRoutingSummaryV2ParamsDimension` Specifies the attribute by which to group the results. - `const EmailRoutingSummaryV2ParamsDimensionIPVersion EmailRoutingSummaryV2ParamsDimension = "IP_VERSION"` - `const EmailRoutingSummaryV2ParamsDimensionEncrypted EmailRoutingSummaryV2ParamsDimension = "ENCRYPTED"` - `const EmailRoutingSummaryV2ParamsDimensionARC EmailRoutingSummaryV2ParamsDimension = "ARC"` - `const EmailRoutingSummaryV2ParamsDimensionDKIM EmailRoutingSummaryV2ParamsDimension = "DKIM"` - `const EmailRoutingSummaryV2ParamsDimensionDMARC EmailRoutingSummaryV2ParamsDimension = "DMARC"` - `const EmailRoutingSummaryV2ParamsDimensionSPF EmailRoutingSummaryV2ParamsDimension = "SPF"` - `query EmailRoutingSummaryV2Params` - `ARC param.Field[[]EmailRoutingSummaryV2ParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailRoutingSummaryV2ParamsARCPass EmailRoutingSummaryV2ParamsARC = "PASS"` - `const EmailRoutingSummaryV2ParamsARCNone EmailRoutingSummaryV2ParamsARC = "NONE"` - `const EmailRoutingSummaryV2ParamsARCFail EmailRoutingSummaryV2ParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingSummaryV2ParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailRoutingSummaryV2ParamsDKIMPass EmailRoutingSummaryV2ParamsDKIM = "PASS"` - `const EmailRoutingSummaryV2ParamsDKIMNone EmailRoutingSummaryV2ParamsDKIM = "NONE"` - `const EmailRoutingSummaryV2ParamsDKIMFail EmailRoutingSummaryV2ParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailRoutingSummaryV2ParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailRoutingSummaryV2ParamsDMARCPass EmailRoutingSummaryV2ParamsDMARC = "PASS"` - `const EmailRoutingSummaryV2ParamsDMARCNone EmailRoutingSummaryV2ParamsDMARC = "NONE"` - `const EmailRoutingSummaryV2ParamsDMARCFail EmailRoutingSummaryV2ParamsDMARC = "FAIL"` - `Encrypted param.Field[[]EmailRoutingSummaryV2ParamsEncrypted]` Filters results by encryption status (encrypted vs. not-encrypted). - `const EmailRoutingSummaryV2ParamsEncryptedEncrypted EmailRoutingSummaryV2ParamsEncrypted = "ENCRYPTED"` - `const EmailRoutingSummaryV2ParamsEncryptedNotEncrypted EmailRoutingSummaryV2ParamsEncrypted = "NOT_ENCRYPTED"` - `Format param.Field[EmailRoutingSummaryV2ParamsFormat]` Format in which results will be returned. - `const EmailRoutingSummaryV2ParamsFormatJson EmailRoutingSummaryV2ParamsFormat = "JSON"` - `const EmailRoutingSummaryV2ParamsFormatCsv EmailRoutingSummaryV2ParamsFormat = "CSV"` - `IPVersion param.Field[[]EmailRoutingSummaryV2ParamsIPVersion]` Filters results by IP version (Ipv4 vs. IPv6). - `const EmailRoutingSummaryV2ParamsIPVersionIPv4 EmailRoutingSummaryV2ParamsIPVersion = "IPv4"` - `const EmailRoutingSummaryV2ParamsIPVersionIPv6 EmailRoutingSummaryV2ParamsIPVersion = "IPv6"` - `LimitPerGroup param.Field[int64]` 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 param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailRoutingSummaryV2ParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailRoutingSummaryV2ParamsSPFPass EmailRoutingSummaryV2ParamsSPF = "PASS"` - `const EmailRoutingSummaryV2ParamsSPFNone EmailRoutingSummaryV2ParamsSPF = "NONE"` - `const EmailRoutingSummaryV2ParamsSPFFail EmailRoutingSummaryV2ParamsSPF = "FAIL"` ### Returns - `type EmailRoutingSummaryV2Response struct{…}` - `Meta EmailRoutingSummaryV2ResponseMeta` Metadata for the results. - `ConfidenceInfo EmailRoutingSummaryV2ResponseMetaConfidenceInfo` - `Annotations []EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingSummaryV2ResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingSummaryV2ResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingSummaryV2ResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingSummaryV2ResponseMetaNormalizationPercentage EmailRoutingSummaryV2ResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingSummaryV2ResponseMetaNormalizationMin0Max EmailRoutingSummaryV2ResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingSummaryV2ResponseMetaNormalizationMinMax EmailRoutingSummaryV2ResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingSummaryV2ResponseMetaNormalizationRawValues EmailRoutingSummaryV2ResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingSummaryV2ResponseMetaNormalizationPercentageChange EmailRoutingSummaryV2ResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingSummaryV2ResponseMetaNormalizationRollingAverage EmailRoutingSummaryV2ResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingSummaryV2ResponseMetaNormalizationOverlappedPercentage EmailRoutingSummaryV2ResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingSummaryV2ResponseMetaNormalizationRatio EmailRoutingSummaryV2ResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingSummaryV2ResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 map[string, string]` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.SummaryV2( context.TODO(), radar.EmailRoutingSummaryV2ParamsDimensionIPVersion, radar.EmailRoutingSummaryV2Params{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Routing.TimeseriesGroupsV2(ctx, dimension, query) (*EmailRoutingTimeseriesGroupsV2Response, error)` **get** `/radar/email/routing/timeseries_groups/{dimension}` Retrieves the distribution of email routing metrics grouped by dimension over time. ### Parameters - `dimension EmailRoutingTimeseriesGroupsV2ParamsDimension` Specifies the attribute by which to group the results. - `const EmailRoutingTimeseriesGroupsV2ParamsDimensionIPVersion EmailRoutingTimeseriesGroupsV2ParamsDimension = "IP_VERSION"` - `const EmailRoutingTimeseriesGroupsV2ParamsDimensionEncrypted EmailRoutingTimeseriesGroupsV2ParamsDimension = "ENCRYPTED"` - `const EmailRoutingTimeseriesGroupsV2ParamsDimensionARC EmailRoutingTimeseriesGroupsV2ParamsDimension = "ARC"` - `const EmailRoutingTimeseriesGroupsV2ParamsDimensionDKIM EmailRoutingTimeseriesGroupsV2ParamsDimension = "DKIM"` - `const EmailRoutingTimeseriesGroupsV2ParamsDimensionDMARC EmailRoutingTimeseriesGroupsV2ParamsDimension = "DMARC"` - `const EmailRoutingTimeseriesGroupsV2ParamsDimensionSPF EmailRoutingTimeseriesGroupsV2ParamsDimension = "SPF"` - `query EmailRoutingTimeseriesGroupsV2Params` - `AggInterval param.Field[EmailRoutingTimeseriesGroupsV2ParamsAggInterval]` 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. - `const EmailRoutingTimeseriesGroupsV2ParamsAggInterval15m EmailRoutingTimeseriesGroupsV2ParamsAggInterval = "15m"` - `const EmailRoutingTimeseriesGroupsV2ParamsAggInterval1h EmailRoutingTimeseriesGroupsV2ParamsAggInterval = "1h"` - `const EmailRoutingTimeseriesGroupsV2ParamsAggInterval1d EmailRoutingTimeseriesGroupsV2ParamsAggInterval = "1d"` - `const EmailRoutingTimeseriesGroupsV2ParamsAggInterval1w EmailRoutingTimeseriesGroupsV2ParamsAggInterval = "1w"` - `ARC param.Field[[]EmailRoutingTimeseriesGroupsV2ParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailRoutingTimeseriesGroupsV2ParamsARCPass EmailRoutingTimeseriesGroupsV2ParamsARC = "PASS"` - `const EmailRoutingTimeseriesGroupsV2ParamsARCNone EmailRoutingTimeseriesGroupsV2ParamsARC = "NONE"` - `const EmailRoutingTimeseriesGroupsV2ParamsARCFail EmailRoutingTimeseriesGroupsV2ParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingTimeseriesGroupsV2ParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailRoutingTimeseriesGroupsV2ParamsDKIMPass EmailRoutingTimeseriesGroupsV2ParamsDKIM = "PASS"` - `const EmailRoutingTimeseriesGroupsV2ParamsDKIMNone EmailRoutingTimeseriesGroupsV2ParamsDKIM = "NONE"` - `const EmailRoutingTimeseriesGroupsV2ParamsDKIMFail EmailRoutingTimeseriesGroupsV2ParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailRoutingTimeseriesGroupsV2ParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailRoutingTimeseriesGroupsV2ParamsDMARCPass EmailRoutingTimeseriesGroupsV2ParamsDMARC = "PASS"` - `const EmailRoutingTimeseriesGroupsV2ParamsDMARCNone EmailRoutingTimeseriesGroupsV2ParamsDMARC = "NONE"` - `const EmailRoutingTimeseriesGroupsV2ParamsDMARCFail EmailRoutingTimeseriesGroupsV2ParamsDMARC = "FAIL"` - `Encrypted param.Field[[]EmailRoutingTimeseriesGroupsV2ParamsEncrypted]` Filters results by encryption status (encrypted vs. not-encrypted). - `const EmailRoutingTimeseriesGroupsV2ParamsEncryptedEncrypted EmailRoutingTimeseriesGroupsV2ParamsEncrypted = "ENCRYPTED"` - `const EmailRoutingTimeseriesGroupsV2ParamsEncryptedNotEncrypted EmailRoutingTimeseriesGroupsV2ParamsEncrypted = "NOT_ENCRYPTED"` - `Format param.Field[EmailRoutingTimeseriesGroupsV2ParamsFormat]` Format in which results will be returned. - `const EmailRoutingTimeseriesGroupsV2ParamsFormatJson EmailRoutingTimeseriesGroupsV2ParamsFormat = "JSON"` - `const EmailRoutingTimeseriesGroupsV2ParamsFormatCsv EmailRoutingTimeseriesGroupsV2ParamsFormat = "CSV"` - `IPVersion param.Field[[]EmailRoutingTimeseriesGroupsV2ParamsIPVersion]` Filters results by IP version (Ipv4 vs. IPv6). - `const EmailRoutingTimeseriesGroupsV2ParamsIPVersionIPv4 EmailRoutingTimeseriesGroupsV2ParamsIPVersion = "IPv4"` - `const EmailRoutingTimeseriesGroupsV2ParamsIPVersionIPv6 EmailRoutingTimeseriesGroupsV2ParamsIPVersion = "IPv6"` - `LimitPerGroup param.Field[int64]` 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 param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailRoutingTimeseriesGroupsV2ParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailRoutingTimeseriesGroupsV2ParamsSPFPass EmailRoutingTimeseriesGroupsV2ParamsSPF = "PASS"` - `const EmailRoutingTimeseriesGroupsV2ParamsSPFNone EmailRoutingTimeseriesGroupsV2ParamsSPF = "NONE"` - `const EmailRoutingTimeseriesGroupsV2ParamsSPFFail EmailRoutingTimeseriesGroupsV2ParamsSPF = "FAIL"` ### Returns - `type EmailRoutingTimeseriesGroupsV2Response struct{…}` - `Meta EmailRoutingTimeseriesGroupsV2ResponseMeta` Metadata for the results. - `AggInterval EmailRoutingTimeseriesGroupsV2ResponseMetaAggInterval` 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/). - `const EmailRoutingTimeseriesGroupsV2ResponseMetaAggIntervalFifteenMinutes EmailRoutingTimeseriesGroupsV2ResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaAggIntervalOneHour EmailRoutingTimeseriesGroupsV2ResponseMetaAggInterval = "ONE_HOUR"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaAggIntervalOneDay EmailRoutingTimeseriesGroupsV2ResponseMetaAggInterval = "ONE_DAY"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaAggIntervalOneWeek EmailRoutingTimeseriesGroupsV2ResponseMetaAggInterval = "ONE_WEEK"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaAggIntervalOneMonth EmailRoutingTimeseriesGroupsV2ResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfo` - `Annotations []EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingTimeseriesGroupsV2ResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingTimeseriesGroupsV2ResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingTimeseriesGroupsV2ResponseMetaNormalizationPercentage EmailRoutingTimeseriesGroupsV2ResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaNormalizationMin0Max EmailRoutingTimeseriesGroupsV2ResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaNormalizationMinMax EmailRoutingTimeseriesGroupsV2ResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaNormalizationRawValues EmailRoutingTimeseriesGroupsV2ResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaNormalizationPercentageChange EmailRoutingTimeseriesGroupsV2ResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaNormalizationRollingAverage EmailRoutingTimeseriesGroupsV2ResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaNormalizationOverlappedPercentage EmailRoutingTimeseriesGroupsV2ResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingTimeseriesGroupsV2ResponseMetaNormalizationRatio EmailRoutingTimeseriesGroupsV2ResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingTimeseriesGroupsV2ResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 EmailRoutingTimeseriesGroupsV2ResponseSerie0` - `Timestamps []Time` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.TimeseriesGroupsV2( context.TODO(), radar.EmailRoutingTimeseriesGroupsV2ParamsDimensionIPVersion, radar.EmailRoutingTimeseriesGroupsV2Params{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 } ``` # Summary ## Get email ARC validation summary `client.Radar.Email.Routing.Summary.ARC(ctx, query) (*EmailRoutingSummaryARCResponse, error)` **get** `/radar/email/routing/summary/arc` Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation. ### Parameters - `query EmailRoutingSummaryARCParams` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingSummaryARCParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailRoutingSummaryARCParamsDKIMPass EmailRoutingSummaryARCParamsDKIM = "PASS"` - `const EmailRoutingSummaryARCParamsDKIMNone EmailRoutingSummaryARCParamsDKIM = "NONE"` - `const EmailRoutingSummaryARCParamsDKIMFail EmailRoutingSummaryARCParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailRoutingSummaryARCParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailRoutingSummaryARCParamsDMARCPass EmailRoutingSummaryARCParamsDMARC = "PASS"` - `const EmailRoutingSummaryARCParamsDMARCNone EmailRoutingSummaryARCParamsDMARC = "NONE"` - `const EmailRoutingSummaryARCParamsDMARCFail EmailRoutingSummaryARCParamsDMARC = "FAIL"` - `Encrypted param.Field[[]EmailRoutingSummaryARCParamsEncrypted]` Filters results by encryption status (encrypted vs. not-encrypted). - `const EmailRoutingSummaryARCParamsEncryptedEncrypted EmailRoutingSummaryARCParamsEncrypted = "ENCRYPTED"` - `const EmailRoutingSummaryARCParamsEncryptedNotEncrypted EmailRoutingSummaryARCParamsEncrypted = "NOT_ENCRYPTED"` - `Format param.Field[EmailRoutingSummaryARCParamsFormat]` Format in which results will be returned. - `const EmailRoutingSummaryARCParamsFormatJson EmailRoutingSummaryARCParamsFormat = "JSON"` - `const EmailRoutingSummaryARCParamsFormatCsv EmailRoutingSummaryARCParamsFormat = "CSV"` - `IPVersion param.Field[[]EmailRoutingSummaryARCParamsIPVersion]` Filters results by IP version (Ipv4 vs. IPv6). - `const EmailRoutingSummaryARCParamsIPVersionIPv4 EmailRoutingSummaryARCParamsIPVersion = "IPv4"` - `const EmailRoutingSummaryARCParamsIPVersionIPv6 EmailRoutingSummaryARCParamsIPVersion = "IPv6"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailRoutingSummaryARCParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailRoutingSummaryARCParamsSPFPass EmailRoutingSummaryARCParamsSPF = "PASS"` - `const EmailRoutingSummaryARCParamsSPFNone EmailRoutingSummaryARCParamsSPF = "NONE"` - `const EmailRoutingSummaryARCParamsSPFFail EmailRoutingSummaryARCParamsSPF = "FAIL"` ### Returns - `type EmailRoutingSummaryARCResponse struct{…}` - `Meta EmailRoutingSummaryARCResponseMeta` Metadata for the results. - `ConfidenceInfo EmailRoutingSummaryARCResponseMetaConfidenceInfo` - `Annotations []EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingSummaryARCResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingSummaryARCResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingSummaryARCResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingSummaryARCResponseMetaNormalizationPercentage EmailRoutingSummaryARCResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingSummaryARCResponseMetaNormalizationMin0Max EmailRoutingSummaryARCResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingSummaryARCResponseMetaNormalizationMinMax EmailRoutingSummaryARCResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingSummaryARCResponseMetaNormalizationRawValues EmailRoutingSummaryARCResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingSummaryARCResponseMetaNormalizationPercentageChange EmailRoutingSummaryARCResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingSummaryARCResponseMetaNormalizationRollingAverage EmailRoutingSummaryARCResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingSummaryARCResponseMetaNormalizationOverlappedPercentage EmailRoutingSummaryARCResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingSummaryARCResponseMetaNormalizationRatio EmailRoutingSummaryARCResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingSummaryARCResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 RadarEmailSummary` - `Fail string` A numeric string. - `None string` A numeric string. - `Pass string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.Summary.ARC(context.TODO(), radar.EmailRoutingSummaryARCParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Routing.Summary.DKIM(ctx, query) (*EmailRoutingSummaryDKIMResponse, error)` **get** `/radar/email/routing/summary/dkim` Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation. ### Parameters - `query EmailRoutingSummaryDKIMParams` - `ARC param.Field[[]EmailRoutingSummaryDKIMParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailRoutingSummaryDKIMParamsARCPass EmailRoutingSummaryDKIMParamsARC = "PASS"` - `const EmailRoutingSummaryDKIMParamsARCNone EmailRoutingSummaryDKIMParamsARC = "NONE"` - `const EmailRoutingSummaryDKIMParamsARCFail EmailRoutingSummaryDKIMParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingSummaryDKIMParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailRoutingSummaryDKIMParamsDMARCPass EmailRoutingSummaryDKIMParamsDMARC = "PASS"` - `const EmailRoutingSummaryDKIMParamsDMARCNone EmailRoutingSummaryDKIMParamsDMARC = "NONE"` - `const EmailRoutingSummaryDKIMParamsDMARCFail EmailRoutingSummaryDKIMParamsDMARC = "FAIL"` - `Encrypted param.Field[[]EmailRoutingSummaryDKIMParamsEncrypted]` Filters results by encryption status (encrypted vs. not-encrypted). - `const EmailRoutingSummaryDKIMParamsEncryptedEncrypted EmailRoutingSummaryDKIMParamsEncrypted = "ENCRYPTED"` - `const EmailRoutingSummaryDKIMParamsEncryptedNotEncrypted EmailRoutingSummaryDKIMParamsEncrypted = "NOT_ENCRYPTED"` - `Format param.Field[EmailRoutingSummaryDKIMParamsFormat]` Format in which results will be returned. - `const EmailRoutingSummaryDKIMParamsFormatJson EmailRoutingSummaryDKIMParamsFormat = "JSON"` - `const EmailRoutingSummaryDKIMParamsFormatCsv EmailRoutingSummaryDKIMParamsFormat = "CSV"` - `IPVersion param.Field[[]EmailRoutingSummaryDKIMParamsIPVersion]` Filters results by IP version (Ipv4 vs. IPv6). - `const EmailRoutingSummaryDKIMParamsIPVersionIPv4 EmailRoutingSummaryDKIMParamsIPVersion = "IPv4"` - `const EmailRoutingSummaryDKIMParamsIPVersionIPv6 EmailRoutingSummaryDKIMParamsIPVersion = "IPv6"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailRoutingSummaryDKIMParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailRoutingSummaryDKIMParamsSPFPass EmailRoutingSummaryDKIMParamsSPF = "PASS"` - `const EmailRoutingSummaryDKIMParamsSPFNone EmailRoutingSummaryDKIMParamsSPF = "NONE"` - `const EmailRoutingSummaryDKIMParamsSPFFail EmailRoutingSummaryDKIMParamsSPF = "FAIL"` ### Returns - `type EmailRoutingSummaryDKIMResponse struct{…}` - `Meta EmailRoutingSummaryDKIMResponseMeta` Metadata for the results. - `ConfidenceInfo EmailRoutingSummaryDKIMResponseMetaConfidenceInfo` - `Annotations []EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingSummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingSummaryDKIMResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingSummaryDKIMResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingSummaryDKIMResponseMetaNormalizationPercentage EmailRoutingSummaryDKIMResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingSummaryDKIMResponseMetaNormalizationMin0Max EmailRoutingSummaryDKIMResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingSummaryDKIMResponseMetaNormalizationMinMax EmailRoutingSummaryDKIMResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingSummaryDKIMResponseMetaNormalizationRawValues EmailRoutingSummaryDKIMResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingSummaryDKIMResponseMetaNormalizationPercentageChange EmailRoutingSummaryDKIMResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingSummaryDKIMResponseMetaNormalizationRollingAverage EmailRoutingSummaryDKIMResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingSummaryDKIMResponseMetaNormalizationOverlappedPercentage EmailRoutingSummaryDKIMResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingSummaryDKIMResponseMetaNormalizationRatio EmailRoutingSummaryDKIMResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingSummaryDKIMResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 RadarEmailSummary` - `Fail string` A numeric string. - `None string` A numeric string. - `Pass string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.Summary.DKIM(context.TODO(), radar.EmailRoutingSummaryDKIMParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Routing.Summary.DMARC(ctx, query) (*EmailRoutingSummaryDMARCResponse, error)` **get** `/radar/email/routing/summary/dmarc` Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation. ### Parameters - `query EmailRoutingSummaryDMARCParams` - `ARC param.Field[[]EmailRoutingSummaryDMARCParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailRoutingSummaryDMARCParamsARCPass EmailRoutingSummaryDMARCParamsARC = "PASS"` - `const EmailRoutingSummaryDMARCParamsARCNone EmailRoutingSummaryDMARCParamsARC = "NONE"` - `const EmailRoutingSummaryDMARCParamsARCFail EmailRoutingSummaryDMARCParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingSummaryDMARCParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailRoutingSummaryDMARCParamsDKIMPass EmailRoutingSummaryDMARCParamsDKIM = "PASS"` - `const EmailRoutingSummaryDMARCParamsDKIMNone EmailRoutingSummaryDMARCParamsDKIM = "NONE"` - `const EmailRoutingSummaryDMARCParamsDKIMFail EmailRoutingSummaryDMARCParamsDKIM = "FAIL"` - `Encrypted param.Field[[]EmailRoutingSummaryDMARCParamsEncrypted]` Filters results by encryption status (encrypted vs. not-encrypted). - `const EmailRoutingSummaryDMARCParamsEncryptedEncrypted EmailRoutingSummaryDMARCParamsEncrypted = "ENCRYPTED"` - `const EmailRoutingSummaryDMARCParamsEncryptedNotEncrypted EmailRoutingSummaryDMARCParamsEncrypted = "NOT_ENCRYPTED"` - `Format param.Field[EmailRoutingSummaryDMARCParamsFormat]` Format in which results will be returned. - `const EmailRoutingSummaryDMARCParamsFormatJson EmailRoutingSummaryDMARCParamsFormat = "JSON"` - `const EmailRoutingSummaryDMARCParamsFormatCsv EmailRoutingSummaryDMARCParamsFormat = "CSV"` - `IPVersion param.Field[[]EmailRoutingSummaryDMARCParamsIPVersion]` Filters results by IP version (Ipv4 vs. IPv6). - `const EmailRoutingSummaryDMARCParamsIPVersionIPv4 EmailRoutingSummaryDMARCParamsIPVersion = "IPv4"` - `const EmailRoutingSummaryDMARCParamsIPVersionIPv6 EmailRoutingSummaryDMARCParamsIPVersion = "IPv6"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailRoutingSummaryDMARCParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailRoutingSummaryDMARCParamsSPFPass EmailRoutingSummaryDMARCParamsSPF = "PASS"` - `const EmailRoutingSummaryDMARCParamsSPFNone EmailRoutingSummaryDMARCParamsSPF = "NONE"` - `const EmailRoutingSummaryDMARCParamsSPFFail EmailRoutingSummaryDMARCParamsSPF = "FAIL"` ### Returns - `type EmailRoutingSummaryDMARCResponse struct{…}` - `Meta EmailRoutingSummaryDMARCResponseMeta` Metadata for the results. - `ConfidenceInfo EmailRoutingSummaryDMARCResponseMetaConfidenceInfo` - `Annotations []EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingSummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingSummaryDMARCResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingSummaryDMARCResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingSummaryDMARCResponseMetaNormalizationPercentage EmailRoutingSummaryDMARCResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingSummaryDMARCResponseMetaNormalizationMin0Max EmailRoutingSummaryDMARCResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingSummaryDMARCResponseMetaNormalizationMinMax EmailRoutingSummaryDMARCResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingSummaryDMARCResponseMetaNormalizationRawValues EmailRoutingSummaryDMARCResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingSummaryDMARCResponseMetaNormalizationPercentageChange EmailRoutingSummaryDMARCResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingSummaryDMARCResponseMetaNormalizationRollingAverage EmailRoutingSummaryDMARCResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingSummaryDMARCResponseMetaNormalizationOverlappedPercentage EmailRoutingSummaryDMARCResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingSummaryDMARCResponseMetaNormalizationRatio EmailRoutingSummaryDMARCResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingSummaryDMARCResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 RadarEmailSummary` - `Fail string` A numeric string. - `None string` A numeric string. - `Pass string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.Summary.DMARC(context.TODO(), radar.EmailRoutingSummaryDMARCParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Routing.Summary.Encrypted(ctx, query) (*EmailRoutingSummaryEncryptedResponse, error)` **get** `/radar/email/routing/summary/encrypted` Retrieves the distribution of emails by encryption status (encrypted vs. not-encrypted). ### Parameters - `query EmailRoutingSummaryEncryptedParams` - `ARC param.Field[[]EmailRoutingSummaryEncryptedParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailRoutingSummaryEncryptedParamsARCPass EmailRoutingSummaryEncryptedParamsARC = "PASS"` - `const EmailRoutingSummaryEncryptedParamsARCNone EmailRoutingSummaryEncryptedParamsARC = "NONE"` - `const EmailRoutingSummaryEncryptedParamsARCFail EmailRoutingSummaryEncryptedParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingSummaryEncryptedParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailRoutingSummaryEncryptedParamsDKIMPass EmailRoutingSummaryEncryptedParamsDKIM = "PASS"` - `const EmailRoutingSummaryEncryptedParamsDKIMNone EmailRoutingSummaryEncryptedParamsDKIM = "NONE"` - `const EmailRoutingSummaryEncryptedParamsDKIMFail EmailRoutingSummaryEncryptedParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailRoutingSummaryEncryptedParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailRoutingSummaryEncryptedParamsDMARCPass EmailRoutingSummaryEncryptedParamsDMARC = "PASS"` - `const EmailRoutingSummaryEncryptedParamsDMARCNone EmailRoutingSummaryEncryptedParamsDMARC = "NONE"` - `const EmailRoutingSummaryEncryptedParamsDMARCFail EmailRoutingSummaryEncryptedParamsDMARC = "FAIL"` - `Format param.Field[EmailRoutingSummaryEncryptedParamsFormat]` Format in which results will be returned. - `const EmailRoutingSummaryEncryptedParamsFormatJson EmailRoutingSummaryEncryptedParamsFormat = "JSON"` - `const EmailRoutingSummaryEncryptedParamsFormatCsv EmailRoutingSummaryEncryptedParamsFormat = "CSV"` - `IPVersion param.Field[[]EmailRoutingSummaryEncryptedParamsIPVersion]` Filters results by IP version (Ipv4 vs. IPv6). - `const EmailRoutingSummaryEncryptedParamsIPVersionIPv4 EmailRoutingSummaryEncryptedParamsIPVersion = "IPv4"` - `const EmailRoutingSummaryEncryptedParamsIPVersionIPv6 EmailRoutingSummaryEncryptedParamsIPVersion = "IPv6"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailRoutingSummaryEncryptedParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailRoutingSummaryEncryptedParamsSPFPass EmailRoutingSummaryEncryptedParamsSPF = "PASS"` - `const EmailRoutingSummaryEncryptedParamsSPFNone EmailRoutingSummaryEncryptedParamsSPF = "NONE"` - `const EmailRoutingSummaryEncryptedParamsSPFFail EmailRoutingSummaryEncryptedParamsSPF = "FAIL"` ### Returns - `type EmailRoutingSummaryEncryptedResponse struct{…}` - `Meta EmailRoutingSummaryEncryptedResponseMeta` Metadata for the results. - `ConfidenceInfo EmailRoutingSummaryEncryptedResponseMetaConfidenceInfo` - `Annotations []EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingSummaryEncryptedResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingSummaryEncryptedResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingSummaryEncryptedResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingSummaryEncryptedResponseMetaNormalizationPercentage EmailRoutingSummaryEncryptedResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingSummaryEncryptedResponseMetaNormalizationMin0Max EmailRoutingSummaryEncryptedResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingSummaryEncryptedResponseMetaNormalizationMinMax EmailRoutingSummaryEncryptedResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingSummaryEncryptedResponseMetaNormalizationRawValues EmailRoutingSummaryEncryptedResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingSummaryEncryptedResponseMetaNormalizationPercentageChange EmailRoutingSummaryEncryptedResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingSummaryEncryptedResponseMetaNormalizationRollingAverage EmailRoutingSummaryEncryptedResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingSummaryEncryptedResponseMetaNormalizationOverlappedPercentage EmailRoutingSummaryEncryptedResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingSummaryEncryptedResponseMetaNormalizationRatio EmailRoutingSummaryEncryptedResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingSummaryEncryptedResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 EmailRoutingSummaryEncryptedResponseSummary0` - `Encrypted string` A numeric string. - `NotEncrypted string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.Summary.Encrypted(context.TODO(), radar.EmailRoutingSummaryEncryptedParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Routing.Summary.IPVersion(ctx, query) (*EmailRoutingSummaryIPVersionResponse, error)` **get** `/radar/email/routing/summary/ip_version` Retrieves the distribution of emails by IP version. ### Parameters - `query EmailRoutingSummaryIPVersionParams` - `ARC param.Field[[]EmailRoutingSummaryIPVersionParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailRoutingSummaryIPVersionParamsARCPass EmailRoutingSummaryIPVersionParamsARC = "PASS"` - `const EmailRoutingSummaryIPVersionParamsARCNone EmailRoutingSummaryIPVersionParamsARC = "NONE"` - `const EmailRoutingSummaryIPVersionParamsARCFail EmailRoutingSummaryIPVersionParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingSummaryIPVersionParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailRoutingSummaryIPVersionParamsDKIMPass EmailRoutingSummaryIPVersionParamsDKIM = "PASS"` - `const EmailRoutingSummaryIPVersionParamsDKIMNone EmailRoutingSummaryIPVersionParamsDKIM = "NONE"` - `const EmailRoutingSummaryIPVersionParamsDKIMFail EmailRoutingSummaryIPVersionParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailRoutingSummaryIPVersionParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailRoutingSummaryIPVersionParamsDMARCPass EmailRoutingSummaryIPVersionParamsDMARC = "PASS"` - `const EmailRoutingSummaryIPVersionParamsDMARCNone EmailRoutingSummaryIPVersionParamsDMARC = "NONE"` - `const EmailRoutingSummaryIPVersionParamsDMARCFail EmailRoutingSummaryIPVersionParamsDMARC = "FAIL"` - `Encrypted param.Field[[]EmailRoutingSummaryIPVersionParamsEncrypted]` Filters results by encryption status (encrypted vs. not-encrypted). - `const EmailRoutingSummaryIPVersionParamsEncryptedEncrypted EmailRoutingSummaryIPVersionParamsEncrypted = "ENCRYPTED"` - `const EmailRoutingSummaryIPVersionParamsEncryptedNotEncrypted EmailRoutingSummaryIPVersionParamsEncrypted = "NOT_ENCRYPTED"` - `Format param.Field[EmailRoutingSummaryIPVersionParamsFormat]` Format in which results will be returned. - `const EmailRoutingSummaryIPVersionParamsFormatJson EmailRoutingSummaryIPVersionParamsFormat = "JSON"` - `const EmailRoutingSummaryIPVersionParamsFormatCsv EmailRoutingSummaryIPVersionParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailRoutingSummaryIPVersionParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailRoutingSummaryIPVersionParamsSPFPass EmailRoutingSummaryIPVersionParamsSPF = "PASS"` - `const EmailRoutingSummaryIPVersionParamsSPFNone EmailRoutingSummaryIPVersionParamsSPF = "NONE"` - `const EmailRoutingSummaryIPVersionParamsSPFFail EmailRoutingSummaryIPVersionParamsSPF = "FAIL"` ### Returns - `type EmailRoutingSummaryIPVersionResponse struct{…}` - `Meta EmailRoutingSummaryIPVersionResponseMeta` Metadata for the results. - `ConfidenceInfo EmailRoutingSummaryIPVersionResponseMetaConfidenceInfo` - `Annotations []EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingSummaryIPVersionResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingSummaryIPVersionResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingSummaryIPVersionResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingSummaryIPVersionResponseMetaNormalizationPercentage EmailRoutingSummaryIPVersionResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingSummaryIPVersionResponseMetaNormalizationMin0Max EmailRoutingSummaryIPVersionResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingSummaryIPVersionResponseMetaNormalizationMinMax EmailRoutingSummaryIPVersionResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingSummaryIPVersionResponseMetaNormalizationRawValues EmailRoutingSummaryIPVersionResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingSummaryIPVersionResponseMetaNormalizationPercentageChange EmailRoutingSummaryIPVersionResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingSummaryIPVersionResponseMetaNormalizationRollingAverage EmailRoutingSummaryIPVersionResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingSummaryIPVersionResponseMetaNormalizationOverlappedPercentage EmailRoutingSummaryIPVersionResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingSummaryIPVersionResponseMetaNormalizationRatio EmailRoutingSummaryIPVersionResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingSummaryIPVersionResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 EmailRoutingSummaryIPVersionResponseSummary0` - `IPv4 string` A numeric string. - `IPv6 string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.Summary.IPVersion(context.TODO(), radar.EmailRoutingSummaryIPVersionParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Routing.Summary.SPF(ctx, query) (*EmailRoutingSummarySPFResponse, error)` **get** `/radar/email/routing/summary/spf` Retrieves the distribution of emails by SPF (Sender Policy Framework) validation. ### Parameters - `query EmailRoutingSummarySPFParams` - `ARC param.Field[[]EmailRoutingSummarySPFParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailRoutingSummarySPFParamsARCPass EmailRoutingSummarySPFParamsARC = "PASS"` - `const EmailRoutingSummarySPFParamsARCNone EmailRoutingSummarySPFParamsARC = "NONE"` - `const EmailRoutingSummarySPFParamsARCFail EmailRoutingSummarySPFParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingSummarySPFParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailRoutingSummarySPFParamsDKIMPass EmailRoutingSummarySPFParamsDKIM = "PASS"` - `const EmailRoutingSummarySPFParamsDKIMNone EmailRoutingSummarySPFParamsDKIM = "NONE"` - `const EmailRoutingSummarySPFParamsDKIMFail EmailRoutingSummarySPFParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailRoutingSummarySPFParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailRoutingSummarySPFParamsDMARCPass EmailRoutingSummarySPFParamsDMARC = "PASS"` - `const EmailRoutingSummarySPFParamsDMARCNone EmailRoutingSummarySPFParamsDMARC = "NONE"` - `const EmailRoutingSummarySPFParamsDMARCFail EmailRoutingSummarySPFParamsDMARC = "FAIL"` - `Encrypted param.Field[[]EmailRoutingSummarySPFParamsEncrypted]` Filters results by encryption status (encrypted vs. not-encrypted). - `const EmailRoutingSummarySPFParamsEncryptedEncrypted EmailRoutingSummarySPFParamsEncrypted = "ENCRYPTED"` - `const EmailRoutingSummarySPFParamsEncryptedNotEncrypted EmailRoutingSummarySPFParamsEncrypted = "NOT_ENCRYPTED"` - `Format param.Field[EmailRoutingSummarySPFParamsFormat]` Format in which results will be returned. - `const EmailRoutingSummarySPFParamsFormatJson EmailRoutingSummarySPFParamsFormat = "JSON"` - `const EmailRoutingSummarySPFParamsFormatCsv EmailRoutingSummarySPFParamsFormat = "CSV"` - `IPVersion param.Field[[]EmailRoutingSummarySPFParamsIPVersion]` Filters results by IP version (Ipv4 vs. IPv6). - `const EmailRoutingSummarySPFParamsIPVersionIPv4 EmailRoutingSummarySPFParamsIPVersion = "IPv4"` - `const EmailRoutingSummarySPFParamsIPVersionIPv6 EmailRoutingSummarySPFParamsIPVersion = "IPv6"` - `Name param.Field[[]string]` Array of names used to label the series in the response. ### Returns - `type EmailRoutingSummarySPFResponse struct{…}` - `Meta EmailRoutingSummarySPFResponseMeta` Metadata for the results. - `ConfidenceInfo EmailRoutingSummarySPFResponseMetaConfidenceInfo` - `Annotations []EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingSummarySPFResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingSummarySPFResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingSummarySPFResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingSummarySPFResponseMetaNormalizationPercentage EmailRoutingSummarySPFResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingSummarySPFResponseMetaNormalizationMin0Max EmailRoutingSummarySPFResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingSummarySPFResponseMetaNormalizationMinMax EmailRoutingSummarySPFResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingSummarySPFResponseMetaNormalizationRawValues EmailRoutingSummarySPFResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingSummarySPFResponseMetaNormalizationPercentageChange EmailRoutingSummarySPFResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingSummarySPFResponseMetaNormalizationRollingAverage EmailRoutingSummarySPFResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingSummarySPFResponseMetaNormalizationOverlappedPercentage EmailRoutingSummarySPFResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingSummarySPFResponseMetaNormalizationRatio EmailRoutingSummarySPFResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingSummarySPFResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 RadarEmailSummary` - `Fail string` A numeric string. - `None string` A numeric string. - `Pass string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.Summary.SPF(context.TODO(), radar.EmailRoutingSummarySPFParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 } ``` # Timeseries Groups ## Get email ARC validation time series `client.Radar.Email.Routing.TimeseriesGroups.ARC(ctx, query) (*EmailRoutingTimeseriesGroupARCResponse, error)` **get** `/radar/email/routing/timeseries_groups/arc` Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation over time. ### Parameters - `query EmailRoutingTimeseriesGroupARCParams` - `AggInterval param.Field[EmailRoutingTimeseriesGroupARCParamsAggInterval]` 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. - `const EmailRoutingTimeseriesGroupARCParamsAggInterval15m EmailRoutingTimeseriesGroupARCParamsAggInterval = "15m"` - `const EmailRoutingTimeseriesGroupARCParamsAggInterval1h EmailRoutingTimeseriesGroupARCParamsAggInterval = "1h"` - `const EmailRoutingTimeseriesGroupARCParamsAggInterval1d EmailRoutingTimeseriesGroupARCParamsAggInterval = "1d"` - `const EmailRoutingTimeseriesGroupARCParamsAggInterval1w EmailRoutingTimeseriesGroupARCParamsAggInterval = "1w"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingTimeseriesGroupARCParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailRoutingTimeseriesGroupARCParamsDKIMPass EmailRoutingTimeseriesGroupARCParamsDKIM = "PASS"` - `const EmailRoutingTimeseriesGroupARCParamsDKIMNone EmailRoutingTimeseriesGroupARCParamsDKIM = "NONE"` - `const EmailRoutingTimeseriesGroupARCParamsDKIMFail EmailRoutingTimeseriesGroupARCParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailRoutingTimeseriesGroupARCParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailRoutingTimeseriesGroupARCParamsDMARCPass EmailRoutingTimeseriesGroupARCParamsDMARC = "PASS"` - `const EmailRoutingTimeseriesGroupARCParamsDMARCNone EmailRoutingTimeseriesGroupARCParamsDMARC = "NONE"` - `const EmailRoutingTimeseriesGroupARCParamsDMARCFail EmailRoutingTimeseriesGroupARCParamsDMARC = "FAIL"` - `Encrypted param.Field[[]EmailRoutingTimeseriesGroupARCParamsEncrypted]` Filters results by encryption status (encrypted vs. not-encrypted). - `const EmailRoutingTimeseriesGroupARCParamsEncryptedEncrypted EmailRoutingTimeseriesGroupARCParamsEncrypted = "ENCRYPTED"` - `const EmailRoutingTimeseriesGroupARCParamsEncryptedNotEncrypted EmailRoutingTimeseriesGroupARCParamsEncrypted = "NOT_ENCRYPTED"` - `Format param.Field[EmailRoutingTimeseriesGroupARCParamsFormat]` Format in which results will be returned. - `const EmailRoutingTimeseriesGroupARCParamsFormatJson EmailRoutingTimeseriesGroupARCParamsFormat = "JSON"` - `const EmailRoutingTimeseriesGroupARCParamsFormatCsv EmailRoutingTimeseriesGroupARCParamsFormat = "CSV"` - `IPVersion param.Field[[]EmailRoutingTimeseriesGroupARCParamsIPVersion]` Filters results by IP version (Ipv4 vs. IPv6). - `const EmailRoutingTimeseriesGroupARCParamsIPVersionIPv4 EmailRoutingTimeseriesGroupARCParamsIPVersion = "IPv4"` - `const EmailRoutingTimeseriesGroupARCParamsIPVersionIPv6 EmailRoutingTimeseriesGroupARCParamsIPVersion = "IPv6"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailRoutingTimeseriesGroupARCParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailRoutingTimeseriesGroupARCParamsSPFPass EmailRoutingTimeseriesGroupARCParamsSPF = "PASS"` - `const EmailRoutingTimeseriesGroupARCParamsSPFNone EmailRoutingTimeseriesGroupARCParamsSPF = "NONE"` - `const EmailRoutingTimeseriesGroupARCParamsSPFFail EmailRoutingTimeseriesGroupARCParamsSPF = "FAIL"` ### Returns - `type EmailRoutingTimeseriesGroupARCResponse struct{…}` - `Meta EmailRoutingTimeseriesGroupARCResponseMeta` Metadata for the results. - `AggInterval EmailRoutingTimeseriesGroupARCResponseMetaAggInterval` 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/). - `const EmailRoutingTimeseriesGroupARCResponseMetaAggIntervalFifteenMinutes EmailRoutingTimeseriesGroupARCResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailRoutingTimeseriesGroupARCResponseMetaAggIntervalOneHour EmailRoutingTimeseriesGroupARCResponseMetaAggInterval = "ONE_HOUR"` - `const EmailRoutingTimeseriesGroupARCResponseMetaAggIntervalOneDay EmailRoutingTimeseriesGroupARCResponseMetaAggInterval = "ONE_DAY"` - `const EmailRoutingTimeseriesGroupARCResponseMetaAggIntervalOneWeek EmailRoutingTimeseriesGroupARCResponseMetaAggInterval = "ONE_WEEK"` - `const EmailRoutingTimeseriesGroupARCResponseMetaAggIntervalOneMonth EmailRoutingTimeseriesGroupARCResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfo` - `Annotations []EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingTimeseriesGroupARCResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingTimeseriesGroupARCResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingTimeseriesGroupARCResponseMetaNormalizationPercentage EmailRoutingTimeseriesGroupARCResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingTimeseriesGroupARCResponseMetaNormalizationMin0Max EmailRoutingTimeseriesGroupARCResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingTimeseriesGroupARCResponseMetaNormalizationMinMax EmailRoutingTimeseriesGroupARCResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingTimeseriesGroupARCResponseMetaNormalizationRawValues EmailRoutingTimeseriesGroupARCResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingTimeseriesGroupARCResponseMetaNormalizationPercentageChange EmailRoutingTimeseriesGroupARCResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingTimeseriesGroupARCResponseMetaNormalizationRollingAverage EmailRoutingTimeseriesGroupARCResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingTimeseriesGroupARCResponseMetaNormalizationOverlappedPercentage EmailRoutingTimeseriesGroupARCResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingTimeseriesGroupARCResponseMetaNormalizationRatio EmailRoutingTimeseriesGroupARCResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingTimeseriesGroupARCResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 RadarEmailSeries` - `Fail []string` - `None []string` - `Pass []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.TimeseriesGroups.ARC(context.TODO(), radar.EmailRoutingTimeseriesGroupARCParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Routing.TimeseriesGroups.DKIM(ctx, query) (*EmailRoutingTimeseriesGroupDKIMResponse, error)` **get** `/radar/email/routing/timeseries_groups/dkim` Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation over time. ### Parameters - `query EmailRoutingTimeseriesGroupDKIMParams` - `AggInterval param.Field[EmailRoutingTimeseriesGroupDKIMParamsAggInterval]` 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. - `const EmailRoutingTimeseriesGroupDKIMParamsAggInterval15m EmailRoutingTimeseriesGroupDKIMParamsAggInterval = "15m"` - `const EmailRoutingTimeseriesGroupDKIMParamsAggInterval1h EmailRoutingTimeseriesGroupDKIMParamsAggInterval = "1h"` - `const EmailRoutingTimeseriesGroupDKIMParamsAggInterval1d EmailRoutingTimeseriesGroupDKIMParamsAggInterval = "1d"` - `const EmailRoutingTimeseriesGroupDKIMParamsAggInterval1w EmailRoutingTimeseriesGroupDKIMParamsAggInterval = "1w"` - `ARC param.Field[[]EmailRoutingTimeseriesGroupDKIMParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailRoutingTimeseriesGroupDKIMParamsARCPass EmailRoutingTimeseriesGroupDKIMParamsARC = "PASS"` - `const EmailRoutingTimeseriesGroupDKIMParamsARCNone EmailRoutingTimeseriesGroupDKIMParamsARC = "NONE"` - `const EmailRoutingTimeseriesGroupDKIMParamsARCFail EmailRoutingTimeseriesGroupDKIMParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingTimeseriesGroupDKIMParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailRoutingTimeseriesGroupDKIMParamsDMARCPass EmailRoutingTimeseriesGroupDKIMParamsDMARC = "PASS"` - `const EmailRoutingTimeseriesGroupDKIMParamsDMARCNone EmailRoutingTimeseriesGroupDKIMParamsDMARC = "NONE"` - `const EmailRoutingTimeseriesGroupDKIMParamsDMARCFail EmailRoutingTimeseriesGroupDKIMParamsDMARC = "FAIL"` - `Encrypted param.Field[[]EmailRoutingTimeseriesGroupDKIMParamsEncrypted]` Filters results by encryption status (encrypted vs. not-encrypted). - `const EmailRoutingTimeseriesGroupDKIMParamsEncryptedEncrypted EmailRoutingTimeseriesGroupDKIMParamsEncrypted = "ENCRYPTED"` - `const EmailRoutingTimeseriesGroupDKIMParamsEncryptedNotEncrypted EmailRoutingTimeseriesGroupDKIMParamsEncrypted = "NOT_ENCRYPTED"` - `Format param.Field[EmailRoutingTimeseriesGroupDKIMParamsFormat]` Format in which results will be returned. - `const EmailRoutingTimeseriesGroupDKIMParamsFormatJson EmailRoutingTimeseriesGroupDKIMParamsFormat = "JSON"` - `const EmailRoutingTimeseriesGroupDKIMParamsFormatCsv EmailRoutingTimeseriesGroupDKIMParamsFormat = "CSV"` - `IPVersion param.Field[[]EmailRoutingTimeseriesGroupDKIMParamsIPVersion]` Filters results by IP version (Ipv4 vs. IPv6). - `const EmailRoutingTimeseriesGroupDKIMParamsIPVersionIPv4 EmailRoutingTimeseriesGroupDKIMParamsIPVersion = "IPv4"` - `const EmailRoutingTimeseriesGroupDKIMParamsIPVersionIPv6 EmailRoutingTimeseriesGroupDKIMParamsIPVersion = "IPv6"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailRoutingTimeseriesGroupDKIMParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailRoutingTimeseriesGroupDKIMParamsSPFPass EmailRoutingTimeseriesGroupDKIMParamsSPF = "PASS"` - `const EmailRoutingTimeseriesGroupDKIMParamsSPFNone EmailRoutingTimeseriesGroupDKIMParamsSPF = "NONE"` - `const EmailRoutingTimeseriesGroupDKIMParamsSPFFail EmailRoutingTimeseriesGroupDKIMParamsSPF = "FAIL"` ### Returns - `type EmailRoutingTimeseriesGroupDKIMResponse struct{…}` - `Meta EmailRoutingTimeseriesGroupDKIMResponseMeta` Metadata for the results. - `AggInterval EmailRoutingTimeseriesGroupDKIMResponseMetaAggInterval` 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/). - `const EmailRoutingTimeseriesGroupDKIMResponseMetaAggIntervalFifteenMinutes EmailRoutingTimeseriesGroupDKIMResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaAggIntervalOneHour EmailRoutingTimeseriesGroupDKIMResponseMetaAggInterval = "ONE_HOUR"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaAggIntervalOneDay EmailRoutingTimeseriesGroupDKIMResponseMetaAggInterval = "ONE_DAY"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaAggIntervalOneWeek EmailRoutingTimeseriesGroupDKIMResponseMetaAggInterval = "ONE_WEEK"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaAggIntervalOneMonth EmailRoutingTimeseriesGroupDKIMResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfo` - `Annotations []EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingTimeseriesGroupDKIMResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingTimeseriesGroupDKIMResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingTimeseriesGroupDKIMResponseMetaNormalizationPercentage EmailRoutingTimeseriesGroupDKIMResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaNormalizationMin0Max EmailRoutingTimeseriesGroupDKIMResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaNormalizationMinMax EmailRoutingTimeseriesGroupDKIMResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaNormalizationRawValues EmailRoutingTimeseriesGroupDKIMResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaNormalizationPercentageChange EmailRoutingTimeseriesGroupDKIMResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaNormalizationRollingAverage EmailRoutingTimeseriesGroupDKIMResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaNormalizationOverlappedPercentage EmailRoutingTimeseriesGroupDKIMResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingTimeseriesGroupDKIMResponseMetaNormalizationRatio EmailRoutingTimeseriesGroupDKIMResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingTimeseriesGroupDKIMResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 RadarEmailSeries` - `Fail []string` - `None []string` - `Pass []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.TimeseriesGroups.DKIM(context.TODO(), radar.EmailRoutingTimeseriesGroupDKIMParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Routing.TimeseriesGroups.DMARC(ctx, query) (*EmailRoutingTimeseriesGroupDMARCResponse, error)` **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 - `query EmailRoutingTimeseriesGroupDMARCParams` - `AggInterval param.Field[EmailRoutingTimeseriesGroupDMARCParamsAggInterval]` 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. - `const EmailRoutingTimeseriesGroupDMARCParamsAggInterval15m EmailRoutingTimeseriesGroupDMARCParamsAggInterval = "15m"` - `const EmailRoutingTimeseriesGroupDMARCParamsAggInterval1h EmailRoutingTimeseriesGroupDMARCParamsAggInterval = "1h"` - `const EmailRoutingTimeseriesGroupDMARCParamsAggInterval1d EmailRoutingTimeseriesGroupDMARCParamsAggInterval = "1d"` - `const EmailRoutingTimeseriesGroupDMARCParamsAggInterval1w EmailRoutingTimeseriesGroupDMARCParamsAggInterval = "1w"` - `ARC param.Field[[]EmailRoutingTimeseriesGroupDMARCParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailRoutingTimeseriesGroupDMARCParamsARCPass EmailRoutingTimeseriesGroupDMARCParamsARC = "PASS"` - `const EmailRoutingTimeseriesGroupDMARCParamsARCNone EmailRoutingTimeseriesGroupDMARCParamsARC = "NONE"` - `const EmailRoutingTimeseriesGroupDMARCParamsARCFail EmailRoutingTimeseriesGroupDMARCParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingTimeseriesGroupDMARCParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailRoutingTimeseriesGroupDMARCParamsDKIMPass EmailRoutingTimeseriesGroupDMARCParamsDKIM = "PASS"` - `const EmailRoutingTimeseriesGroupDMARCParamsDKIMNone EmailRoutingTimeseriesGroupDMARCParamsDKIM = "NONE"` - `const EmailRoutingTimeseriesGroupDMARCParamsDKIMFail EmailRoutingTimeseriesGroupDMARCParamsDKIM = "FAIL"` - `Encrypted param.Field[[]EmailRoutingTimeseriesGroupDMARCParamsEncrypted]` Filters results by encryption status (encrypted vs. not-encrypted). - `const EmailRoutingTimeseriesGroupDMARCParamsEncryptedEncrypted EmailRoutingTimeseriesGroupDMARCParamsEncrypted = "ENCRYPTED"` - `const EmailRoutingTimeseriesGroupDMARCParamsEncryptedNotEncrypted EmailRoutingTimeseriesGroupDMARCParamsEncrypted = "NOT_ENCRYPTED"` - `Format param.Field[EmailRoutingTimeseriesGroupDMARCParamsFormat]` Format in which results will be returned. - `const EmailRoutingTimeseriesGroupDMARCParamsFormatJson EmailRoutingTimeseriesGroupDMARCParamsFormat = "JSON"` - `const EmailRoutingTimeseriesGroupDMARCParamsFormatCsv EmailRoutingTimeseriesGroupDMARCParamsFormat = "CSV"` - `IPVersion param.Field[[]EmailRoutingTimeseriesGroupDMARCParamsIPVersion]` Filters results by IP version (Ipv4 vs. IPv6). - `const EmailRoutingTimeseriesGroupDMARCParamsIPVersionIPv4 EmailRoutingTimeseriesGroupDMARCParamsIPVersion = "IPv4"` - `const EmailRoutingTimeseriesGroupDMARCParamsIPVersionIPv6 EmailRoutingTimeseriesGroupDMARCParamsIPVersion = "IPv6"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailRoutingTimeseriesGroupDMARCParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailRoutingTimeseriesGroupDMARCParamsSPFPass EmailRoutingTimeseriesGroupDMARCParamsSPF = "PASS"` - `const EmailRoutingTimeseriesGroupDMARCParamsSPFNone EmailRoutingTimeseriesGroupDMARCParamsSPF = "NONE"` - `const EmailRoutingTimeseriesGroupDMARCParamsSPFFail EmailRoutingTimeseriesGroupDMARCParamsSPF = "FAIL"` ### Returns - `type EmailRoutingTimeseriesGroupDMARCResponse struct{…}` - `Meta EmailRoutingTimeseriesGroupDMARCResponseMeta` Metadata for the results. - `AggInterval EmailRoutingTimeseriesGroupDMARCResponseMetaAggInterval` 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/). - `const EmailRoutingTimeseriesGroupDMARCResponseMetaAggIntervalFifteenMinutes EmailRoutingTimeseriesGroupDMARCResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaAggIntervalOneHour EmailRoutingTimeseriesGroupDMARCResponseMetaAggInterval = "ONE_HOUR"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaAggIntervalOneDay EmailRoutingTimeseriesGroupDMARCResponseMetaAggInterval = "ONE_DAY"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaAggIntervalOneWeek EmailRoutingTimeseriesGroupDMARCResponseMetaAggInterval = "ONE_WEEK"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaAggIntervalOneMonth EmailRoutingTimeseriesGroupDMARCResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfo` - `Annotations []EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingTimeseriesGroupDMARCResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingTimeseriesGroupDMARCResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingTimeseriesGroupDMARCResponseMetaNormalizationPercentage EmailRoutingTimeseriesGroupDMARCResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaNormalizationMin0Max EmailRoutingTimeseriesGroupDMARCResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaNormalizationMinMax EmailRoutingTimeseriesGroupDMARCResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaNormalizationRawValues EmailRoutingTimeseriesGroupDMARCResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaNormalizationPercentageChange EmailRoutingTimeseriesGroupDMARCResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaNormalizationRollingAverage EmailRoutingTimeseriesGroupDMARCResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaNormalizationOverlappedPercentage EmailRoutingTimeseriesGroupDMARCResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingTimeseriesGroupDMARCResponseMetaNormalizationRatio EmailRoutingTimeseriesGroupDMARCResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingTimeseriesGroupDMARCResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 RadarEmailSeries` - `Fail []string` - `None []string` - `Pass []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.TimeseriesGroups.DMARC(context.TODO(), radar.EmailRoutingTimeseriesGroupDMARCParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Routing.TimeseriesGroups.Encrypted(ctx, query) (*EmailRoutingTimeseriesGroupEncryptedResponse, error)` **get** `/radar/email/routing/timeseries_groups/encrypted` Retrieves the distribution of emails by encryption status (encrypted vs. not-encrypted) over time. ### Parameters - `query EmailRoutingTimeseriesGroupEncryptedParams` - `AggInterval param.Field[EmailRoutingTimeseriesGroupEncryptedParamsAggInterval]` 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. - `const EmailRoutingTimeseriesGroupEncryptedParamsAggInterval15m EmailRoutingTimeseriesGroupEncryptedParamsAggInterval = "15m"` - `const EmailRoutingTimeseriesGroupEncryptedParamsAggInterval1h EmailRoutingTimeseriesGroupEncryptedParamsAggInterval = "1h"` - `const EmailRoutingTimeseriesGroupEncryptedParamsAggInterval1d EmailRoutingTimeseriesGroupEncryptedParamsAggInterval = "1d"` - `const EmailRoutingTimeseriesGroupEncryptedParamsAggInterval1w EmailRoutingTimeseriesGroupEncryptedParamsAggInterval = "1w"` - `ARC param.Field[[]EmailRoutingTimeseriesGroupEncryptedParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailRoutingTimeseriesGroupEncryptedParamsARCPass EmailRoutingTimeseriesGroupEncryptedParamsARC = "PASS"` - `const EmailRoutingTimeseriesGroupEncryptedParamsARCNone EmailRoutingTimeseriesGroupEncryptedParamsARC = "NONE"` - `const EmailRoutingTimeseriesGroupEncryptedParamsARCFail EmailRoutingTimeseriesGroupEncryptedParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingTimeseriesGroupEncryptedParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailRoutingTimeseriesGroupEncryptedParamsDKIMPass EmailRoutingTimeseriesGroupEncryptedParamsDKIM = "PASS"` - `const EmailRoutingTimeseriesGroupEncryptedParamsDKIMNone EmailRoutingTimeseriesGroupEncryptedParamsDKIM = "NONE"` - `const EmailRoutingTimeseriesGroupEncryptedParamsDKIMFail EmailRoutingTimeseriesGroupEncryptedParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailRoutingTimeseriesGroupEncryptedParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailRoutingTimeseriesGroupEncryptedParamsDMARCPass EmailRoutingTimeseriesGroupEncryptedParamsDMARC = "PASS"` - `const EmailRoutingTimeseriesGroupEncryptedParamsDMARCNone EmailRoutingTimeseriesGroupEncryptedParamsDMARC = "NONE"` - `const EmailRoutingTimeseriesGroupEncryptedParamsDMARCFail EmailRoutingTimeseriesGroupEncryptedParamsDMARC = "FAIL"` - `Format param.Field[EmailRoutingTimeseriesGroupEncryptedParamsFormat]` Format in which results will be returned. - `const EmailRoutingTimeseriesGroupEncryptedParamsFormatJson EmailRoutingTimeseriesGroupEncryptedParamsFormat = "JSON"` - `const EmailRoutingTimeseriesGroupEncryptedParamsFormatCsv EmailRoutingTimeseriesGroupEncryptedParamsFormat = "CSV"` - `IPVersion param.Field[[]EmailRoutingTimeseriesGroupEncryptedParamsIPVersion]` Filters results by IP version (Ipv4 vs. IPv6). - `const EmailRoutingTimeseriesGroupEncryptedParamsIPVersionIPv4 EmailRoutingTimeseriesGroupEncryptedParamsIPVersion = "IPv4"` - `const EmailRoutingTimeseriesGroupEncryptedParamsIPVersionIPv6 EmailRoutingTimeseriesGroupEncryptedParamsIPVersion = "IPv6"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailRoutingTimeseriesGroupEncryptedParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailRoutingTimeseriesGroupEncryptedParamsSPFPass EmailRoutingTimeseriesGroupEncryptedParamsSPF = "PASS"` - `const EmailRoutingTimeseriesGroupEncryptedParamsSPFNone EmailRoutingTimeseriesGroupEncryptedParamsSPF = "NONE"` - `const EmailRoutingTimeseriesGroupEncryptedParamsSPFFail EmailRoutingTimeseriesGroupEncryptedParamsSPF = "FAIL"` ### Returns - `type EmailRoutingTimeseriesGroupEncryptedResponse struct{…}` - `Meta EmailRoutingTimeseriesGroupEncryptedResponseMeta` Metadata for the results. - `AggInterval EmailRoutingTimeseriesGroupEncryptedResponseMetaAggInterval` 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/). - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaAggIntervalFifteenMinutes EmailRoutingTimeseriesGroupEncryptedResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaAggIntervalOneHour EmailRoutingTimeseriesGroupEncryptedResponseMetaAggInterval = "ONE_HOUR"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaAggIntervalOneDay EmailRoutingTimeseriesGroupEncryptedResponseMetaAggInterval = "ONE_DAY"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaAggIntervalOneWeek EmailRoutingTimeseriesGroupEncryptedResponseMetaAggInterval = "ONE_WEEK"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaAggIntervalOneMonth EmailRoutingTimeseriesGroupEncryptedResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfo` - `Annotations []EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingTimeseriesGroupEncryptedResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingTimeseriesGroupEncryptedResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalizationPercentage EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalizationMin0Max EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalizationMinMax EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalizationRawValues EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalizationPercentageChange EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalizationRollingAverage EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalizationOverlappedPercentage EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalizationRatio EmailRoutingTimeseriesGroupEncryptedResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingTimeseriesGroupEncryptedResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 EmailRoutingTimeseriesGroupEncryptedResponseSerie0` - `Encrypted []string` - `NotEncrypted []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.TimeseriesGroups.Encrypted(context.TODO(), radar.EmailRoutingTimeseriesGroupEncryptedParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Routing.TimeseriesGroups.IPVersion(ctx, query) (*EmailRoutingTimeseriesGroupIPVersionResponse, error)` **get** `/radar/email/routing/timeseries_groups/ip_version` Retrieves the distribution of emails by IP version over time. ### Parameters - `query EmailRoutingTimeseriesGroupIPVersionParams` - `AggInterval param.Field[EmailRoutingTimeseriesGroupIPVersionParamsAggInterval]` 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. - `const EmailRoutingTimeseriesGroupIPVersionParamsAggInterval15m EmailRoutingTimeseriesGroupIPVersionParamsAggInterval = "15m"` - `const EmailRoutingTimeseriesGroupIPVersionParamsAggInterval1h EmailRoutingTimeseriesGroupIPVersionParamsAggInterval = "1h"` - `const EmailRoutingTimeseriesGroupIPVersionParamsAggInterval1d EmailRoutingTimeseriesGroupIPVersionParamsAggInterval = "1d"` - `const EmailRoutingTimeseriesGroupIPVersionParamsAggInterval1w EmailRoutingTimeseriesGroupIPVersionParamsAggInterval = "1w"` - `ARC param.Field[[]EmailRoutingTimeseriesGroupIPVersionParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailRoutingTimeseriesGroupIPVersionParamsARCPass EmailRoutingTimeseriesGroupIPVersionParamsARC = "PASS"` - `const EmailRoutingTimeseriesGroupIPVersionParamsARCNone EmailRoutingTimeseriesGroupIPVersionParamsARC = "NONE"` - `const EmailRoutingTimeseriesGroupIPVersionParamsARCFail EmailRoutingTimeseriesGroupIPVersionParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingTimeseriesGroupIPVersionParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailRoutingTimeseriesGroupIPVersionParamsDKIMPass EmailRoutingTimeseriesGroupIPVersionParamsDKIM = "PASS"` - `const EmailRoutingTimeseriesGroupIPVersionParamsDKIMNone EmailRoutingTimeseriesGroupIPVersionParamsDKIM = "NONE"` - `const EmailRoutingTimeseriesGroupIPVersionParamsDKIMFail EmailRoutingTimeseriesGroupIPVersionParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailRoutingTimeseriesGroupIPVersionParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailRoutingTimeseriesGroupIPVersionParamsDMARCPass EmailRoutingTimeseriesGroupIPVersionParamsDMARC = "PASS"` - `const EmailRoutingTimeseriesGroupIPVersionParamsDMARCNone EmailRoutingTimeseriesGroupIPVersionParamsDMARC = "NONE"` - `const EmailRoutingTimeseriesGroupIPVersionParamsDMARCFail EmailRoutingTimeseriesGroupIPVersionParamsDMARC = "FAIL"` - `Encrypted param.Field[[]EmailRoutingTimeseriesGroupIPVersionParamsEncrypted]` Filters results by encryption status (encrypted vs. not-encrypted). - `const EmailRoutingTimeseriesGroupIPVersionParamsEncryptedEncrypted EmailRoutingTimeseriesGroupIPVersionParamsEncrypted = "ENCRYPTED"` - `const EmailRoutingTimeseriesGroupIPVersionParamsEncryptedNotEncrypted EmailRoutingTimeseriesGroupIPVersionParamsEncrypted = "NOT_ENCRYPTED"` - `Format param.Field[EmailRoutingTimeseriesGroupIPVersionParamsFormat]` Format in which results will be returned. - `const EmailRoutingTimeseriesGroupIPVersionParamsFormatJson EmailRoutingTimeseriesGroupIPVersionParamsFormat = "JSON"` - `const EmailRoutingTimeseriesGroupIPVersionParamsFormatCsv EmailRoutingTimeseriesGroupIPVersionParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailRoutingTimeseriesGroupIPVersionParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailRoutingTimeseriesGroupIPVersionParamsSPFPass EmailRoutingTimeseriesGroupIPVersionParamsSPF = "PASS"` - `const EmailRoutingTimeseriesGroupIPVersionParamsSPFNone EmailRoutingTimeseriesGroupIPVersionParamsSPF = "NONE"` - `const EmailRoutingTimeseriesGroupIPVersionParamsSPFFail EmailRoutingTimeseriesGroupIPVersionParamsSPF = "FAIL"` ### Returns - `type EmailRoutingTimeseriesGroupIPVersionResponse struct{…}` - `Meta EmailRoutingTimeseriesGroupIPVersionResponseMeta` Metadata for the results. - `AggInterval EmailRoutingTimeseriesGroupIPVersionResponseMetaAggInterval` 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/). - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaAggIntervalFifteenMinutes EmailRoutingTimeseriesGroupIPVersionResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaAggIntervalOneHour EmailRoutingTimeseriesGroupIPVersionResponseMetaAggInterval = "ONE_HOUR"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaAggIntervalOneDay EmailRoutingTimeseriesGroupIPVersionResponseMetaAggInterval = "ONE_DAY"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaAggIntervalOneWeek EmailRoutingTimeseriesGroupIPVersionResponseMetaAggInterval = "ONE_WEEK"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaAggIntervalOneMonth EmailRoutingTimeseriesGroupIPVersionResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfo` - `Annotations []EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingTimeseriesGroupIPVersionResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingTimeseriesGroupIPVersionResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalizationPercentage EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalizationMin0Max EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalizationMinMax EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalizationRawValues EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalizationPercentageChange EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalizationRollingAverage EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalizationOverlappedPercentage EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalizationRatio EmailRoutingTimeseriesGroupIPVersionResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingTimeseriesGroupIPVersionResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 EmailRoutingTimeseriesGroupIPVersionResponseSerie0` - `IPv4 []string` - `IPv6 []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.TimeseriesGroups.IPVersion(context.TODO(), radar.EmailRoutingTimeseriesGroupIPVersionParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Routing.TimeseriesGroups.SPF(ctx, query) (*EmailRoutingTimeseriesGroupSPFResponse, error)` **get** `/radar/email/routing/timeseries_groups/spf` Retrieves the distribution of emails by SPF (Sender Policy Framework) validation over time. ### Parameters - `query EmailRoutingTimeseriesGroupSPFParams` - `AggInterval param.Field[EmailRoutingTimeseriesGroupSPFParamsAggInterval]` 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. - `const EmailRoutingTimeseriesGroupSPFParamsAggInterval15m EmailRoutingTimeseriesGroupSPFParamsAggInterval = "15m"` - `const EmailRoutingTimeseriesGroupSPFParamsAggInterval1h EmailRoutingTimeseriesGroupSPFParamsAggInterval = "1h"` - `const EmailRoutingTimeseriesGroupSPFParamsAggInterval1d EmailRoutingTimeseriesGroupSPFParamsAggInterval = "1d"` - `const EmailRoutingTimeseriesGroupSPFParamsAggInterval1w EmailRoutingTimeseriesGroupSPFParamsAggInterval = "1w"` - `ARC param.Field[[]EmailRoutingTimeseriesGroupSPFParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailRoutingTimeseriesGroupSPFParamsARCPass EmailRoutingTimeseriesGroupSPFParamsARC = "PASS"` - `const EmailRoutingTimeseriesGroupSPFParamsARCNone EmailRoutingTimeseriesGroupSPFParamsARC = "NONE"` - `const EmailRoutingTimeseriesGroupSPFParamsARCFail EmailRoutingTimeseriesGroupSPFParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailRoutingTimeseriesGroupSPFParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailRoutingTimeseriesGroupSPFParamsDKIMPass EmailRoutingTimeseriesGroupSPFParamsDKIM = "PASS"` - `const EmailRoutingTimeseriesGroupSPFParamsDKIMNone EmailRoutingTimeseriesGroupSPFParamsDKIM = "NONE"` - `const EmailRoutingTimeseriesGroupSPFParamsDKIMFail EmailRoutingTimeseriesGroupSPFParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailRoutingTimeseriesGroupSPFParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailRoutingTimeseriesGroupSPFParamsDMARCPass EmailRoutingTimeseriesGroupSPFParamsDMARC = "PASS"` - `const EmailRoutingTimeseriesGroupSPFParamsDMARCNone EmailRoutingTimeseriesGroupSPFParamsDMARC = "NONE"` - `const EmailRoutingTimeseriesGroupSPFParamsDMARCFail EmailRoutingTimeseriesGroupSPFParamsDMARC = "FAIL"` - `Encrypted param.Field[[]EmailRoutingTimeseriesGroupSPFParamsEncrypted]` Filters results by encryption status (encrypted vs. not-encrypted). - `const EmailRoutingTimeseriesGroupSPFParamsEncryptedEncrypted EmailRoutingTimeseriesGroupSPFParamsEncrypted = "ENCRYPTED"` - `const EmailRoutingTimeseriesGroupSPFParamsEncryptedNotEncrypted EmailRoutingTimeseriesGroupSPFParamsEncrypted = "NOT_ENCRYPTED"` - `Format param.Field[EmailRoutingTimeseriesGroupSPFParamsFormat]` Format in which results will be returned. - `const EmailRoutingTimeseriesGroupSPFParamsFormatJson EmailRoutingTimeseriesGroupSPFParamsFormat = "JSON"` - `const EmailRoutingTimeseriesGroupSPFParamsFormatCsv EmailRoutingTimeseriesGroupSPFParamsFormat = "CSV"` - `IPVersion param.Field[[]EmailRoutingTimeseriesGroupSPFParamsIPVersion]` Filters results by IP version (Ipv4 vs. IPv6). - `const EmailRoutingTimeseriesGroupSPFParamsIPVersionIPv4 EmailRoutingTimeseriesGroupSPFParamsIPVersion = "IPv4"` - `const EmailRoutingTimeseriesGroupSPFParamsIPVersionIPv6 EmailRoutingTimeseriesGroupSPFParamsIPVersion = "IPv6"` - `Name param.Field[[]string]` Array of names used to label the series in the response. ### Returns - `type EmailRoutingTimeseriesGroupSPFResponse struct{…}` - `Meta EmailRoutingTimeseriesGroupSPFResponseMeta` Metadata for the results. - `AggInterval EmailRoutingTimeseriesGroupSPFResponseMetaAggInterval` 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/). - `const EmailRoutingTimeseriesGroupSPFResponseMetaAggIntervalFifteenMinutes EmailRoutingTimeseriesGroupSPFResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaAggIntervalOneHour EmailRoutingTimeseriesGroupSPFResponseMetaAggInterval = "ONE_HOUR"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaAggIntervalOneDay EmailRoutingTimeseriesGroupSPFResponseMetaAggInterval = "ONE_DAY"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaAggIntervalOneWeek EmailRoutingTimeseriesGroupSPFResponseMetaAggInterval = "ONE_WEEK"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaAggIntervalOneMonth EmailRoutingTimeseriesGroupSPFResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfo` - `Annotations []EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotation` - `DataSource EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailRoutingTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailRoutingTimeseriesGroupSPFResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailRoutingTimeseriesGroupSPFResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailRoutingTimeseriesGroupSPFResponseMetaNormalizationPercentage EmailRoutingTimeseriesGroupSPFResponseMetaNormalization = "PERCENTAGE"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaNormalizationMin0Max EmailRoutingTimeseriesGroupSPFResponseMetaNormalization = "MIN0_MAX"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaNormalizationMinMax EmailRoutingTimeseriesGroupSPFResponseMetaNormalization = "MIN_MAX"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaNormalizationRawValues EmailRoutingTimeseriesGroupSPFResponseMetaNormalization = "RAW_VALUES"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaNormalizationPercentageChange EmailRoutingTimeseriesGroupSPFResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaNormalizationRollingAverage EmailRoutingTimeseriesGroupSPFResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaNormalizationOverlappedPercentage EmailRoutingTimeseriesGroupSPFResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailRoutingTimeseriesGroupSPFResponseMetaNormalizationRatio EmailRoutingTimeseriesGroupSPFResponseMetaNormalization = "RATIO"` - `Units []EmailRoutingTimeseriesGroupSPFResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 RadarEmailSeries` - `Fail []string` - `None []string` - `Pass []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Routing.TimeseriesGroups.SPF(context.TODO(), radar.EmailRoutingTimeseriesGroupSPFParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 } ``` # Security ## Get email security summary by dimension `client.Radar.Email.Security.SummaryV2(ctx, dimension, query) (*EmailSecuritySummaryV2Response, error)` **get** `/radar/email/security/summary/{dimension}` Retrieves the distribution of email security metrics by the specified dimension. ### Parameters - `dimension EmailSecuritySummaryV2ParamsDimension` Specifies the attribute by which to group the results. - `const EmailSecuritySummaryV2ParamsDimensionSpam EmailSecuritySummaryV2ParamsDimension = "SPAM"` - `const EmailSecuritySummaryV2ParamsDimensionMalicious EmailSecuritySummaryV2ParamsDimension = "MALICIOUS"` - `const EmailSecuritySummaryV2ParamsDimensionSpoof EmailSecuritySummaryV2ParamsDimension = "SPOOF"` - `const EmailSecuritySummaryV2ParamsDimensionThreatCategory EmailSecuritySummaryV2ParamsDimension = "THREAT_CATEGORY"` - `const EmailSecuritySummaryV2ParamsDimensionARC EmailSecuritySummaryV2ParamsDimension = "ARC"` - `const EmailSecuritySummaryV2ParamsDimensionDKIM EmailSecuritySummaryV2ParamsDimension = "DKIM"` - `const EmailSecuritySummaryV2ParamsDimensionDMARC EmailSecuritySummaryV2ParamsDimension = "DMARC"` - `const EmailSecuritySummaryV2ParamsDimensionSPF EmailSecuritySummaryV2ParamsDimension = "SPF"` - `const EmailSecuritySummaryV2ParamsDimensionTLSVersion EmailSecuritySummaryV2ParamsDimension = "TLS_VERSION"` - `query EmailSecuritySummaryV2Params` - `ARC param.Field[[]EmailSecuritySummaryV2ParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecuritySummaryV2ParamsARCPass EmailSecuritySummaryV2ParamsARC = "PASS"` - `const EmailSecuritySummaryV2ParamsARCNone EmailSecuritySummaryV2ParamsARC = "NONE"` - `const EmailSecuritySummaryV2ParamsARCFail EmailSecuritySummaryV2ParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecuritySummaryV2ParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecuritySummaryV2ParamsDKIMPass EmailSecuritySummaryV2ParamsDKIM = "PASS"` - `const EmailSecuritySummaryV2ParamsDKIMNone EmailSecuritySummaryV2ParamsDKIM = "NONE"` - `const EmailSecuritySummaryV2ParamsDKIMFail EmailSecuritySummaryV2ParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecuritySummaryV2ParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecuritySummaryV2ParamsDMARCPass EmailSecuritySummaryV2ParamsDMARC = "PASS"` - `const EmailSecuritySummaryV2ParamsDMARCNone EmailSecuritySummaryV2ParamsDMARC = "NONE"` - `const EmailSecuritySummaryV2ParamsDMARCFail EmailSecuritySummaryV2ParamsDMARC = "FAIL"` - `Format param.Field[EmailSecuritySummaryV2ParamsFormat]` Format in which results will be returned. - `const EmailSecuritySummaryV2ParamsFormatJson EmailSecuritySummaryV2ParamsFormat = "JSON"` - `const EmailSecuritySummaryV2ParamsFormatCsv EmailSecuritySummaryV2ParamsFormat = "CSV"` - `LimitPerGroup param.Field[int64]` 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 param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecuritySummaryV2ParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecuritySummaryV2ParamsSPFPass EmailSecuritySummaryV2ParamsSPF = "PASS"` - `const EmailSecuritySummaryV2ParamsSPFNone EmailSecuritySummaryV2ParamsSPF = "NONE"` - `const EmailSecuritySummaryV2ParamsSPFFail EmailSecuritySummaryV2ParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecuritySummaryV2ParamsTLSVersion]` Filters results by TLS version. - `const EmailSecuritySummaryV2ParamsTLSVersionTlSv1_0 EmailSecuritySummaryV2ParamsTLSVersion = "TLSv1_0"` - `const EmailSecuritySummaryV2ParamsTLSVersionTlSv1_1 EmailSecuritySummaryV2ParamsTLSVersion = "TLSv1_1"` - `const EmailSecuritySummaryV2ParamsTLSVersionTlSv1_2 EmailSecuritySummaryV2ParamsTLSVersion = "TLSv1_2"` - `const EmailSecuritySummaryV2ParamsTLSVersionTlSv1_3 EmailSecuritySummaryV2ParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecuritySummaryV2Response struct{…}` - `Meta EmailSecuritySummaryV2ResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecuritySummaryV2ResponseMetaConfidenceInfo` - `Annotations []EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecuritySummaryV2ResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecuritySummaryV2ResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecuritySummaryV2ResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecuritySummaryV2ResponseMetaNormalizationPercentage EmailSecuritySummaryV2ResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecuritySummaryV2ResponseMetaNormalizationMin0Max EmailSecuritySummaryV2ResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecuritySummaryV2ResponseMetaNormalizationMinMax EmailSecuritySummaryV2ResponseMetaNormalization = "MIN_MAX"` - `const EmailSecuritySummaryV2ResponseMetaNormalizationRawValues EmailSecuritySummaryV2ResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecuritySummaryV2ResponseMetaNormalizationPercentageChange EmailSecuritySummaryV2ResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecuritySummaryV2ResponseMetaNormalizationRollingAverage EmailSecuritySummaryV2ResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecuritySummaryV2ResponseMetaNormalizationOverlappedPercentage EmailSecuritySummaryV2ResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecuritySummaryV2ResponseMetaNormalizationRatio EmailSecuritySummaryV2ResponseMetaNormalization = "RATIO"` - `Units []EmailSecuritySummaryV2ResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 map[string, string]` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.SummaryV2( context.TODO(), radar.EmailSecuritySummaryV2ParamsDimensionSpam, radar.EmailSecuritySummaryV2Params{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.TimeseriesGroupsV2(ctx, dimension, query) (*EmailSecurityTimeseriesGroupsV2Response, error)` **get** `/radar/email/security/timeseries_groups/{dimension}` Retrieves the distribution of email security metrics grouped by dimension over time. ### Parameters - `dimension EmailSecurityTimeseriesGroupsV2ParamsDimension` Specifies the attribute by which to group the results. - `const EmailSecurityTimeseriesGroupsV2ParamsDimensionSpam EmailSecurityTimeseriesGroupsV2ParamsDimension = "SPAM"` - `const EmailSecurityTimeseriesGroupsV2ParamsDimensionMalicious EmailSecurityTimeseriesGroupsV2ParamsDimension = "MALICIOUS"` - `const EmailSecurityTimeseriesGroupsV2ParamsDimensionSpoof EmailSecurityTimeseriesGroupsV2ParamsDimension = "SPOOF"` - `const EmailSecurityTimeseriesGroupsV2ParamsDimensionThreatCategory EmailSecurityTimeseriesGroupsV2ParamsDimension = "THREAT_CATEGORY"` - `const EmailSecurityTimeseriesGroupsV2ParamsDimensionARC EmailSecurityTimeseriesGroupsV2ParamsDimension = "ARC"` - `const EmailSecurityTimeseriesGroupsV2ParamsDimensionDKIM EmailSecurityTimeseriesGroupsV2ParamsDimension = "DKIM"` - `const EmailSecurityTimeseriesGroupsV2ParamsDimensionDMARC EmailSecurityTimeseriesGroupsV2ParamsDimension = "DMARC"` - `const EmailSecurityTimeseriesGroupsV2ParamsDimensionSPF EmailSecurityTimeseriesGroupsV2ParamsDimension = "SPF"` - `const EmailSecurityTimeseriesGroupsV2ParamsDimensionTLSVersion EmailSecurityTimeseriesGroupsV2ParamsDimension = "TLS_VERSION"` - `query EmailSecurityTimeseriesGroupsV2Params` - `AggInterval param.Field[EmailSecurityTimeseriesGroupsV2ParamsAggInterval]` 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. - `const EmailSecurityTimeseriesGroupsV2ParamsAggInterval15m EmailSecurityTimeseriesGroupsV2ParamsAggInterval = "15m"` - `const EmailSecurityTimeseriesGroupsV2ParamsAggInterval1h EmailSecurityTimeseriesGroupsV2ParamsAggInterval = "1h"` - `const EmailSecurityTimeseriesGroupsV2ParamsAggInterval1d EmailSecurityTimeseriesGroupsV2ParamsAggInterval = "1d"` - `const EmailSecurityTimeseriesGroupsV2ParamsAggInterval1w EmailSecurityTimeseriesGroupsV2ParamsAggInterval = "1w"` - `ARC param.Field[[]EmailSecurityTimeseriesGroupsV2ParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecurityTimeseriesGroupsV2ParamsARCPass EmailSecurityTimeseriesGroupsV2ParamsARC = "PASS"` - `const EmailSecurityTimeseriesGroupsV2ParamsARCNone EmailSecurityTimeseriesGroupsV2ParamsARC = "NONE"` - `const EmailSecurityTimeseriesGroupsV2ParamsARCFail EmailSecurityTimeseriesGroupsV2ParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTimeseriesGroupsV2ParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecurityTimeseriesGroupsV2ParamsDKIMPass EmailSecurityTimeseriesGroupsV2ParamsDKIM = "PASS"` - `const EmailSecurityTimeseriesGroupsV2ParamsDKIMNone EmailSecurityTimeseriesGroupsV2ParamsDKIM = "NONE"` - `const EmailSecurityTimeseriesGroupsV2ParamsDKIMFail EmailSecurityTimeseriesGroupsV2ParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecurityTimeseriesGroupsV2ParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecurityTimeseriesGroupsV2ParamsDMARCPass EmailSecurityTimeseriesGroupsV2ParamsDMARC = "PASS"` - `const EmailSecurityTimeseriesGroupsV2ParamsDMARCNone EmailSecurityTimeseriesGroupsV2ParamsDMARC = "NONE"` - `const EmailSecurityTimeseriesGroupsV2ParamsDMARCFail EmailSecurityTimeseriesGroupsV2ParamsDMARC = "FAIL"` - `Format param.Field[EmailSecurityTimeseriesGroupsV2ParamsFormat]` Format in which results will be returned. - `const EmailSecurityTimeseriesGroupsV2ParamsFormatJson EmailSecurityTimeseriesGroupsV2ParamsFormat = "JSON"` - `const EmailSecurityTimeseriesGroupsV2ParamsFormatCsv EmailSecurityTimeseriesGroupsV2ParamsFormat = "CSV"` - `LimitPerGroup param.Field[int64]` 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 param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecurityTimeseriesGroupsV2ParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecurityTimeseriesGroupsV2ParamsSPFPass EmailSecurityTimeseriesGroupsV2ParamsSPF = "PASS"` - `const EmailSecurityTimeseriesGroupsV2ParamsSPFNone EmailSecurityTimeseriesGroupsV2ParamsSPF = "NONE"` - `const EmailSecurityTimeseriesGroupsV2ParamsSPFFail EmailSecurityTimeseriesGroupsV2ParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecurityTimeseriesGroupsV2ParamsTLSVersion]` Filters results by TLS version. - `const EmailSecurityTimeseriesGroupsV2ParamsTLSVersionTlSv1_0 EmailSecurityTimeseriesGroupsV2ParamsTLSVersion = "TLSv1_0"` - `const EmailSecurityTimeseriesGroupsV2ParamsTLSVersionTlSv1_1 EmailSecurityTimeseriesGroupsV2ParamsTLSVersion = "TLSv1_1"` - `const EmailSecurityTimeseriesGroupsV2ParamsTLSVersionTlSv1_2 EmailSecurityTimeseriesGroupsV2ParamsTLSVersion = "TLSv1_2"` - `const EmailSecurityTimeseriesGroupsV2ParamsTLSVersionTlSv1_3 EmailSecurityTimeseriesGroupsV2ParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecurityTimeseriesGroupsV2Response struct{…}` - `Meta EmailSecurityTimeseriesGroupsV2ResponseMeta` Metadata for the results. - `AggInterval EmailSecurityTimeseriesGroupsV2ResponseMetaAggInterval` 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/). - `const EmailSecurityTimeseriesGroupsV2ResponseMetaAggIntervalFifteenMinutes EmailSecurityTimeseriesGroupsV2ResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaAggIntervalOneHour EmailSecurityTimeseriesGroupsV2ResponseMetaAggInterval = "ONE_HOUR"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaAggIntervalOneDay EmailSecurityTimeseriesGroupsV2ResponseMetaAggInterval = "ONE_DAY"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaAggIntervalOneWeek EmailSecurityTimeseriesGroupsV2ResponseMetaAggInterval = "ONE_WEEK"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaAggIntervalOneMonth EmailSecurityTimeseriesGroupsV2ResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTimeseriesGroupsV2ResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTimeseriesGroupsV2ResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTimeseriesGroupsV2ResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTimeseriesGroupsV2ResponseMetaNormalizationPercentage EmailSecurityTimeseriesGroupsV2ResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaNormalizationMin0Max EmailSecurityTimeseriesGroupsV2ResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaNormalizationMinMax EmailSecurityTimeseriesGroupsV2ResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaNormalizationRawValues EmailSecurityTimeseriesGroupsV2ResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaNormalizationPercentageChange EmailSecurityTimeseriesGroupsV2ResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaNormalizationRollingAverage EmailSecurityTimeseriesGroupsV2ResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaNormalizationOverlappedPercentage EmailSecurityTimeseriesGroupsV2ResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTimeseriesGroupsV2ResponseMetaNormalizationRatio EmailSecurityTimeseriesGroupsV2ResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTimeseriesGroupsV2ResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 EmailSecurityTimeseriesGroupsV2ResponseSerie0` - `Timestamps []Time` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.TimeseriesGroupsV2( context.TODO(), radar.EmailSecurityTimeseriesGroupsV2ParamsDimensionSpam, radar.EmailSecurityTimeseriesGroupsV2Params{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 } ``` # Top # TLDs ## Get top TLDs by email message volume `client.Radar.Email.Security.Top.TLDs.Get(ctx, query) (*EmailSecurityTopTLDGetResponse, error)` **get** `/radar/email/security/top/tlds` Retrieves the top TLDs by number of email messages. ### Parameters - `query EmailSecurityTopTLDGetParams` - `ARC param.Field[[]EmailSecurityTopTLDGetParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecurityTopTLDGetParamsARCPass EmailSecurityTopTLDGetParamsARC = "PASS"` - `const EmailSecurityTopTLDGetParamsARCNone EmailSecurityTopTLDGetParamsARC = "NONE"` - `const EmailSecurityTopTLDGetParamsARCFail EmailSecurityTopTLDGetParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTopTLDGetParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecurityTopTLDGetParamsDKIMPass EmailSecurityTopTLDGetParamsDKIM = "PASS"` - `const EmailSecurityTopTLDGetParamsDKIMNone EmailSecurityTopTLDGetParamsDKIM = "NONE"` - `const EmailSecurityTopTLDGetParamsDKIMFail EmailSecurityTopTLDGetParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecurityTopTLDGetParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecurityTopTLDGetParamsDMARCPass EmailSecurityTopTLDGetParamsDMARC = "PASS"` - `const EmailSecurityTopTLDGetParamsDMARCNone EmailSecurityTopTLDGetParamsDMARC = "NONE"` - `const EmailSecurityTopTLDGetParamsDMARCFail EmailSecurityTopTLDGetParamsDMARC = "FAIL"` - `Format param.Field[EmailSecurityTopTLDGetParamsFormat]` Format in which results will be returned. - `const EmailSecurityTopTLDGetParamsFormatJson EmailSecurityTopTLDGetParamsFormat = "JSON"` - `const EmailSecurityTopTLDGetParamsFormatCsv EmailSecurityTopTLDGetParamsFormat = "CSV"` - `Limit param.Field[int64]` Limits the number of objects returned in the response. - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecurityTopTLDGetParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecurityTopTLDGetParamsSPFPass EmailSecurityTopTLDGetParamsSPF = "PASS"` - `const EmailSecurityTopTLDGetParamsSPFNone EmailSecurityTopTLDGetParamsSPF = "NONE"` - `const EmailSecurityTopTLDGetParamsSPFFail EmailSecurityTopTLDGetParamsSPF = "FAIL"` - `TLDCategory param.Field[EmailSecurityTopTLDGetParamsTLDCategory]` Filters results by TLD category. - `const EmailSecurityTopTLDGetParamsTLDCategoryClassic EmailSecurityTopTLDGetParamsTLDCategory = "CLASSIC"` - `const EmailSecurityTopTLDGetParamsTLDCategoryCountry EmailSecurityTopTLDGetParamsTLDCategory = "COUNTRY"` - `TLSVersion param.Field[[]EmailSecurityTopTLDGetParamsTLSVersion]` Filters results by TLS version. - `const EmailSecurityTopTLDGetParamsTLSVersionTlSv1_0 EmailSecurityTopTLDGetParamsTLSVersion = "TLSv1_0"` - `const EmailSecurityTopTLDGetParamsTLSVersionTlSv1_1 EmailSecurityTopTLDGetParamsTLSVersion = "TLSv1_1"` - `const EmailSecurityTopTLDGetParamsTLSVersionTlSv1_2 EmailSecurityTopTLDGetParamsTLSVersion = "TLSv1_2"` - `const EmailSecurityTopTLDGetParamsTLSVersionTlSv1_3 EmailSecurityTopTLDGetParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecurityTopTLDGetResponse struct{…}` - `Meta EmailSecurityTopTLDGetResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecurityTopTLDGetResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTopTLDGetResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTopTLDGetResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTopTLDGetResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTopTLDGetResponseMetaNormalizationPercentage EmailSecurityTopTLDGetResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTopTLDGetResponseMetaNormalizationMin0Max EmailSecurityTopTLDGetResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTopTLDGetResponseMetaNormalizationMinMax EmailSecurityTopTLDGetResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTopTLDGetResponseMetaNormalizationRawValues EmailSecurityTopTLDGetResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTopTLDGetResponseMetaNormalizationPercentageChange EmailSecurityTopTLDGetResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTopTLDGetResponseMetaNormalizationRollingAverage EmailSecurityTopTLDGetResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTopTLDGetResponseMetaNormalizationOverlappedPercentage EmailSecurityTopTLDGetResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTopTLDGetResponseMetaNormalizationRatio EmailSecurityTopTLDGetResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTopTLDGetResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Top0 []EmailSecurityTopTLDGetResponseTop0` - `Name string` - `Value string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) tld, err := client.Radar.Email.Security.Top.TLDs.Get(context.TODO(), radar.EmailSecurityTopTLDGetParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 } ``` # Malicious ## Get top TLDs by email malicious classification `client.Radar.Email.Security.Top.TLDs.Malicious.Get(ctx, malicious, query) (*EmailSecurityTopTLDMaliciousGetResponse, error)` **get** `/radar/email/security/top/tlds/malicious/{malicious}` Retrieves the top TLDs by emails classified as malicious or not. ### Parameters - `malicious EmailSecurityTopTLDMaliciousGetParamsMalicious` Malicious classification. - `const EmailSecurityTopTLDMaliciousGetParamsMaliciousMalicious EmailSecurityTopTLDMaliciousGetParamsMalicious = "MALICIOUS"` - `const EmailSecurityTopTLDMaliciousGetParamsMaliciousNotMalicious EmailSecurityTopTLDMaliciousGetParamsMalicious = "NOT_MALICIOUS"` - `query EmailSecurityTopTLDMaliciousGetParams` - `ARC param.Field[[]EmailSecurityTopTLDMaliciousGetParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecurityTopTLDMaliciousGetParamsARCPass EmailSecurityTopTLDMaliciousGetParamsARC = "PASS"` - `const EmailSecurityTopTLDMaliciousGetParamsARCNone EmailSecurityTopTLDMaliciousGetParamsARC = "NONE"` - `const EmailSecurityTopTLDMaliciousGetParamsARCFail EmailSecurityTopTLDMaliciousGetParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTopTLDMaliciousGetParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecurityTopTLDMaliciousGetParamsDKIMPass EmailSecurityTopTLDMaliciousGetParamsDKIM = "PASS"` - `const EmailSecurityTopTLDMaliciousGetParamsDKIMNone EmailSecurityTopTLDMaliciousGetParamsDKIM = "NONE"` - `const EmailSecurityTopTLDMaliciousGetParamsDKIMFail EmailSecurityTopTLDMaliciousGetParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecurityTopTLDMaliciousGetParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecurityTopTLDMaliciousGetParamsDMARCPass EmailSecurityTopTLDMaliciousGetParamsDMARC = "PASS"` - `const EmailSecurityTopTLDMaliciousGetParamsDMARCNone EmailSecurityTopTLDMaliciousGetParamsDMARC = "NONE"` - `const EmailSecurityTopTLDMaliciousGetParamsDMARCFail EmailSecurityTopTLDMaliciousGetParamsDMARC = "FAIL"` - `Format param.Field[EmailSecurityTopTLDMaliciousGetParamsFormat]` Format in which results will be returned. - `const EmailSecurityTopTLDMaliciousGetParamsFormatJson EmailSecurityTopTLDMaliciousGetParamsFormat = "JSON"` - `const EmailSecurityTopTLDMaliciousGetParamsFormatCsv EmailSecurityTopTLDMaliciousGetParamsFormat = "CSV"` - `Limit param.Field[int64]` Limits the number of objects returned in the response. - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecurityTopTLDMaliciousGetParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecurityTopTLDMaliciousGetParamsSPFPass EmailSecurityTopTLDMaliciousGetParamsSPF = "PASS"` - `const EmailSecurityTopTLDMaliciousGetParamsSPFNone EmailSecurityTopTLDMaliciousGetParamsSPF = "NONE"` - `const EmailSecurityTopTLDMaliciousGetParamsSPFFail EmailSecurityTopTLDMaliciousGetParamsSPF = "FAIL"` - `TLDCategory param.Field[EmailSecurityTopTLDMaliciousGetParamsTLDCategory]` Filters results by TLD category. - `const EmailSecurityTopTLDMaliciousGetParamsTLDCategoryClassic EmailSecurityTopTLDMaliciousGetParamsTLDCategory = "CLASSIC"` - `const EmailSecurityTopTLDMaliciousGetParamsTLDCategoryCountry EmailSecurityTopTLDMaliciousGetParamsTLDCategory = "COUNTRY"` - `TLSVersion param.Field[[]EmailSecurityTopTLDMaliciousGetParamsTLSVersion]` Filters results by TLS version. - `const EmailSecurityTopTLDMaliciousGetParamsTLSVersionTlSv1_0 EmailSecurityTopTLDMaliciousGetParamsTLSVersion = "TLSv1_0"` - `const EmailSecurityTopTLDMaliciousGetParamsTLSVersionTlSv1_1 EmailSecurityTopTLDMaliciousGetParamsTLSVersion = "TLSv1_1"` - `const EmailSecurityTopTLDMaliciousGetParamsTLSVersionTlSv1_2 EmailSecurityTopTLDMaliciousGetParamsTLSVersion = "TLSv1_2"` - `const EmailSecurityTopTLDMaliciousGetParamsTLSVersionTlSv1_3 EmailSecurityTopTLDMaliciousGetParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecurityTopTLDMaliciousGetResponse struct{…}` - `Meta EmailSecurityTopTLDMaliciousGetResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTopTLDMaliciousGetResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTopTLDMaliciousGetResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTopTLDMaliciousGetResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTopTLDMaliciousGetResponseMetaNormalizationPercentage EmailSecurityTopTLDMaliciousGetResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaNormalizationMin0Max EmailSecurityTopTLDMaliciousGetResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaNormalizationMinMax EmailSecurityTopTLDMaliciousGetResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaNormalizationRawValues EmailSecurityTopTLDMaliciousGetResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaNormalizationPercentageChange EmailSecurityTopTLDMaliciousGetResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaNormalizationRollingAverage EmailSecurityTopTLDMaliciousGetResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaNormalizationOverlappedPercentage EmailSecurityTopTLDMaliciousGetResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTopTLDMaliciousGetResponseMetaNormalizationRatio EmailSecurityTopTLDMaliciousGetResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTopTLDMaliciousGetResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Top0 []EmailSecurityTopTLDMaliciousGetResponseTop0` - `Name string` - `Value string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) malicious, err := client.Radar.Email.Security.Top.TLDs.Malicious.Get( context.TODO(), radar.EmailSecurityTopTLDMaliciousGetParamsMaliciousMalicious, radar.EmailSecurityTopTLDMaliciousGetParams{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 } ``` # Spam ## Get top TLDs by email spam classification `client.Radar.Email.Security.Top.TLDs.Spam.Get(ctx, spam, query) (*EmailSecurityTopTLDSpamGetResponse, error)` **get** `/radar/email/security/top/tlds/spam/{spam}` Retrieves the top TLDs by emails classified as spam or not. ### Parameters - `spam EmailSecurityTopTLDSpamGetParamsSpam` Spam classification. - `const EmailSecurityTopTLDSpamGetParamsSpamSpam EmailSecurityTopTLDSpamGetParamsSpam = "SPAM"` - `const EmailSecurityTopTLDSpamGetParamsSpamNotSpam EmailSecurityTopTLDSpamGetParamsSpam = "NOT_SPAM"` - `query EmailSecurityTopTLDSpamGetParams` - `ARC param.Field[[]EmailSecurityTopTLDSpamGetParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecurityTopTLDSpamGetParamsARCPass EmailSecurityTopTLDSpamGetParamsARC = "PASS"` - `const EmailSecurityTopTLDSpamGetParamsARCNone EmailSecurityTopTLDSpamGetParamsARC = "NONE"` - `const EmailSecurityTopTLDSpamGetParamsARCFail EmailSecurityTopTLDSpamGetParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTopTLDSpamGetParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecurityTopTLDSpamGetParamsDKIMPass EmailSecurityTopTLDSpamGetParamsDKIM = "PASS"` - `const EmailSecurityTopTLDSpamGetParamsDKIMNone EmailSecurityTopTLDSpamGetParamsDKIM = "NONE"` - `const EmailSecurityTopTLDSpamGetParamsDKIMFail EmailSecurityTopTLDSpamGetParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecurityTopTLDSpamGetParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecurityTopTLDSpamGetParamsDMARCPass EmailSecurityTopTLDSpamGetParamsDMARC = "PASS"` - `const EmailSecurityTopTLDSpamGetParamsDMARCNone EmailSecurityTopTLDSpamGetParamsDMARC = "NONE"` - `const EmailSecurityTopTLDSpamGetParamsDMARCFail EmailSecurityTopTLDSpamGetParamsDMARC = "FAIL"` - `Format param.Field[EmailSecurityTopTLDSpamGetParamsFormat]` Format in which results will be returned. - `const EmailSecurityTopTLDSpamGetParamsFormatJson EmailSecurityTopTLDSpamGetParamsFormat = "JSON"` - `const EmailSecurityTopTLDSpamGetParamsFormatCsv EmailSecurityTopTLDSpamGetParamsFormat = "CSV"` - `Limit param.Field[int64]` Limits the number of objects returned in the response. - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecurityTopTLDSpamGetParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecurityTopTLDSpamGetParamsSPFPass EmailSecurityTopTLDSpamGetParamsSPF = "PASS"` - `const EmailSecurityTopTLDSpamGetParamsSPFNone EmailSecurityTopTLDSpamGetParamsSPF = "NONE"` - `const EmailSecurityTopTLDSpamGetParamsSPFFail EmailSecurityTopTLDSpamGetParamsSPF = "FAIL"` - `TLDCategory param.Field[EmailSecurityTopTLDSpamGetParamsTLDCategory]` Filters results by TLD category. - `const EmailSecurityTopTLDSpamGetParamsTLDCategoryClassic EmailSecurityTopTLDSpamGetParamsTLDCategory = "CLASSIC"` - `const EmailSecurityTopTLDSpamGetParamsTLDCategoryCountry EmailSecurityTopTLDSpamGetParamsTLDCategory = "COUNTRY"` - `TLSVersion param.Field[[]EmailSecurityTopTLDSpamGetParamsTLSVersion]` Filters results by TLS version. - `const EmailSecurityTopTLDSpamGetParamsTLSVersionTlSv1_0 EmailSecurityTopTLDSpamGetParamsTLSVersion = "TLSv1_0"` - `const EmailSecurityTopTLDSpamGetParamsTLSVersionTlSv1_1 EmailSecurityTopTLDSpamGetParamsTLSVersion = "TLSv1_1"` - `const EmailSecurityTopTLDSpamGetParamsTLSVersionTlSv1_2 EmailSecurityTopTLDSpamGetParamsTLSVersion = "TLSv1_2"` - `const EmailSecurityTopTLDSpamGetParamsTLSVersionTlSv1_3 EmailSecurityTopTLDSpamGetParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecurityTopTLDSpamGetResponse struct{…}` - `Meta EmailSecurityTopTLDSpamGetResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTopTLDSpamGetResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTopTLDSpamGetResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTopTLDSpamGetResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTopTLDSpamGetResponseMetaNormalizationPercentage EmailSecurityTopTLDSpamGetResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTopTLDSpamGetResponseMetaNormalizationMin0Max EmailSecurityTopTLDSpamGetResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTopTLDSpamGetResponseMetaNormalizationMinMax EmailSecurityTopTLDSpamGetResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTopTLDSpamGetResponseMetaNormalizationRawValues EmailSecurityTopTLDSpamGetResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTopTLDSpamGetResponseMetaNormalizationPercentageChange EmailSecurityTopTLDSpamGetResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTopTLDSpamGetResponseMetaNormalizationRollingAverage EmailSecurityTopTLDSpamGetResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTopTLDSpamGetResponseMetaNormalizationOverlappedPercentage EmailSecurityTopTLDSpamGetResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTopTLDSpamGetResponseMetaNormalizationRatio EmailSecurityTopTLDSpamGetResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTopTLDSpamGetResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Top0 []EmailSecurityTopTLDSpamGetResponseTop0` - `Name string` - `Value string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) spam, err := client.Radar.Email.Security.Top.TLDs.Spam.Get( context.TODO(), radar.EmailSecurityTopTLDSpamGetParamsSpamSpam, radar.EmailSecurityTopTLDSpamGetParams{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 } ``` # Spoof ## Get top TLDs by email spoof classification `client.Radar.Email.Security.Top.TLDs.Spoof.Get(ctx, spoof, query) (*EmailSecurityTopTLDSpoofGetResponse, error)` **get** `/radar/email/security/top/tlds/spoof/{spoof}` Retrieves the top TLDs by emails classified as spoof or not. ### Parameters - `spoof EmailSecurityTopTLDSpoofGetParamsSpoof` Spoof classification. - `const EmailSecurityTopTLDSpoofGetParamsSpoofSpoof EmailSecurityTopTLDSpoofGetParamsSpoof = "SPOOF"` - `const EmailSecurityTopTLDSpoofGetParamsSpoofNotSpoof EmailSecurityTopTLDSpoofGetParamsSpoof = "NOT_SPOOF"` - `query EmailSecurityTopTLDSpoofGetParams` - `ARC param.Field[[]EmailSecurityTopTLDSpoofGetParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecurityTopTLDSpoofGetParamsARCPass EmailSecurityTopTLDSpoofGetParamsARC = "PASS"` - `const EmailSecurityTopTLDSpoofGetParamsARCNone EmailSecurityTopTLDSpoofGetParamsARC = "NONE"` - `const EmailSecurityTopTLDSpoofGetParamsARCFail EmailSecurityTopTLDSpoofGetParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTopTLDSpoofGetParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecurityTopTLDSpoofGetParamsDKIMPass EmailSecurityTopTLDSpoofGetParamsDKIM = "PASS"` - `const EmailSecurityTopTLDSpoofGetParamsDKIMNone EmailSecurityTopTLDSpoofGetParamsDKIM = "NONE"` - `const EmailSecurityTopTLDSpoofGetParamsDKIMFail EmailSecurityTopTLDSpoofGetParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecurityTopTLDSpoofGetParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecurityTopTLDSpoofGetParamsDMARCPass EmailSecurityTopTLDSpoofGetParamsDMARC = "PASS"` - `const EmailSecurityTopTLDSpoofGetParamsDMARCNone EmailSecurityTopTLDSpoofGetParamsDMARC = "NONE"` - `const EmailSecurityTopTLDSpoofGetParamsDMARCFail EmailSecurityTopTLDSpoofGetParamsDMARC = "FAIL"` - `Format param.Field[EmailSecurityTopTLDSpoofGetParamsFormat]` Format in which results will be returned. - `const EmailSecurityTopTLDSpoofGetParamsFormatJson EmailSecurityTopTLDSpoofGetParamsFormat = "JSON"` - `const EmailSecurityTopTLDSpoofGetParamsFormatCsv EmailSecurityTopTLDSpoofGetParamsFormat = "CSV"` - `Limit param.Field[int64]` Limits the number of objects returned in the response. - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecurityTopTLDSpoofGetParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecurityTopTLDSpoofGetParamsSPFPass EmailSecurityTopTLDSpoofGetParamsSPF = "PASS"` - `const EmailSecurityTopTLDSpoofGetParamsSPFNone EmailSecurityTopTLDSpoofGetParamsSPF = "NONE"` - `const EmailSecurityTopTLDSpoofGetParamsSPFFail EmailSecurityTopTLDSpoofGetParamsSPF = "FAIL"` - `TLDCategory param.Field[EmailSecurityTopTLDSpoofGetParamsTLDCategory]` Filters results by TLD category. - `const EmailSecurityTopTLDSpoofGetParamsTLDCategoryClassic EmailSecurityTopTLDSpoofGetParamsTLDCategory = "CLASSIC"` - `const EmailSecurityTopTLDSpoofGetParamsTLDCategoryCountry EmailSecurityTopTLDSpoofGetParamsTLDCategory = "COUNTRY"` - `TLSVersion param.Field[[]EmailSecurityTopTLDSpoofGetParamsTLSVersion]` Filters results by TLS version. - `const EmailSecurityTopTLDSpoofGetParamsTLSVersionTlSv1_0 EmailSecurityTopTLDSpoofGetParamsTLSVersion = "TLSv1_0"` - `const EmailSecurityTopTLDSpoofGetParamsTLSVersionTlSv1_1 EmailSecurityTopTLDSpoofGetParamsTLSVersion = "TLSv1_1"` - `const EmailSecurityTopTLDSpoofGetParamsTLSVersionTlSv1_2 EmailSecurityTopTLDSpoofGetParamsTLSVersion = "TLSv1_2"` - `const EmailSecurityTopTLDSpoofGetParamsTLSVersionTlSv1_3 EmailSecurityTopTLDSpoofGetParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecurityTopTLDSpoofGetResponse struct{…}` - `Meta EmailSecurityTopTLDSpoofGetResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTopTLDSpoofGetResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTopTLDSpoofGetResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTopTLDSpoofGetResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTopTLDSpoofGetResponseMetaNormalizationPercentage EmailSecurityTopTLDSpoofGetResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTopTLDSpoofGetResponseMetaNormalizationMin0Max EmailSecurityTopTLDSpoofGetResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTopTLDSpoofGetResponseMetaNormalizationMinMax EmailSecurityTopTLDSpoofGetResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTopTLDSpoofGetResponseMetaNormalizationRawValues EmailSecurityTopTLDSpoofGetResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTopTLDSpoofGetResponseMetaNormalizationPercentageChange EmailSecurityTopTLDSpoofGetResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTopTLDSpoofGetResponseMetaNormalizationRollingAverage EmailSecurityTopTLDSpoofGetResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTopTLDSpoofGetResponseMetaNormalizationOverlappedPercentage EmailSecurityTopTLDSpoofGetResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTopTLDSpoofGetResponseMetaNormalizationRatio EmailSecurityTopTLDSpoofGetResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTopTLDSpoofGetResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Top0 []EmailSecurityTopTLDSpoofGetResponseTop0` - `Name string` - `Value string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) spoof, err := client.Radar.Email.Security.Top.TLDs.Spoof.Get( context.TODO(), radar.EmailSecurityTopTLDSpoofGetParamsSpoofSpoof, radar.EmailSecurityTopTLDSpoofGetParams{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 } ``` # Summary ## Get email ARC validation summary `client.Radar.Email.Security.Summary.ARC(ctx, query) (*EmailSecuritySummaryARCResponse, error)` **get** `/radar/email/security/summary/arc` Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation. ### Parameters - `query EmailSecuritySummaryARCParams` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecuritySummaryARCParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecuritySummaryARCParamsDKIMPass EmailSecuritySummaryARCParamsDKIM = "PASS"` - `const EmailSecuritySummaryARCParamsDKIMNone EmailSecuritySummaryARCParamsDKIM = "NONE"` - `const EmailSecuritySummaryARCParamsDKIMFail EmailSecuritySummaryARCParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecuritySummaryARCParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecuritySummaryARCParamsDMARCPass EmailSecuritySummaryARCParamsDMARC = "PASS"` - `const EmailSecuritySummaryARCParamsDMARCNone EmailSecuritySummaryARCParamsDMARC = "NONE"` - `const EmailSecuritySummaryARCParamsDMARCFail EmailSecuritySummaryARCParamsDMARC = "FAIL"` - `Format param.Field[EmailSecuritySummaryARCParamsFormat]` Format in which results will be returned. - `const EmailSecuritySummaryARCParamsFormatJson EmailSecuritySummaryARCParamsFormat = "JSON"` - `const EmailSecuritySummaryARCParamsFormatCsv EmailSecuritySummaryARCParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecuritySummaryARCParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecuritySummaryARCParamsSPFPass EmailSecuritySummaryARCParamsSPF = "PASS"` - `const EmailSecuritySummaryARCParamsSPFNone EmailSecuritySummaryARCParamsSPF = "NONE"` - `const EmailSecuritySummaryARCParamsSPFFail EmailSecuritySummaryARCParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecuritySummaryARCParamsTLSVersion]` Filters results by TLS version. - `const EmailSecuritySummaryARCParamsTLSVersionTlSv1_0 EmailSecuritySummaryARCParamsTLSVersion = "TLSv1_0"` - `const EmailSecuritySummaryARCParamsTLSVersionTlSv1_1 EmailSecuritySummaryARCParamsTLSVersion = "TLSv1_1"` - `const EmailSecuritySummaryARCParamsTLSVersionTlSv1_2 EmailSecuritySummaryARCParamsTLSVersion = "TLSv1_2"` - `const EmailSecuritySummaryARCParamsTLSVersionTlSv1_3 EmailSecuritySummaryARCParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecuritySummaryARCResponse struct{…}` - `Meta EmailSecuritySummaryARCResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecuritySummaryARCResponseMetaConfidenceInfo` - `Annotations []EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecuritySummaryARCResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecuritySummaryARCResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecuritySummaryARCResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecuritySummaryARCResponseMetaNormalizationPercentage EmailSecuritySummaryARCResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecuritySummaryARCResponseMetaNormalizationMin0Max EmailSecuritySummaryARCResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecuritySummaryARCResponseMetaNormalizationMinMax EmailSecuritySummaryARCResponseMetaNormalization = "MIN_MAX"` - `const EmailSecuritySummaryARCResponseMetaNormalizationRawValues EmailSecuritySummaryARCResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecuritySummaryARCResponseMetaNormalizationPercentageChange EmailSecuritySummaryARCResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecuritySummaryARCResponseMetaNormalizationRollingAverage EmailSecuritySummaryARCResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecuritySummaryARCResponseMetaNormalizationOverlappedPercentage EmailSecuritySummaryARCResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecuritySummaryARCResponseMetaNormalizationRatio EmailSecuritySummaryARCResponseMetaNormalization = "RATIO"` - `Units []EmailSecuritySummaryARCResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 RadarEmailSummary` - `Fail string` A numeric string. - `None string` A numeric string. - `Pass string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.Summary.ARC(context.TODO(), radar.EmailSecuritySummaryARCParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.Summary.DKIM(ctx, query) (*EmailSecuritySummaryDKIMResponse, error)` **get** `/radar/email/security/summary/dkim` Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation. ### Parameters - `query EmailSecuritySummaryDKIMParams` - `ARC param.Field[[]EmailSecuritySummaryDKIMParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecuritySummaryDKIMParamsARCPass EmailSecuritySummaryDKIMParamsARC = "PASS"` - `const EmailSecuritySummaryDKIMParamsARCNone EmailSecuritySummaryDKIMParamsARC = "NONE"` - `const EmailSecuritySummaryDKIMParamsARCFail EmailSecuritySummaryDKIMParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecuritySummaryDKIMParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecuritySummaryDKIMParamsDMARCPass EmailSecuritySummaryDKIMParamsDMARC = "PASS"` - `const EmailSecuritySummaryDKIMParamsDMARCNone EmailSecuritySummaryDKIMParamsDMARC = "NONE"` - `const EmailSecuritySummaryDKIMParamsDMARCFail EmailSecuritySummaryDKIMParamsDMARC = "FAIL"` - `Format param.Field[EmailSecuritySummaryDKIMParamsFormat]` Format in which results will be returned. - `const EmailSecuritySummaryDKIMParamsFormatJson EmailSecuritySummaryDKIMParamsFormat = "JSON"` - `const EmailSecuritySummaryDKIMParamsFormatCsv EmailSecuritySummaryDKIMParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecuritySummaryDKIMParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecuritySummaryDKIMParamsSPFPass EmailSecuritySummaryDKIMParamsSPF = "PASS"` - `const EmailSecuritySummaryDKIMParamsSPFNone EmailSecuritySummaryDKIMParamsSPF = "NONE"` - `const EmailSecuritySummaryDKIMParamsSPFFail EmailSecuritySummaryDKIMParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecuritySummaryDKIMParamsTLSVersion]` Filters results by TLS version. - `const EmailSecuritySummaryDKIMParamsTLSVersionTlSv1_0 EmailSecuritySummaryDKIMParamsTLSVersion = "TLSv1_0"` - `const EmailSecuritySummaryDKIMParamsTLSVersionTlSv1_1 EmailSecuritySummaryDKIMParamsTLSVersion = "TLSv1_1"` - `const EmailSecuritySummaryDKIMParamsTLSVersionTlSv1_2 EmailSecuritySummaryDKIMParamsTLSVersion = "TLSv1_2"` - `const EmailSecuritySummaryDKIMParamsTLSVersionTlSv1_3 EmailSecuritySummaryDKIMParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecuritySummaryDKIMResponse struct{…}` - `Meta EmailSecuritySummaryDKIMResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecuritySummaryDKIMResponseMetaConfidenceInfo` - `Annotations []EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecuritySummaryDKIMResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecuritySummaryDKIMResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecuritySummaryDKIMResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecuritySummaryDKIMResponseMetaNormalizationPercentage EmailSecuritySummaryDKIMResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecuritySummaryDKIMResponseMetaNormalizationMin0Max EmailSecuritySummaryDKIMResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecuritySummaryDKIMResponseMetaNormalizationMinMax EmailSecuritySummaryDKIMResponseMetaNormalization = "MIN_MAX"` - `const EmailSecuritySummaryDKIMResponseMetaNormalizationRawValues EmailSecuritySummaryDKIMResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecuritySummaryDKIMResponseMetaNormalizationPercentageChange EmailSecuritySummaryDKIMResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecuritySummaryDKIMResponseMetaNormalizationRollingAverage EmailSecuritySummaryDKIMResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecuritySummaryDKIMResponseMetaNormalizationOverlappedPercentage EmailSecuritySummaryDKIMResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecuritySummaryDKIMResponseMetaNormalizationRatio EmailSecuritySummaryDKIMResponseMetaNormalization = "RATIO"` - `Units []EmailSecuritySummaryDKIMResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 RadarEmailSummary` - `Fail string` A numeric string. - `None string` A numeric string. - `Pass string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.Summary.DKIM(context.TODO(), radar.EmailSecuritySummaryDKIMParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.Summary.DMARC(ctx, query) (*EmailSecuritySummaryDMARCResponse, error)` **get** `/radar/email/security/summary/dmarc` Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation. ### Parameters - `query EmailSecuritySummaryDMARCParams` - `ARC param.Field[[]EmailSecuritySummaryDMARCParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecuritySummaryDMARCParamsARCPass EmailSecuritySummaryDMARCParamsARC = "PASS"` - `const EmailSecuritySummaryDMARCParamsARCNone EmailSecuritySummaryDMARCParamsARC = "NONE"` - `const EmailSecuritySummaryDMARCParamsARCFail EmailSecuritySummaryDMARCParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecuritySummaryDMARCParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecuritySummaryDMARCParamsDKIMPass EmailSecuritySummaryDMARCParamsDKIM = "PASS"` - `const EmailSecuritySummaryDMARCParamsDKIMNone EmailSecuritySummaryDMARCParamsDKIM = "NONE"` - `const EmailSecuritySummaryDMARCParamsDKIMFail EmailSecuritySummaryDMARCParamsDKIM = "FAIL"` - `Format param.Field[EmailSecuritySummaryDMARCParamsFormat]` Format in which results will be returned. - `const EmailSecuritySummaryDMARCParamsFormatJson EmailSecuritySummaryDMARCParamsFormat = "JSON"` - `const EmailSecuritySummaryDMARCParamsFormatCsv EmailSecuritySummaryDMARCParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecuritySummaryDMARCParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecuritySummaryDMARCParamsSPFPass EmailSecuritySummaryDMARCParamsSPF = "PASS"` - `const EmailSecuritySummaryDMARCParamsSPFNone EmailSecuritySummaryDMARCParamsSPF = "NONE"` - `const EmailSecuritySummaryDMARCParamsSPFFail EmailSecuritySummaryDMARCParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecuritySummaryDMARCParamsTLSVersion]` Filters results by TLS version. - `const EmailSecuritySummaryDMARCParamsTLSVersionTlSv1_0 EmailSecuritySummaryDMARCParamsTLSVersion = "TLSv1_0"` - `const EmailSecuritySummaryDMARCParamsTLSVersionTlSv1_1 EmailSecuritySummaryDMARCParamsTLSVersion = "TLSv1_1"` - `const EmailSecuritySummaryDMARCParamsTLSVersionTlSv1_2 EmailSecuritySummaryDMARCParamsTLSVersion = "TLSv1_2"` - `const EmailSecuritySummaryDMARCParamsTLSVersionTlSv1_3 EmailSecuritySummaryDMARCParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecuritySummaryDMARCResponse struct{…}` - `Meta EmailSecuritySummaryDMARCResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecuritySummaryDMARCResponseMetaConfidenceInfo` - `Annotations []EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecuritySummaryDMARCResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecuritySummaryDMARCResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecuritySummaryDMARCResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecuritySummaryDMARCResponseMetaNormalizationPercentage EmailSecuritySummaryDMARCResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecuritySummaryDMARCResponseMetaNormalizationMin0Max EmailSecuritySummaryDMARCResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecuritySummaryDMARCResponseMetaNormalizationMinMax EmailSecuritySummaryDMARCResponseMetaNormalization = "MIN_MAX"` - `const EmailSecuritySummaryDMARCResponseMetaNormalizationRawValues EmailSecuritySummaryDMARCResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecuritySummaryDMARCResponseMetaNormalizationPercentageChange EmailSecuritySummaryDMARCResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecuritySummaryDMARCResponseMetaNormalizationRollingAverage EmailSecuritySummaryDMARCResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecuritySummaryDMARCResponseMetaNormalizationOverlappedPercentage EmailSecuritySummaryDMARCResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecuritySummaryDMARCResponseMetaNormalizationRatio EmailSecuritySummaryDMARCResponseMetaNormalization = "RATIO"` - `Units []EmailSecuritySummaryDMARCResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 RadarEmailSummary` - `Fail string` A numeric string. - `None string` A numeric string. - `Pass string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.Summary.DMARC(context.TODO(), radar.EmailSecuritySummaryDMARCParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.Summary.Malicious(ctx, query) (*EmailSecuritySummaryMaliciousResponse, error)` **get** `/radar/email/security/summary/malicious` Retrieves the distribution of emails by malicious classification. ### Parameters - `query EmailSecuritySummaryMaliciousParams` - `ARC param.Field[[]EmailSecuritySummaryMaliciousParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecuritySummaryMaliciousParamsARCPass EmailSecuritySummaryMaliciousParamsARC = "PASS"` - `const EmailSecuritySummaryMaliciousParamsARCNone EmailSecuritySummaryMaliciousParamsARC = "NONE"` - `const EmailSecuritySummaryMaliciousParamsARCFail EmailSecuritySummaryMaliciousParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecuritySummaryMaliciousParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecuritySummaryMaliciousParamsDKIMPass EmailSecuritySummaryMaliciousParamsDKIM = "PASS"` - `const EmailSecuritySummaryMaliciousParamsDKIMNone EmailSecuritySummaryMaliciousParamsDKIM = "NONE"` - `const EmailSecuritySummaryMaliciousParamsDKIMFail EmailSecuritySummaryMaliciousParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecuritySummaryMaliciousParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecuritySummaryMaliciousParamsDMARCPass EmailSecuritySummaryMaliciousParamsDMARC = "PASS"` - `const EmailSecuritySummaryMaliciousParamsDMARCNone EmailSecuritySummaryMaliciousParamsDMARC = "NONE"` - `const EmailSecuritySummaryMaliciousParamsDMARCFail EmailSecuritySummaryMaliciousParamsDMARC = "FAIL"` - `Format param.Field[EmailSecuritySummaryMaliciousParamsFormat]` Format in which results will be returned. - `const EmailSecuritySummaryMaliciousParamsFormatJson EmailSecuritySummaryMaliciousParamsFormat = "JSON"` - `const EmailSecuritySummaryMaliciousParamsFormatCsv EmailSecuritySummaryMaliciousParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecuritySummaryMaliciousParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecuritySummaryMaliciousParamsSPFPass EmailSecuritySummaryMaliciousParamsSPF = "PASS"` - `const EmailSecuritySummaryMaliciousParamsSPFNone EmailSecuritySummaryMaliciousParamsSPF = "NONE"` - `const EmailSecuritySummaryMaliciousParamsSPFFail EmailSecuritySummaryMaliciousParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecuritySummaryMaliciousParamsTLSVersion]` Filters results by TLS version. - `const EmailSecuritySummaryMaliciousParamsTLSVersionTlSv1_0 EmailSecuritySummaryMaliciousParamsTLSVersion = "TLSv1_0"` - `const EmailSecuritySummaryMaliciousParamsTLSVersionTlSv1_1 EmailSecuritySummaryMaliciousParamsTLSVersion = "TLSv1_1"` - `const EmailSecuritySummaryMaliciousParamsTLSVersionTlSv1_2 EmailSecuritySummaryMaliciousParamsTLSVersion = "TLSv1_2"` - `const EmailSecuritySummaryMaliciousParamsTLSVersionTlSv1_3 EmailSecuritySummaryMaliciousParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecuritySummaryMaliciousResponse struct{…}` - `Meta EmailSecuritySummaryMaliciousResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecuritySummaryMaliciousResponseMetaConfidenceInfo` - `Annotations []EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecuritySummaryMaliciousResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecuritySummaryMaliciousResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecuritySummaryMaliciousResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecuritySummaryMaliciousResponseMetaNormalizationPercentage EmailSecuritySummaryMaliciousResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecuritySummaryMaliciousResponseMetaNormalizationMin0Max EmailSecuritySummaryMaliciousResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecuritySummaryMaliciousResponseMetaNormalizationMinMax EmailSecuritySummaryMaliciousResponseMetaNormalization = "MIN_MAX"` - `const EmailSecuritySummaryMaliciousResponseMetaNormalizationRawValues EmailSecuritySummaryMaliciousResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecuritySummaryMaliciousResponseMetaNormalizationPercentageChange EmailSecuritySummaryMaliciousResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecuritySummaryMaliciousResponseMetaNormalizationRollingAverage EmailSecuritySummaryMaliciousResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecuritySummaryMaliciousResponseMetaNormalizationOverlappedPercentage EmailSecuritySummaryMaliciousResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecuritySummaryMaliciousResponseMetaNormalizationRatio EmailSecuritySummaryMaliciousResponseMetaNormalization = "RATIO"` - `Units []EmailSecuritySummaryMaliciousResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 EmailSecuritySummaryMaliciousResponseSummary0` - `Malicious string` A numeric string. - `NotMalicious string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.Summary.Malicious(context.TODO(), radar.EmailSecuritySummaryMaliciousParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.Summary.Spam(ctx, query) (*EmailSecuritySummarySpamResponse, error)` **get** `/radar/email/security/summary/spam` Retrieves the proportion of emails by spam classification (spam vs. non-spam). ### Parameters - `query EmailSecuritySummarySpamParams` - `ARC param.Field[[]EmailSecuritySummarySpamParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecuritySummarySpamParamsARCPass EmailSecuritySummarySpamParamsARC = "PASS"` - `const EmailSecuritySummarySpamParamsARCNone EmailSecuritySummarySpamParamsARC = "NONE"` - `const EmailSecuritySummarySpamParamsARCFail EmailSecuritySummarySpamParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecuritySummarySpamParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecuritySummarySpamParamsDKIMPass EmailSecuritySummarySpamParamsDKIM = "PASS"` - `const EmailSecuritySummarySpamParamsDKIMNone EmailSecuritySummarySpamParamsDKIM = "NONE"` - `const EmailSecuritySummarySpamParamsDKIMFail EmailSecuritySummarySpamParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecuritySummarySpamParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecuritySummarySpamParamsDMARCPass EmailSecuritySummarySpamParamsDMARC = "PASS"` - `const EmailSecuritySummarySpamParamsDMARCNone EmailSecuritySummarySpamParamsDMARC = "NONE"` - `const EmailSecuritySummarySpamParamsDMARCFail EmailSecuritySummarySpamParamsDMARC = "FAIL"` - `Format param.Field[EmailSecuritySummarySpamParamsFormat]` Format in which results will be returned. - `const EmailSecuritySummarySpamParamsFormatJson EmailSecuritySummarySpamParamsFormat = "JSON"` - `const EmailSecuritySummarySpamParamsFormatCsv EmailSecuritySummarySpamParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecuritySummarySpamParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecuritySummarySpamParamsSPFPass EmailSecuritySummarySpamParamsSPF = "PASS"` - `const EmailSecuritySummarySpamParamsSPFNone EmailSecuritySummarySpamParamsSPF = "NONE"` - `const EmailSecuritySummarySpamParamsSPFFail EmailSecuritySummarySpamParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecuritySummarySpamParamsTLSVersion]` Filters results by TLS version. - `const EmailSecuritySummarySpamParamsTLSVersionTlSv1_0 EmailSecuritySummarySpamParamsTLSVersion = "TLSv1_0"` - `const EmailSecuritySummarySpamParamsTLSVersionTlSv1_1 EmailSecuritySummarySpamParamsTLSVersion = "TLSv1_1"` - `const EmailSecuritySummarySpamParamsTLSVersionTlSv1_2 EmailSecuritySummarySpamParamsTLSVersion = "TLSv1_2"` - `const EmailSecuritySummarySpamParamsTLSVersionTlSv1_3 EmailSecuritySummarySpamParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecuritySummarySpamResponse struct{…}` - `Meta EmailSecuritySummarySpamResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecuritySummarySpamResponseMetaConfidenceInfo` - `Annotations []EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecuritySummarySpamResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecuritySummarySpamResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecuritySummarySpamResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecuritySummarySpamResponseMetaNormalizationPercentage EmailSecuritySummarySpamResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecuritySummarySpamResponseMetaNormalizationMin0Max EmailSecuritySummarySpamResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecuritySummarySpamResponseMetaNormalizationMinMax EmailSecuritySummarySpamResponseMetaNormalization = "MIN_MAX"` - `const EmailSecuritySummarySpamResponseMetaNormalizationRawValues EmailSecuritySummarySpamResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecuritySummarySpamResponseMetaNormalizationPercentageChange EmailSecuritySummarySpamResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecuritySummarySpamResponseMetaNormalizationRollingAverage EmailSecuritySummarySpamResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecuritySummarySpamResponseMetaNormalizationOverlappedPercentage EmailSecuritySummarySpamResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecuritySummarySpamResponseMetaNormalizationRatio EmailSecuritySummarySpamResponseMetaNormalization = "RATIO"` - `Units []EmailSecuritySummarySpamResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 EmailSecuritySummarySpamResponseSummary0` - `NotSpam string` A numeric string. - `Spam string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.Summary.Spam(context.TODO(), radar.EmailSecuritySummarySpamParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.Summary.SPF(ctx, query) (*EmailSecuritySummarySPFResponse, error)` **get** `/radar/email/security/summary/spf` Retrieves the distribution of emails by SPF (Sender Policy Framework) validation. ### Parameters - `query EmailSecuritySummarySPFParams` - `ARC param.Field[[]EmailSecuritySummarySPFParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecuritySummarySPFParamsARCPass EmailSecuritySummarySPFParamsARC = "PASS"` - `const EmailSecuritySummarySPFParamsARCNone EmailSecuritySummarySPFParamsARC = "NONE"` - `const EmailSecuritySummarySPFParamsARCFail EmailSecuritySummarySPFParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecuritySummarySPFParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecuritySummarySPFParamsDKIMPass EmailSecuritySummarySPFParamsDKIM = "PASS"` - `const EmailSecuritySummarySPFParamsDKIMNone EmailSecuritySummarySPFParamsDKIM = "NONE"` - `const EmailSecuritySummarySPFParamsDKIMFail EmailSecuritySummarySPFParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecuritySummarySPFParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecuritySummarySPFParamsDMARCPass EmailSecuritySummarySPFParamsDMARC = "PASS"` - `const EmailSecuritySummarySPFParamsDMARCNone EmailSecuritySummarySPFParamsDMARC = "NONE"` - `const EmailSecuritySummarySPFParamsDMARCFail EmailSecuritySummarySPFParamsDMARC = "FAIL"` - `Format param.Field[EmailSecuritySummarySPFParamsFormat]` Format in which results will be returned. - `const EmailSecuritySummarySPFParamsFormatJson EmailSecuritySummarySPFParamsFormat = "JSON"` - `const EmailSecuritySummarySPFParamsFormatCsv EmailSecuritySummarySPFParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `TLSVersion param.Field[[]EmailSecuritySummarySPFParamsTLSVersion]` Filters results by TLS version. - `const EmailSecuritySummarySPFParamsTLSVersionTlSv1_0 EmailSecuritySummarySPFParamsTLSVersion = "TLSv1_0"` - `const EmailSecuritySummarySPFParamsTLSVersionTlSv1_1 EmailSecuritySummarySPFParamsTLSVersion = "TLSv1_1"` - `const EmailSecuritySummarySPFParamsTLSVersionTlSv1_2 EmailSecuritySummarySPFParamsTLSVersion = "TLSv1_2"` - `const EmailSecuritySummarySPFParamsTLSVersionTlSv1_3 EmailSecuritySummarySPFParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecuritySummarySPFResponse struct{…}` - `Meta EmailSecuritySummarySPFResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecuritySummarySPFResponseMetaConfidenceInfo` - `Annotations []EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecuritySummarySPFResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecuritySummarySPFResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecuritySummarySPFResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecuritySummarySPFResponseMetaNormalizationPercentage EmailSecuritySummarySPFResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecuritySummarySPFResponseMetaNormalizationMin0Max EmailSecuritySummarySPFResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecuritySummarySPFResponseMetaNormalizationMinMax EmailSecuritySummarySPFResponseMetaNormalization = "MIN_MAX"` - `const EmailSecuritySummarySPFResponseMetaNormalizationRawValues EmailSecuritySummarySPFResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecuritySummarySPFResponseMetaNormalizationPercentageChange EmailSecuritySummarySPFResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecuritySummarySPFResponseMetaNormalizationRollingAverage EmailSecuritySummarySPFResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecuritySummarySPFResponseMetaNormalizationOverlappedPercentage EmailSecuritySummarySPFResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecuritySummarySPFResponseMetaNormalizationRatio EmailSecuritySummarySPFResponseMetaNormalization = "RATIO"` - `Units []EmailSecuritySummarySPFResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 RadarEmailSummary` - `Fail string` A numeric string. - `None string` A numeric string. - `Pass string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.Summary.SPF(context.TODO(), radar.EmailSecuritySummarySPFParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.Summary.ThreatCategory(ctx, query) (*EmailSecuritySummaryThreatCategoryResponse, error)` **get** `/radar/email/security/summary/threat_category` Retrieves the distribution of emails by threat categories. ### Parameters - `query EmailSecuritySummaryThreatCategoryParams` - `ARC param.Field[[]EmailSecuritySummaryThreatCategoryParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecuritySummaryThreatCategoryParamsARCPass EmailSecuritySummaryThreatCategoryParamsARC = "PASS"` - `const EmailSecuritySummaryThreatCategoryParamsARCNone EmailSecuritySummaryThreatCategoryParamsARC = "NONE"` - `const EmailSecuritySummaryThreatCategoryParamsARCFail EmailSecuritySummaryThreatCategoryParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecuritySummaryThreatCategoryParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecuritySummaryThreatCategoryParamsDKIMPass EmailSecuritySummaryThreatCategoryParamsDKIM = "PASS"` - `const EmailSecuritySummaryThreatCategoryParamsDKIMNone EmailSecuritySummaryThreatCategoryParamsDKIM = "NONE"` - `const EmailSecuritySummaryThreatCategoryParamsDKIMFail EmailSecuritySummaryThreatCategoryParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecuritySummaryThreatCategoryParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecuritySummaryThreatCategoryParamsDMARCPass EmailSecuritySummaryThreatCategoryParamsDMARC = "PASS"` - `const EmailSecuritySummaryThreatCategoryParamsDMARCNone EmailSecuritySummaryThreatCategoryParamsDMARC = "NONE"` - `const EmailSecuritySummaryThreatCategoryParamsDMARCFail EmailSecuritySummaryThreatCategoryParamsDMARC = "FAIL"` - `Format param.Field[EmailSecuritySummaryThreatCategoryParamsFormat]` Format in which results will be returned. - `const EmailSecuritySummaryThreatCategoryParamsFormatJson EmailSecuritySummaryThreatCategoryParamsFormat = "JSON"` - `const EmailSecuritySummaryThreatCategoryParamsFormatCsv EmailSecuritySummaryThreatCategoryParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecuritySummaryThreatCategoryParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecuritySummaryThreatCategoryParamsSPFPass EmailSecuritySummaryThreatCategoryParamsSPF = "PASS"` - `const EmailSecuritySummaryThreatCategoryParamsSPFNone EmailSecuritySummaryThreatCategoryParamsSPF = "NONE"` - `const EmailSecuritySummaryThreatCategoryParamsSPFFail EmailSecuritySummaryThreatCategoryParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecuritySummaryThreatCategoryParamsTLSVersion]` Filters results by TLS version. - `const EmailSecuritySummaryThreatCategoryParamsTLSVersionTlSv1_0 EmailSecuritySummaryThreatCategoryParamsTLSVersion = "TLSv1_0"` - `const EmailSecuritySummaryThreatCategoryParamsTLSVersionTlSv1_1 EmailSecuritySummaryThreatCategoryParamsTLSVersion = "TLSv1_1"` - `const EmailSecuritySummaryThreatCategoryParamsTLSVersionTlSv1_2 EmailSecuritySummaryThreatCategoryParamsTLSVersion = "TLSv1_2"` - `const EmailSecuritySummaryThreatCategoryParamsTLSVersionTlSv1_3 EmailSecuritySummaryThreatCategoryParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecuritySummaryThreatCategoryResponse struct{…}` - `Meta EmailSecuritySummaryThreatCategoryResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfo` - `Annotations []EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecuritySummaryThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecuritySummaryThreatCategoryResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecuritySummaryThreatCategoryResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecuritySummaryThreatCategoryResponseMetaNormalizationPercentage EmailSecuritySummaryThreatCategoryResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecuritySummaryThreatCategoryResponseMetaNormalizationMin0Max EmailSecuritySummaryThreatCategoryResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecuritySummaryThreatCategoryResponseMetaNormalizationMinMax EmailSecuritySummaryThreatCategoryResponseMetaNormalization = "MIN_MAX"` - `const EmailSecuritySummaryThreatCategoryResponseMetaNormalizationRawValues EmailSecuritySummaryThreatCategoryResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecuritySummaryThreatCategoryResponseMetaNormalizationPercentageChange EmailSecuritySummaryThreatCategoryResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecuritySummaryThreatCategoryResponseMetaNormalizationRollingAverage EmailSecuritySummaryThreatCategoryResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecuritySummaryThreatCategoryResponseMetaNormalizationOverlappedPercentage EmailSecuritySummaryThreatCategoryResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecuritySummaryThreatCategoryResponseMetaNormalizationRatio EmailSecuritySummaryThreatCategoryResponseMetaNormalization = "RATIO"` - `Units []EmailSecuritySummaryThreatCategoryResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 EmailSecuritySummaryThreatCategoryResponseSummary0` - `BrandImpersonation string` A numeric string. - `CredentialHarvester string` A numeric string. - `IdentityDeception string` A numeric string. - `Link string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.Summary.ThreatCategory(context.TODO(), radar.EmailSecuritySummaryThreatCategoryParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.Summary.Spoof(ctx, query) (*EmailSecuritySummarySpoofResponse, error)` **get** `/radar/email/security/summary/spoof` Retrieves the proportion of emails by spoof classification (spoof vs. non-spoof). ### Parameters - `query EmailSecuritySummarySpoofParams` - `ARC param.Field[[]EmailSecuritySummarySpoofParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecuritySummarySpoofParamsARCPass EmailSecuritySummarySpoofParamsARC = "PASS"` - `const EmailSecuritySummarySpoofParamsARCNone EmailSecuritySummarySpoofParamsARC = "NONE"` - `const EmailSecuritySummarySpoofParamsARCFail EmailSecuritySummarySpoofParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecuritySummarySpoofParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecuritySummarySpoofParamsDKIMPass EmailSecuritySummarySpoofParamsDKIM = "PASS"` - `const EmailSecuritySummarySpoofParamsDKIMNone EmailSecuritySummarySpoofParamsDKIM = "NONE"` - `const EmailSecuritySummarySpoofParamsDKIMFail EmailSecuritySummarySpoofParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecuritySummarySpoofParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecuritySummarySpoofParamsDMARCPass EmailSecuritySummarySpoofParamsDMARC = "PASS"` - `const EmailSecuritySummarySpoofParamsDMARCNone EmailSecuritySummarySpoofParamsDMARC = "NONE"` - `const EmailSecuritySummarySpoofParamsDMARCFail EmailSecuritySummarySpoofParamsDMARC = "FAIL"` - `Format param.Field[EmailSecuritySummarySpoofParamsFormat]` Format in which results will be returned. - `const EmailSecuritySummarySpoofParamsFormatJson EmailSecuritySummarySpoofParamsFormat = "JSON"` - `const EmailSecuritySummarySpoofParamsFormatCsv EmailSecuritySummarySpoofParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecuritySummarySpoofParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecuritySummarySpoofParamsSPFPass EmailSecuritySummarySpoofParamsSPF = "PASS"` - `const EmailSecuritySummarySpoofParamsSPFNone EmailSecuritySummarySpoofParamsSPF = "NONE"` - `const EmailSecuritySummarySpoofParamsSPFFail EmailSecuritySummarySpoofParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecuritySummarySpoofParamsTLSVersion]` Filters results by TLS version. - `const EmailSecuritySummarySpoofParamsTLSVersionTlSv1_0 EmailSecuritySummarySpoofParamsTLSVersion = "TLSv1_0"` - `const EmailSecuritySummarySpoofParamsTLSVersionTlSv1_1 EmailSecuritySummarySpoofParamsTLSVersion = "TLSv1_1"` - `const EmailSecuritySummarySpoofParamsTLSVersionTlSv1_2 EmailSecuritySummarySpoofParamsTLSVersion = "TLSv1_2"` - `const EmailSecuritySummarySpoofParamsTLSVersionTlSv1_3 EmailSecuritySummarySpoofParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecuritySummarySpoofResponse struct{…}` - `Meta EmailSecuritySummarySpoofResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecuritySummarySpoofResponseMetaConfidenceInfo` - `Annotations []EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecuritySummarySpoofResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecuritySummarySpoofResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecuritySummarySpoofResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecuritySummarySpoofResponseMetaNormalizationPercentage EmailSecuritySummarySpoofResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecuritySummarySpoofResponseMetaNormalizationMin0Max EmailSecuritySummarySpoofResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecuritySummarySpoofResponseMetaNormalizationMinMax EmailSecuritySummarySpoofResponseMetaNormalization = "MIN_MAX"` - `const EmailSecuritySummarySpoofResponseMetaNormalizationRawValues EmailSecuritySummarySpoofResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecuritySummarySpoofResponseMetaNormalizationPercentageChange EmailSecuritySummarySpoofResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecuritySummarySpoofResponseMetaNormalizationRollingAverage EmailSecuritySummarySpoofResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecuritySummarySpoofResponseMetaNormalizationOverlappedPercentage EmailSecuritySummarySpoofResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecuritySummarySpoofResponseMetaNormalizationRatio EmailSecuritySummarySpoofResponseMetaNormalization = "RATIO"` - `Units []EmailSecuritySummarySpoofResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 EmailSecuritySummarySpoofResponseSummary0` - `NotSpoof string` A numeric string. - `Spoof string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.Summary.Spoof(context.TODO(), radar.EmailSecuritySummarySpoofParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.Summary.TLSVersion(ctx, query) (*EmailSecuritySummaryTLSVersionResponse, error)` **get** `/radar/email/security/summary/tls_version` Retrieves the distribution of emails by TLS version. ### Parameters - `query EmailSecuritySummaryTLSVersionParams` - `ARC param.Field[[]EmailSecuritySummaryTLSVersionParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecuritySummaryTLSVersionParamsARCPass EmailSecuritySummaryTLSVersionParamsARC = "PASS"` - `const EmailSecuritySummaryTLSVersionParamsARCNone EmailSecuritySummaryTLSVersionParamsARC = "NONE"` - `const EmailSecuritySummaryTLSVersionParamsARCFail EmailSecuritySummaryTLSVersionParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecuritySummaryTLSVersionParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecuritySummaryTLSVersionParamsDKIMPass EmailSecuritySummaryTLSVersionParamsDKIM = "PASS"` - `const EmailSecuritySummaryTLSVersionParamsDKIMNone EmailSecuritySummaryTLSVersionParamsDKIM = "NONE"` - `const EmailSecuritySummaryTLSVersionParamsDKIMFail EmailSecuritySummaryTLSVersionParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecuritySummaryTLSVersionParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecuritySummaryTLSVersionParamsDMARCPass EmailSecuritySummaryTLSVersionParamsDMARC = "PASS"` - `const EmailSecuritySummaryTLSVersionParamsDMARCNone EmailSecuritySummaryTLSVersionParamsDMARC = "NONE"` - `const EmailSecuritySummaryTLSVersionParamsDMARCFail EmailSecuritySummaryTLSVersionParamsDMARC = "FAIL"` - `Format param.Field[EmailSecuritySummaryTLSVersionParamsFormat]` Format in which results will be returned. - `const EmailSecuritySummaryTLSVersionParamsFormatJson EmailSecuritySummaryTLSVersionParamsFormat = "JSON"` - `const EmailSecuritySummaryTLSVersionParamsFormatCsv EmailSecuritySummaryTLSVersionParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecuritySummaryTLSVersionParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecuritySummaryTLSVersionParamsSPFPass EmailSecuritySummaryTLSVersionParamsSPF = "PASS"` - `const EmailSecuritySummaryTLSVersionParamsSPFNone EmailSecuritySummaryTLSVersionParamsSPF = "NONE"` - `const EmailSecuritySummaryTLSVersionParamsSPFFail EmailSecuritySummaryTLSVersionParamsSPF = "FAIL"` ### Returns - `type EmailSecuritySummaryTLSVersionResponse struct{…}` - `Meta EmailSecuritySummaryTLSVersionResponseMeta` Metadata for the results. - `ConfidenceInfo EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfo` - `Annotations []EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecuritySummaryTLSVersionResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecuritySummaryTLSVersionResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecuritySummaryTLSVersionResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecuritySummaryTLSVersionResponseMetaNormalizationPercentage EmailSecuritySummaryTLSVersionResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecuritySummaryTLSVersionResponseMetaNormalizationMin0Max EmailSecuritySummaryTLSVersionResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecuritySummaryTLSVersionResponseMetaNormalizationMinMax EmailSecuritySummaryTLSVersionResponseMetaNormalization = "MIN_MAX"` - `const EmailSecuritySummaryTLSVersionResponseMetaNormalizationRawValues EmailSecuritySummaryTLSVersionResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecuritySummaryTLSVersionResponseMetaNormalizationPercentageChange EmailSecuritySummaryTLSVersionResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecuritySummaryTLSVersionResponseMetaNormalizationRollingAverage EmailSecuritySummaryTLSVersionResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecuritySummaryTLSVersionResponseMetaNormalizationOverlappedPercentage EmailSecuritySummaryTLSVersionResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecuritySummaryTLSVersionResponseMetaNormalizationRatio EmailSecuritySummaryTLSVersionResponseMetaNormalization = "RATIO"` - `Units []EmailSecuritySummaryTLSVersionResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Summary0 EmailSecuritySummaryTLSVersionResponseSummary0` - `TLS1_0 string` A numeric string. - `TLS1_1 string` A numeric string. - `TLS1_2 string` A numeric string. - `TLS1_3 string` A numeric string. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.Summary.TLSVersion(context.TODO(), radar.EmailSecuritySummaryTLSVersionParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 } ``` # Timeseries Groups ## Get email ARC validation time series `client.Radar.Email.Security.TimeseriesGroups.ARC(ctx, query) (*EmailSecurityTimeseriesGroupARCResponse, error)` **get** `/radar/email/security/timeseries_groups/arc` Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation over time. ### Parameters - `query EmailSecurityTimeseriesGroupARCParams` - `AggInterval param.Field[EmailSecurityTimeseriesGroupARCParamsAggInterval]` 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. - `const EmailSecurityTimeseriesGroupARCParamsAggInterval15m EmailSecurityTimeseriesGroupARCParamsAggInterval = "15m"` - `const EmailSecurityTimeseriesGroupARCParamsAggInterval1h EmailSecurityTimeseriesGroupARCParamsAggInterval = "1h"` - `const EmailSecurityTimeseriesGroupARCParamsAggInterval1d EmailSecurityTimeseriesGroupARCParamsAggInterval = "1d"` - `const EmailSecurityTimeseriesGroupARCParamsAggInterval1w EmailSecurityTimeseriesGroupARCParamsAggInterval = "1w"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTimeseriesGroupARCParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecurityTimeseriesGroupARCParamsDKIMPass EmailSecurityTimeseriesGroupARCParamsDKIM = "PASS"` - `const EmailSecurityTimeseriesGroupARCParamsDKIMNone EmailSecurityTimeseriesGroupARCParamsDKIM = "NONE"` - `const EmailSecurityTimeseriesGroupARCParamsDKIMFail EmailSecurityTimeseriesGroupARCParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecurityTimeseriesGroupARCParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecurityTimeseriesGroupARCParamsDMARCPass EmailSecurityTimeseriesGroupARCParamsDMARC = "PASS"` - `const EmailSecurityTimeseriesGroupARCParamsDMARCNone EmailSecurityTimeseriesGroupARCParamsDMARC = "NONE"` - `const EmailSecurityTimeseriesGroupARCParamsDMARCFail EmailSecurityTimeseriesGroupARCParamsDMARC = "FAIL"` - `Format param.Field[EmailSecurityTimeseriesGroupARCParamsFormat]` Format in which results will be returned. - `const EmailSecurityTimeseriesGroupARCParamsFormatJson EmailSecurityTimeseriesGroupARCParamsFormat = "JSON"` - `const EmailSecurityTimeseriesGroupARCParamsFormatCsv EmailSecurityTimeseriesGroupARCParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecurityTimeseriesGroupARCParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecurityTimeseriesGroupARCParamsSPFPass EmailSecurityTimeseriesGroupARCParamsSPF = "PASS"` - `const EmailSecurityTimeseriesGroupARCParamsSPFNone EmailSecurityTimeseriesGroupARCParamsSPF = "NONE"` - `const EmailSecurityTimeseriesGroupARCParamsSPFFail EmailSecurityTimeseriesGroupARCParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecurityTimeseriesGroupARCParamsTLSVersion]` Filters results by TLS version. - `const EmailSecurityTimeseriesGroupARCParamsTLSVersionTlSv1_0 EmailSecurityTimeseriesGroupARCParamsTLSVersion = "TLSv1_0"` - `const EmailSecurityTimeseriesGroupARCParamsTLSVersionTlSv1_1 EmailSecurityTimeseriesGroupARCParamsTLSVersion = "TLSv1_1"` - `const EmailSecurityTimeseriesGroupARCParamsTLSVersionTlSv1_2 EmailSecurityTimeseriesGroupARCParamsTLSVersion = "TLSv1_2"` - `const EmailSecurityTimeseriesGroupARCParamsTLSVersionTlSv1_3 EmailSecurityTimeseriesGroupARCParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecurityTimeseriesGroupARCResponse struct{…}` - `Meta EmailSecurityTimeseriesGroupARCResponseMeta` Metadata for the results. - `AggInterval EmailSecurityTimeseriesGroupARCResponseMetaAggInterval` 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/). - `const EmailSecurityTimeseriesGroupARCResponseMetaAggIntervalFifteenMinutes EmailSecurityTimeseriesGroupARCResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailSecurityTimeseriesGroupARCResponseMetaAggIntervalOneHour EmailSecurityTimeseriesGroupARCResponseMetaAggInterval = "ONE_HOUR"` - `const EmailSecurityTimeseriesGroupARCResponseMetaAggIntervalOneDay EmailSecurityTimeseriesGroupARCResponseMetaAggInterval = "ONE_DAY"` - `const EmailSecurityTimeseriesGroupARCResponseMetaAggIntervalOneWeek EmailSecurityTimeseriesGroupARCResponseMetaAggInterval = "ONE_WEEK"` - `const EmailSecurityTimeseriesGroupARCResponseMetaAggIntervalOneMonth EmailSecurityTimeseriesGroupARCResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTimeseriesGroupARCResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTimeseriesGroupARCResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTimeseriesGroupARCResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTimeseriesGroupARCResponseMetaNormalizationPercentage EmailSecurityTimeseriesGroupARCResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTimeseriesGroupARCResponseMetaNormalizationMin0Max EmailSecurityTimeseriesGroupARCResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTimeseriesGroupARCResponseMetaNormalizationMinMax EmailSecurityTimeseriesGroupARCResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTimeseriesGroupARCResponseMetaNormalizationRawValues EmailSecurityTimeseriesGroupARCResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTimeseriesGroupARCResponseMetaNormalizationPercentageChange EmailSecurityTimeseriesGroupARCResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTimeseriesGroupARCResponseMetaNormalizationRollingAverage EmailSecurityTimeseriesGroupARCResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTimeseriesGroupARCResponseMetaNormalizationOverlappedPercentage EmailSecurityTimeseriesGroupARCResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTimeseriesGroupARCResponseMetaNormalizationRatio EmailSecurityTimeseriesGroupARCResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTimeseriesGroupARCResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 RadarEmailSeries` - `Fail []string` - `None []string` - `Pass []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.TimeseriesGroups.ARC(context.TODO(), radar.EmailSecurityTimeseriesGroupARCParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.TimeseriesGroups.DKIM(ctx, query) (*EmailSecurityTimeseriesGroupDKIMResponse, error)` **get** `/radar/email/security/timeseries_groups/dkim` Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation over time. ### Parameters - `query EmailSecurityTimeseriesGroupDKIMParams` - `AggInterval param.Field[EmailSecurityTimeseriesGroupDKIMParamsAggInterval]` 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. - `const EmailSecurityTimeseriesGroupDKIMParamsAggInterval15m EmailSecurityTimeseriesGroupDKIMParamsAggInterval = "15m"` - `const EmailSecurityTimeseriesGroupDKIMParamsAggInterval1h EmailSecurityTimeseriesGroupDKIMParamsAggInterval = "1h"` - `const EmailSecurityTimeseriesGroupDKIMParamsAggInterval1d EmailSecurityTimeseriesGroupDKIMParamsAggInterval = "1d"` - `const EmailSecurityTimeseriesGroupDKIMParamsAggInterval1w EmailSecurityTimeseriesGroupDKIMParamsAggInterval = "1w"` - `ARC param.Field[[]EmailSecurityTimeseriesGroupDKIMParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecurityTimeseriesGroupDKIMParamsARCPass EmailSecurityTimeseriesGroupDKIMParamsARC = "PASS"` - `const EmailSecurityTimeseriesGroupDKIMParamsARCNone EmailSecurityTimeseriesGroupDKIMParamsARC = "NONE"` - `const EmailSecurityTimeseriesGroupDKIMParamsARCFail EmailSecurityTimeseriesGroupDKIMParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTimeseriesGroupDKIMParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecurityTimeseriesGroupDKIMParamsDMARCPass EmailSecurityTimeseriesGroupDKIMParamsDMARC = "PASS"` - `const EmailSecurityTimeseriesGroupDKIMParamsDMARCNone EmailSecurityTimeseriesGroupDKIMParamsDMARC = "NONE"` - `const EmailSecurityTimeseriesGroupDKIMParamsDMARCFail EmailSecurityTimeseriesGroupDKIMParamsDMARC = "FAIL"` - `Format param.Field[EmailSecurityTimeseriesGroupDKIMParamsFormat]` Format in which results will be returned. - `const EmailSecurityTimeseriesGroupDKIMParamsFormatJson EmailSecurityTimeseriesGroupDKIMParamsFormat = "JSON"` - `const EmailSecurityTimeseriesGroupDKIMParamsFormatCsv EmailSecurityTimeseriesGroupDKIMParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecurityTimeseriesGroupDKIMParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecurityTimeseriesGroupDKIMParamsSPFPass EmailSecurityTimeseriesGroupDKIMParamsSPF = "PASS"` - `const EmailSecurityTimeseriesGroupDKIMParamsSPFNone EmailSecurityTimeseriesGroupDKIMParamsSPF = "NONE"` - `const EmailSecurityTimeseriesGroupDKIMParamsSPFFail EmailSecurityTimeseriesGroupDKIMParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecurityTimeseriesGroupDKIMParamsTLSVersion]` Filters results by TLS version. - `const EmailSecurityTimeseriesGroupDKIMParamsTLSVersionTlSv1_0 EmailSecurityTimeseriesGroupDKIMParamsTLSVersion = "TLSv1_0"` - `const EmailSecurityTimeseriesGroupDKIMParamsTLSVersionTlSv1_1 EmailSecurityTimeseriesGroupDKIMParamsTLSVersion = "TLSv1_1"` - `const EmailSecurityTimeseriesGroupDKIMParamsTLSVersionTlSv1_2 EmailSecurityTimeseriesGroupDKIMParamsTLSVersion = "TLSv1_2"` - `const EmailSecurityTimeseriesGroupDKIMParamsTLSVersionTlSv1_3 EmailSecurityTimeseriesGroupDKIMParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecurityTimeseriesGroupDKIMResponse struct{…}` - `Meta EmailSecurityTimeseriesGroupDKIMResponseMeta` Metadata for the results. - `AggInterval EmailSecurityTimeseriesGroupDKIMResponseMetaAggInterval` 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/). - `const EmailSecurityTimeseriesGroupDKIMResponseMetaAggIntervalFifteenMinutes EmailSecurityTimeseriesGroupDKIMResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaAggIntervalOneHour EmailSecurityTimeseriesGroupDKIMResponseMetaAggInterval = "ONE_HOUR"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaAggIntervalOneDay EmailSecurityTimeseriesGroupDKIMResponseMetaAggInterval = "ONE_DAY"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaAggIntervalOneWeek EmailSecurityTimeseriesGroupDKIMResponseMetaAggInterval = "ONE_WEEK"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaAggIntervalOneMonth EmailSecurityTimeseriesGroupDKIMResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTimeseriesGroupDKIMResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTimeseriesGroupDKIMResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTimeseriesGroupDKIMResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTimeseriesGroupDKIMResponseMetaNormalizationPercentage EmailSecurityTimeseriesGroupDKIMResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaNormalizationMin0Max EmailSecurityTimeseriesGroupDKIMResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaNormalizationMinMax EmailSecurityTimeseriesGroupDKIMResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaNormalizationRawValues EmailSecurityTimeseriesGroupDKIMResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaNormalizationPercentageChange EmailSecurityTimeseriesGroupDKIMResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaNormalizationRollingAverage EmailSecurityTimeseriesGroupDKIMResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaNormalizationOverlappedPercentage EmailSecurityTimeseriesGroupDKIMResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTimeseriesGroupDKIMResponseMetaNormalizationRatio EmailSecurityTimeseriesGroupDKIMResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTimeseriesGroupDKIMResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 RadarEmailSeries` - `Fail []string` - `None []string` - `Pass []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.TimeseriesGroups.DKIM(context.TODO(), radar.EmailSecurityTimeseriesGroupDKIMParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.TimeseriesGroups.DMARC(ctx, query) (*EmailSecurityTimeseriesGroupDMARCResponse, error)` **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 - `query EmailSecurityTimeseriesGroupDMARCParams` - `AggInterval param.Field[EmailSecurityTimeseriesGroupDMARCParamsAggInterval]` 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. - `const EmailSecurityTimeseriesGroupDMARCParamsAggInterval15m EmailSecurityTimeseriesGroupDMARCParamsAggInterval = "15m"` - `const EmailSecurityTimeseriesGroupDMARCParamsAggInterval1h EmailSecurityTimeseriesGroupDMARCParamsAggInterval = "1h"` - `const EmailSecurityTimeseriesGroupDMARCParamsAggInterval1d EmailSecurityTimeseriesGroupDMARCParamsAggInterval = "1d"` - `const EmailSecurityTimeseriesGroupDMARCParamsAggInterval1w EmailSecurityTimeseriesGroupDMARCParamsAggInterval = "1w"` - `ARC param.Field[[]EmailSecurityTimeseriesGroupDMARCParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecurityTimeseriesGroupDMARCParamsARCPass EmailSecurityTimeseriesGroupDMARCParamsARC = "PASS"` - `const EmailSecurityTimeseriesGroupDMARCParamsARCNone EmailSecurityTimeseriesGroupDMARCParamsARC = "NONE"` - `const EmailSecurityTimeseriesGroupDMARCParamsARCFail EmailSecurityTimeseriesGroupDMARCParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTimeseriesGroupDMARCParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecurityTimeseriesGroupDMARCParamsDKIMPass EmailSecurityTimeseriesGroupDMARCParamsDKIM = "PASS"` - `const EmailSecurityTimeseriesGroupDMARCParamsDKIMNone EmailSecurityTimeseriesGroupDMARCParamsDKIM = "NONE"` - `const EmailSecurityTimeseriesGroupDMARCParamsDKIMFail EmailSecurityTimeseriesGroupDMARCParamsDKIM = "FAIL"` - `Format param.Field[EmailSecurityTimeseriesGroupDMARCParamsFormat]` Format in which results will be returned. - `const EmailSecurityTimeseriesGroupDMARCParamsFormatJson EmailSecurityTimeseriesGroupDMARCParamsFormat = "JSON"` - `const EmailSecurityTimeseriesGroupDMARCParamsFormatCsv EmailSecurityTimeseriesGroupDMARCParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecurityTimeseriesGroupDMARCParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecurityTimeseriesGroupDMARCParamsSPFPass EmailSecurityTimeseriesGroupDMARCParamsSPF = "PASS"` - `const EmailSecurityTimeseriesGroupDMARCParamsSPFNone EmailSecurityTimeseriesGroupDMARCParamsSPF = "NONE"` - `const EmailSecurityTimeseriesGroupDMARCParamsSPFFail EmailSecurityTimeseriesGroupDMARCParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecurityTimeseriesGroupDMARCParamsTLSVersion]` Filters results by TLS version. - `const EmailSecurityTimeseriesGroupDMARCParamsTLSVersionTlSv1_0 EmailSecurityTimeseriesGroupDMARCParamsTLSVersion = "TLSv1_0"` - `const EmailSecurityTimeseriesGroupDMARCParamsTLSVersionTlSv1_1 EmailSecurityTimeseriesGroupDMARCParamsTLSVersion = "TLSv1_1"` - `const EmailSecurityTimeseriesGroupDMARCParamsTLSVersionTlSv1_2 EmailSecurityTimeseriesGroupDMARCParamsTLSVersion = "TLSv1_2"` - `const EmailSecurityTimeseriesGroupDMARCParamsTLSVersionTlSv1_3 EmailSecurityTimeseriesGroupDMARCParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecurityTimeseriesGroupDMARCResponse struct{…}` - `Meta EmailSecurityTimeseriesGroupDMARCResponseMeta` Metadata for the results. - `AggInterval EmailSecurityTimeseriesGroupDMARCResponseMetaAggInterval` 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/). - `const EmailSecurityTimeseriesGroupDMARCResponseMetaAggIntervalFifteenMinutes EmailSecurityTimeseriesGroupDMARCResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaAggIntervalOneHour EmailSecurityTimeseriesGroupDMARCResponseMetaAggInterval = "ONE_HOUR"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaAggIntervalOneDay EmailSecurityTimeseriesGroupDMARCResponseMetaAggInterval = "ONE_DAY"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaAggIntervalOneWeek EmailSecurityTimeseriesGroupDMARCResponseMetaAggInterval = "ONE_WEEK"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaAggIntervalOneMonth EmailSecurityTimeseriesGroupDMARCResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTimeseriesGroupDMARCResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTimeseriesGroupDMARCResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTimeseriesGroupDMARCResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTimeseriesGroupDMARCResponseMetaNormalizationPercentage EmailSecurityTimeseriesGroupDMARCResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaNormalizationMin0Max EmailSecurityTimeseriesGroupDMARCResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaNormalizationMinMax EmailSecurityTimeseriesGroupDMARCResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaNormalizationRawValues EmailSecurityTimeseriesGroupDMARCResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaNormalizationPercentageChange EmailSecurityTimeseriesGroupDMARCResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaNormalizationRollingAverage EmailSecurityTimeseriesGroupDMARCResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaNormalizationOverlappedPercentage EmailSecurityTimeseriesGroupDMARCResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTimeseriesGroupDMARCResponseMetaNormalizationRatio EmailSecurityTimeseriesGroupDMARCResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTimeseriesGroupDMARCResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 RadarEmailSeries` - `Fail []string` - `None []string` - `Pass []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.TimeseriesGroups.DMARC(context.TODO(), radar.EmailSecurityTimeseriesGroupDMARCParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.TimeseriesGroups.Malicious(ctx, query) (*EmailSecurityTimeseriesGroupMaliciousResponse, error)` **get** `/radar/email/security/timeseries_groups/malicious` Retrieves the distribution of emails by malicious classification over time. ### Parameters - `query EmailSecurityTimeseriesGroupMaliciousParams` - `AggInterval param.Field[EmailSecurityTimeseriesGroupMaliciousParamsAggInterval]` 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. - `const EmailSecurityTimeseriesGroupMaliciousParamsAggInterval15m EmailSecurityTimeseriesGroupMaliciousParamsAggInterval = "15m"` - `const EmailSecurityTimeseriesGroupMaliciousParamsAggInterval1h EmailSecurityTimeseriesGroupMaliciousParamsAggInterval = "1h"` - `const EmailSecurityTimeseriesGroupMaliciousParamsAggInterval1d EmailSecurityTimeseriesGroupMaliciousParamsAggInterval = "1d"` - `const EmailSecurityTimeseriesGroupMaliciousParamsAggInterval1w EmailSecurityTimeseriesGroupMaliciousParamsAggInterval = "1w"` - `ARC param.Field[[]EmailSecurityTimeseriesGroupMaliciousParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecurityTimeseriesGroupMaliciousParamsARCPass EmailSecurityTimeseriesGroupMaliciousParamsARC = "PASS"` - `const EmailSecurityTimeseriesGroupMaliciousParamsARCNone EmailSecurityTimeseriesGroupMaliciousParamsARC = "NONE"` - `const EmailSecurityTimeseriesGroupMaliciousParamsARCFail EmailSecurityTimeseriesGroupMaliciousParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTimeseriesGroupMaliciousParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecurityTimeseriesGroupMaliciousParamsDKIMPass EmailSecurityTimeseriesGroupMaliciousParamsDKIM = "PASS"` - `const EmailSecurityTimeseriesGroupMaliciousParamsDKIMNone EmailSecurityTimeseriesGroupMaliciousParamsDKIM = "NONE"` - `const EmailSecurityTimeseriesGroupMaliciousParamsDKIMFail EmailSecurityTimeseriesGroupMaliciousParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecurityTimeseriesGroupMaliciousParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecurityTimeseriesGroupMaliciousParamsDMARCPass EmailSecurityTimeseriesGroupMaliciousParamsDMARC = "PASS"` - `const EmailSecurityTimeseriesGroupMaliciousParamsDMARCNone EmailSecurityTimeseriesGroupMaliciousParamsDMARC = "NONE"` - `const EmailSecurityTimeseriesGroupMaliciousParamsDMARCFail EmailSecurityTimeseriesGroupMaliciousParamsDMARC = "FAIL"` - `Format param.Field[EmailSecurityTimeseriesGroupMaliciousParamsFormat]` Format in which results will be returned. - `const EmailSecurityTimeseriesGroupMaliciousParamsFormatJson EmailSecurityTimeseriesGroupMaliciousParamsFormat = "JSON"` - `const EmailSecurityTimeseriesGroupMaliciousParamsFormatCsv EmailSecurityTimeseriesGroupMaliciousParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecurityTimeseriesGroupMaliciousParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecurityTimeseriesGroupMaliciousParamsSPFPass EmailSecurityTimeseriesGroupMaliciousParamsSPF = "PASS"` - `const EmailSecurityTimeseriesGroupMaliciousParamsSPFNone EmailSecurityTimeseriesGroupMaliciousParamsSPF = "NONE"` - `const EmailSecurityTimeseriesGroupMaliciousParamsSPFFail EmailSecurityTimeseriesGroupMaliciousParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecurityTimeseriesGroupMaliciousParamsTLSVersion]` Filters results by TLS version. - `const EmailSecurityTimeseriesGroupMaliciousParamsTLSVersionTlSv1_0 EmailSecurityTimeseriesGroupMaliciousParamsTLSVersion = "TLSv1_0"` - `const EmailSecurityTimeseriesGroupMaliciousParamsTLSVersionTlSv1_1 EmailSecurityTimeseriesGroupMaliciousParamsTLSVersion = "TLSv1_1"` - `const EmailSecurityTimeseriesGroupMaliciousParamsTLSVersionTlSv1_2 EmailSecurityTimeseriesGroupMaliciousParamsTLSVersion = "TLSv1_2"` - `const EmailSecurityTimeseriesGroupMaliciousParamsTLSVersionTlSv1_3 EmailSecurityTimeseriesGroupMaliciousParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecurityTimeseriesGroupMaliciousResponse struct{…}` - `Meta EmailSecurityTimeseriesGroupMaliciousResponseMeta` Metadata for the results. - `AggInterval EmailSecurityTimeseriesGroupMaliciousResponseMetaAggInterval` 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/). - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaAggIntervalFifteenMinutes EmailSecurityTimeseriesGroupMaliciousResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaAggIntervalOneHour EmailSecurityTimeseriesGroupMaliciousResponseMetaAggInterval = "ONE_HOUR"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaAggIntervalOneDay EmailSecurityTimeseriesGroupMaliciousResponseMetaAggInterval = "ONE_DAY"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaAggIntervalOneWeek EmailSecurityTimeseriesGroupMaliciousResponseMetaAggInterval = "ONE_WEEK"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaAggIntervalOneMonth EmailSecurityTimeseriesGroupMaliciousResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTimeseriesGroupMaliciousResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTimeseriesGroupMaliciousResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalizationPercentage EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalizationMin0Max EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalizationMinMax EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalizationRawValues EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalizationPercentageChange EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalizationRollingAverage EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalizationOverlappedPercentage EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalizationRatio EmailSecurityTimeseriesGroupMaliciousResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTimeseriesGroupMaliciousResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 EmailSecurityTimeseriesGroupMaliciousResponseSerie0` - `Malicious []string` - `NotMalicious []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.TimeseriesGroups.Malicious(context.TODO(), radar.EmailSecurityTimeseriesGroupMaliciousParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.TimeseriesGroups.Spam(ctx, query) (*EmailSecurityTimeseriesGroupSpamResponse, error)` **get** `/radar/email/security/timeseries_groups/spam` Retrieves the distribution of emails by spam classification (spam vs. non-spam) over time. ### Parameters - `query EmailSecurityTimeseriesGroupSpamParams` - `AggInterval param.Field[EmailSecurityTimeseriesGroupSpamParamsAggInterval]` 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. - `const EmailSecurityTimeseriesGroupSpamParamsAggInterval15m EmailSecurityTimeseriesGroupSpamParamsAggInterval = "15m"` - `const EmailSecurityTimeseriesGroupSpamParamsAggInterval1h EmailSecurityTimeseriesGroupSpamParamsAggInterval = "1h"` - `const EmailSecurityTimeseriesGroupSpamParamsAggInterval1d EmailSecurityTimeseriesGroupSpamParamsAggInterval = "1d"` - `const EmailSecurityTimeseriesGroupSpamParamsAggInterval1w EmailSecurityTimeseriesGroupSpamParamsAggInterval = "1w"` - `ARC param.Field[[]EmailSecurityTimeseriesGroupSpamParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecurityTimeseriesGroupSpamParamsARCPass EmailSecurityTimeseriesGroupSpamParamsARC = "PASS"` - `const EmailSecurityTimeseriesGroupSpamParamsARCNone EmailSecurityTimeseriesGroupSpamParamsARC = "NONE"` - `const EmailSecurityTimeseriesGroupSpamParamsARCFail EmailSecurityTimeseriesGroupSpamParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTimeseriesGroupSpamParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecurityTimeseriesGroupSpamParamsDKIMPass EmailSecurityTimeseriesGroupSpamParamsDKIM = "PASS"` - `const EmailSecurityTimeseriesGroupSpamParamsDKIMNone EmailSecurityTimeseriesGroupSpamParamsDKIM = "NONE"` - `const EmailSecurityTimeseriesGroupSpamParamsDKIMFail EmailSecurityTimeseriesGroupSpamParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecurityTimeseriesGroupSpamParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecurityTimeseriesGroupSpamParamsDMARCPass EmailSecurityTimeseriesGroupSpamParamsDMARC = "PASS"` - `const EmailSecurityTimeseriesGroupSpamParamsDMARCNone EmailSecurityTimeseriesGroupSpamParamsDMARC = "NONE"` - `const EmailSecurityTimeseriesGroupSpamParamsDMARCFail EmailSecurityTimeseriesGroupSpamParamsDMARC = "FAIL"` - `Format param.Field[EmailSecurityTimeseriesGroupSpamParamsFormat]` Format in which results will be returned. - `const EmailSecurityTimeseriesGroupSpamParamsFormatJson EmailSecurityTimeseriesGroupSpamParamsFormat = "JSON"` - `const EmailSecurityTimeseriesGroupSpamParamsFormatCsv EmailSecurityTimeseriesGroupSpamParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecurityTimeseriesGroupSpamParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecurityTimeseriesGroupSpamParamsSPFPass EmailSecurityTimeseriesGroupSpamParamsSPF = "PASS"` - `const EmailSecurityTimeseriesGroupSpamParamsSPFNone EmailSecurityTimeseriesGroupSpamParamsSPF = "NONE"` - `const EmailSecurityTimeseriesGroupSpamParamsSPFFail EmailSecurityTimeseriesGroupSpamParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecurityTimeseriesGroupSpamParamsTLSVersion]` Filters results by TLS version. - `const EmailSecurityTimeseriesGroupSpamParamsTLSVersionTlSv1_0 EmailSecurityTimeseriesGroupSpamParamsTLSVersion = "TLSv1_0"` - `const EmailSecurityTimeseriesGroupSpamParamsTLSVersionTlSv1_1 EmailSecurityTimeseriesGroupSpamParamsTLSVersion = "TLSv1_1"` - `const EmailSecurityTimeseriesGroupSpamParamsTLSVersionTlSv1_2 EmailSecurityTimeseriesGroupSpamParamsTLSVersion = "TLSv1_2"` - `const EmailSecurityTimeseriesGroupSpamParamsTLSVersionTlSv1_3 EmailSecurityTimeseriesGroupSpamParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecurityTimeseriesGroupSpamResponse struct{…}` - `Meta EmailSecurityTimeseriesGroupSpamResponseMeta` Metadata for the results. - `AggInterval EmailSecurityTimeseriesGroupSpamResponseMetaAggInterval` 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/). - `const EmailSecurityTimeseriesGroupSpamResponseMetaAggIntervalFifteenMinutes EmailSecurityTimeseriesGroupSpamResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaAggIntervalOneHour EmailSecurityTimeseriesGroupSpamResponseMetaAggInterval = "ONE_HOUR"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaAggIntervalOneDay EmailSecurityTimeseriesGroupSpamResponseMetaAggInterval = "ONE_DAY"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaAggIntervalOneWeek EmailSecurityTimeseriesGroupSpamResponseMetaAggInterval = "ONE_WEEK"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaAggIntervalOneMonth EmailSecurityTimeseriesGroupSpamResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTimeseriesGroupSpamResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTimeseriesGroupSpamResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTimeseriesGroupSpamResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTimeseriesGroupSpamResponseMetaNormalizationPercentage EmailSecurityTimeseriesGroupSpamResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaNormalizationMin0Max EmailSecurityTimeseriesGroupSpamResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaNormalizationMinMax EmailSecurityTimeseriesGroupSpamResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaNormalizationRawValues EmailSecurityTimeseriesGroupSpamResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaNormalizationPercentageChange EmailSecurityTimeseriesGroupSpamResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaNormalizationRollingAverage EmailSecurityTimeseriesGroupSpamResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaNormalizationOverlappedPercentage EmailSecurityTimeseriesGroupSpamResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTimeseriesGroupSpamResponseMetaNormalizationRatio EmailSecurityTimeseriesGroupSpamResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTimeseriesGroupSpamResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 EmailSecurityTimeseriesGroupSpamResponseSerie0` - `NotSpam []string` - `Spam []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.TimeseriesGroups.Spam(context.TODO(), radar.EmailSecurityTimeseriesGroupSpamParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.TimeseriesGroups.SPF(ctx, query) (*EmailSecurityTimeseriesGroupSPFResponse, error)` **get** `/radar/email/security/timeseries_groups/spf` Retrieves the distribution of emails by SPF (Sender Policy Framework) validation over time. ### Parameters - `query EmailSecurityTimeseriesGroupSPFParams` - `AggInterval param.Field[EmailSecurityTimeseriesGroupSPFParamsAggInterval]` 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. - `const EmailSecurityTimeseriesGroupSPFParamsAggInterval15m EmailSecurityTimeseriesGroupSPFParamsAggInterval = "15m"` - `const EmailSecurityTimeseriesGroupSPFParamsAggInterval1h EmailSecurityTimeseriesGroupSPFParamsAggInterval = "1h"` - `const EmailSecurityTimeseriesGroupSPFParamsAggInterval1d EmailSecurityTimeseriesGroupSPFParamsAggInterval = "1d"` - `const EmailSecurityTimeseriesGroupSPFParamsAggInterval1w EmailSecurityTimeseriesGroupSPFParamsAggInterval = "1w"` - `ARC param.Field[[]EmailSecurityTimeseriesGroupSPFParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecurityTimeseriesGroupSPFParamsARCPass EmailSecurityTimeseriesGroupSPFParamsARC = "PASS"` - `const EmailSecurityTimeseriesGroupSPFParamsARCNone EmailSecurityTimeseriesGroupSPFParamsARC = "NONE"` - `const EmailSecurityTimeseriesGroupSPFParamsARCFail EmailSecurityTimeseriesGroupSPFParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTimeseriesGroupSPFParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecurityTimeseriesGroupSPFParamsDKIMPass EmailSecurityTimeseriesGroupSPFParamsDKIM = "PASS"` - `const EmailSecurityTimeseriesGroupSPFParamsDKIMNone EmailSecurityTimeseriesGroupSPFParamsDKIM = "NONE"` - `const EmailSecurityTimeseriesGroupSPFParamsDKIMFail EmailSecurityTimeseriesGroupSPFParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecurityTimeseriesGroupSPFParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecurityTimeseriesGroupSPFParamsDMARCPass EmailSecurityTimeseriesGroupSPFParamsDMARC = "PASS"` - `const EmailSecurityTimeseriesGroupSPFParamsDMARCNone EmailSecurityTimeseriesGroupSPFParamsDMARC = "NONE"` - `const EmailSecurityTimeseriesGroupSPFParamsDMARCFail EmailSecurityTimeseriesGroupSPFParamsDMARC = "FAIL"` - `Format param.Field[EmailSecurityTimeseriesGroupSPFParamsFormat]` Format in which results will be returned. - `const EmailSecurityTimeseriesGroupSPFParamsFormatJson EmailSecurityTimeseriesGroupSPFParamsFormat = "JSON"` - `const EmailSecurityTimeseriesGroupSPFParamsFormatCsv EmailSecurityTimeseriesGroupSPFParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `TLSVersion param.Field[[]EmailSecurityTimeseriesGroupSPFParamsTLSVersion]` Filters results by TLS version. - `const EmailSecurityTimeseriesGroupSPFParamsTLSVersionTlSv1_0 EmailSecurityTimeseriesGroupSPFParamsTLSVersion = "TLSv1_0"` - `const EmailSecurityTimeseriesGroupSPFParamsTLSVersionTlSv1_1 EmailSecurityTimeseriesGroupSPFParamsTLSVersion = "TLSv1_1"` - `const EmailSecurityTimeseriesGroupSPFParamsTLSVersionTlSv1_2 EmailSecurityTimeseriesGroupSPFParamsTLSVersion = "TLSv1_2"` - `const EmailSecurityTimeseriesGroupSPFParamsTLSVersionTlSv1_3 EmailSecurityTimeseriesGroupSPFParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecurityTimeseriesGroupSPFResponse struct{…}` - `Meta EmailSecurityTimeseriesGroupSPFResponseMeta` Metadata for the results. - `AggInterval EmailSecurityTimeseriesGroupSPFResponseMetaAggInterval` 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/). - `const EmailSecurityTimeseriesGroupSPFResponseMetaAggIntervalFifteenMinutes EmailSecurityTimeseriesGroupSPFResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaAggIntervalOneHour EmailSecurityTimeseriesGroupSPFResponseMetaAggInterval = "ONE_HOUR"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaAggIntervalOneDay EmailSecurityTimeseriesGroupSPFResponseMetaAggInterval = "ONE_DAY"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaAggIntervalOneWeek EmailSecurityTimeseriesGroupSPFResponseMetaAggInterval = "ONE_WEEK"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaAggIntervalOneMonth EmailSecurityTimeseriesGroupSPFResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTimeseriesGroupSPFResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTimeseriesGroupSPFResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTimeseriesGroupSPFResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTimeseriesGroupSPFResponseMetaNormalizationPercentage EmailSecurityTimeseriesGroupSPFResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaNormalizationMin0Max EmailSecurityTimeseriesGroupSPFResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaNormalizationMinMax EmailSecurityTimeseriesGroupSPFResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaNormalizationRawValues EmailSecurityTimeseriesGroupSPFResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaNormalizationPercentageChange EmailSecurityTimeseriesGroupSPFResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaNormalizationRollingAverage EmailSecurityTimeseriesGroupSPFResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaNormalizationOverlappedPercentage EmailSecurityTimeseriesGroupSPFResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTimeseriesGroupSPFResponseMetaNormalizationRatio EmailSecurityTimeseriesGroupSPFResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTimeseriesGroupSPFResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 RadarEmailSeries` - `Fail []string` - `None []string` - `Pass []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.TimeseriesGroups.SPF(context.TODO(), radar.EmailSecurityTimeseriesGroupSPFParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.TimeseriesGroups.ThreatCategory(ctx, query) (*EmailSecurityTimeseriesGroupThreatCategoryResponse, error)` **get** `/radar/email/security/timeseries_groups/threat_category` Retrieves the distribution of emails by threat category over time. ### Parameters - `query EmailSecurityTimeseriesGroupThreatCategoryParams` - `AggInterval param.Field[EmailSecurityTimeseriesGroupThreatCategoryParamsAggInterval]` 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. - `const EmailSecurityTimeseriesGroupThreatCategoryParamsAggInterval15m EmailSecurityTimeseriesGroupThreatCategoryParamsAggInterval = "15m"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsAggInterval1h EmailSecurityTimeseriesGroupThreatCategoryParamsAggInterval = "1h"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsAggInterval1d EmailSecurityTimeseriesGroupThreatCategoryParamsAggInterval = "1d"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsAggInterval1w EmailSecurityTimeseriesGroupThreatCategoryParamsAggInterval = "1w"` - `ARC param.Field[[]EmailSecurityTimeseriesGroupThreatCategoryParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecurityTimeseriesGroupThreatCategoryParamsARCPass EmailSecurityTimeseriesGroupThreatCategoryParamsARC = "PASS"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsARCNone EmailSecurityTimeseriesGroupThreatCategoryParamsARC = "NONE"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsARCFail EmailSecurityTimeseriesGroupThreatCategoryParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTimeseriesGroupThreatCategoryParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecurityTimeseriesGroupThreatCategoryParamsDKIMPass EmailSecurityTimeseriesGroupThreatCategoryParamsDKIM = "PASS"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsDKIMNone EmailSecurityTimeseriesGroupThreatCategoryParamsDKIM = "NONE"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsDKIMFail EmailSecurityTimeseriesGroupThreatCategoryParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecurityTimeseriesGroupThreatCategoryParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecurityTimeseriesGroupThreatCategoryParamsDMARCPass EmailSecurityTimeseriesGroupThreatCategoryParamsDMARC = "PASS"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsDMARCNone EmailSecurityTimeseriesGroupThreatCategoryParamsDMARC = "NONE"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsDMARCFail EmailSecurityTimeseriesGroupThreatCategoryParamsDMARC = "FAIL"` - `Format param.Field[EmailSecurityTimeseriesGroupThreatCategoryParamsFormat]` Format in which results will be returned. - `const EmailSecurityTimeseriesGroupThreatCategoryParamsFormatJson EmailSecurityTimeseriesGroupThreatCategoryParamsFormat = "JSON"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsFormatCsv EmailSecurityTimeseriesGroupThreatCategoryParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecurityTimeseriesGroupThreatCategoryParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecurityTimeseriesGroupThreatCategoryParamsSPFPass EmailSecurityTimeseriesGroupThreatCategoryParamsSPF = "PASS"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsSPFNone EmailSecurityTimeseriesGroupThreatCategoryParamsSPF = "NONE"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsSPFFail EmailSecurityTimeseriesGroupThreatCategoryParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecurityTimeseriesGroupThreatCategoryParamsTLSVersion]` Filters results by TLS version. - `const EmailSecurityTimeseriesGroupThreatCategoryParamsTLSVersionTlSv1_0 EmailSecurityTimeseriesGroupThreatCategoryParamsTLSVersion = "TLSv1_0"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsTLSVersionTlSv1_1 EmailSecurityTimeseriesGroupThreatCategoryParamsTLSVersion = "TLSv1_1"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsTLSVersionTlSv1_2 EmailSecurityTimeseriesGroupThreatCategoryParamsTLSVersion = "TLSv1_2"` - `const EmailSecurityTimeseriesGroupThreatCategoryParamsTLSVersionTlSv1_3 EmailSecurityTimeseriesGroupThreatCategoryParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecurityTimeseriesGroupThreatCategoryResponse struct{…}` - `Meta EmailSecurityTimeseriesGroupThreatCategoryResponseMeta` Metadata for the results. - `AggInterval EmailSecurityTimeseriesGroupThreatCategoryResponseMetaAggInterval` 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/). - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaAggIntervalFifteenMinutes EmailSecurityTimeseriesGroupThreatCategoryResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaAggIntervalOneHour EmailSecurityTimeseriesGroupThreatCategoryResponseMetaAggInterval = "ONE_HOUR"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaAggIntervalOneDay EmailSecurityTimeseriesGroupThreatCategoryResponseMetaAggInterval = "ONE_DAY"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaAggIntervalOneWeek EmailSecurityTimeseriesGroupThreatCategoryResponseMetaAggInterval = "ONE_WEEK"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaAggIntervalOneMonth EmailSecurityTimeseriesGroupThreatCategoryResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTimeseriesGroupThreatCategoryResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTimeseriesGroupThreatCategoryResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalizationPercentage EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalizationMin0Max EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalizationMinMax EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalizationRawValues EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalizationPercentageChange EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalizationRollingAverage EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalizationOverlappedPercentage EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalizationRatio EmailSecurityTimeseriesGroupThreatCategoryResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTimeseriesGroupThreatCategoryResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 EmailSecurityTimeseriesGroupThreatCategoryResponseSerie0` - `BrandImpersonation []string` - `CredentialHarvester []string` - `IdentityDeception []string` - `Link []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.TimeseriesGroups.ThreatCategory(context.TODO(), radar.EmailSecurityTimeseriesGroupThreatCategoryParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.TimeseriesGroups.Spoof(ctx, query) (*EmailSecurityTimeseriesGroupSpoofResponse, error)` **get** `/radar/email/security/timeseries_groups/spoof` Retrieves the distribution of emails by spoof classification (spoof vs. non-spoof) over time. ### Parameters - `query EmailSecurityTimeseriesGroupSpoofParams` - `AggInterval param.Field[EmailSecurityTimeseriesGroupSpoofParamsAggInterval]` 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. - `const EmailSecurityTimeseriesGroupSpoofParamsAggInterval15m EmailSecurityTimeseriesGroupSpoofParamsAggInterval = "15m"` - `const EmailSecurityTimeseriesGroupSpoofParamsAggInterval1h EmailSecurityTimeseriesGroupSpoofParamsAggInterval = "1h"` - `const EmailSecurityTimeseriesGroupSpoofParamsAggInterval1d EmailSecurityTimeseriesGroupSpoofParamsAggInterval = "1d"` - `const EmailSecurityTimeseriesGroupSpoofParamsAggInterval1w EmailSecurityTimeseriesGroupSpoofParamsAggInterval = "1w"` - `ARC param.Field[[]EmailSecurityTimeseriesGroupSpoofParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecurityTimeseriesGroupSpoofParamsARCPass EmailSecurityTimeseriesGroupSpoofParamsARC = "PASS"` - `const EmailSecurityTimeseriesGroupSpoofParamsARCNone EmailSecurityTimeseriesGroupSpoofParamsARC = "NONE"` - `const EmailSecurityTimeseriesGroupSpoofParamsARCFail EmailSecurityTimeseriesGroupSpoofParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTimeseriesGroupSpoofParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecurityTimeseriesGroupSpoofParamsDKIMPass EmailSecurityTimeseriesGroupSpoofParamsDKIM = "PASS"` - `const EmailSecurityTimeseriesGroupSpoofParamsDKIMNone EmailSecurityTimeseriesGroupSpoofParamsDKIM = "NONE"` - `const EmailSecurityTimeseriesGroupSpoofParamsDKIMFail EmailSecurityTimeseriesGroupSpoofParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecurityTimeseriesGroupSpoofParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecurityTimeseriesGroupSpoofParamsDMARCPass EmailSecurityTimeseriesGroupSpoofParamsDMARC = "PASS"` - `const EmailSecurityTimeseriesGroupSpoofParamsDMARCNone EmailSecurityTimeseriesGroupSpoofParamsDMARC = "NONE"` - `const EmailSecurityTimeseriesGroupSpoofParamsDMARCFail EmailSecurityTimeseriesGroupSpoofParamsDMARC = "FAIL"` - `Format param.Field[EmailSecurityTimeseriesGroupSpoofParamsFormat]` Format in which results will be returned. - `const EmailSecurityTimeseriesGroupSpoofParamsFormatJson EmailSecurityTimeseriesGroupSpoofParamsFormat = "JSON"` - `const EmailSecurityTimeseriesGroupSpoofParamsFormatCsv EmailSecurityTimeseriesGroupSpoofParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecurityTimeseriesGroupSpoofParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecurityTimeseriesGroupSpoofParamsSPFPass EmailSecurityTimeseriesGroupSpoofParamsSPF = "PASS"` - `const EmailSecurityTimeseriesGroupSpoofParamsSPFNone EmailSecurityTimeseriesGroupSpoofParamsSPF = "NONE"` - `const EmailSecurityTimeseriesGroupSpoofParamsSPFFail EmailSecurityTimeseriesGroupSpoofParamsSPF = "FAIL"` - `TLSVersion param.Field[[]EmailSecurityTimeseriesGroupSpoofParamsTLSVersion]` Filters results by TLS version. - `const EmailSecurityTimeseriesGroupSpoofParamsTLSVersionTlSv1_0 EmailSecurityTimeseriesGroupSpoofParamsTLSVersion = "TLSv1_0"` - `const EmailSecurityTimeseriesGroupSpoofParamsTLSVersionTlSv1_1 EmailSecurityTimeseriesGroupSpoofParamsTLSVersion = "TLSv1_1"` - `const EmailSecurityTimeseriesGroupSpoofParamsTLSVersionTlSv1_2 EmailSecurityTimeseriesGroupSpoofParamsTLSVersion = "TLSv1_2"` - `const EmailSecurityTimeseriesGroupSpoofParamsTLSVersionTlSv1_3 EmailSecurityTimeseriesGroupSpoofParamsTLSVersion = "TLSv1_3"` ### Returns - `type EmailSecurityTimeseriesGroupSpoofResponse struct{…}` - `Meta EmailSecurityTimeseriesGroupSpoofResponseMeta` Metadata for the results. - `AggInterval EmailSecurityTimeseriesGroupSpoofResponseMetaAggInterval` 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/). - `const EmailSecurityTimeseriesGroupSpoofResponseMetaAggIntervalFifteenMinutes EmailSecurityTimeseriesGroupSpoofResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaAggIntervalOneHour EmailSecurityTimeseriesGroupSpoofResponseMetaAggInterval = "ONE_HOUR"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaAggIntervalOneDay EmailSecurityTimeseriesGroupSpoofResponseMetaAggInterval = "ONE_DAY"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaAggIntervalOneWeek EmailSecurityTimeseriesGroupSpoofResponseMetaAggInterval = "ONE_WEEK"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaAggIntervalOneMonth EmailSecurityTimeseriesGroupSpoofResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTimeseriesGroupSpoofResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTimeseriesGroupSpoofResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTimeseriesGroupSpoofResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTimeseriesGroupSpoofResponseMetaNormalizationPercentage EmailSecurityTimeseriesGroupSpoofResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaNormalizationMin0Max EmailSecurityTimeseriesGroupSpoofResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaNormalizationMinMax EmailSecurityTimeseriesGroupSpoofResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaNormalizationRawValues EmailSecurityTimeseriesGroupSpoofResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaNormalizationPercentageChange EmailSecurityTimeseriesGroupSpoofResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaNormalizationRollingAverage EmailSecurityTimeseriesGroupSpoofResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaNormalizationOverlappedPercentage EmailSecurityTimeseriesGroupSpoofResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTimeseriesGroupSpoofResponseMetaNormalizationRatio EmailSecurityTimeseriesGroupSpoofResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTimeseriesGroupSpoofResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 EmailSecurityTimeseriesGroupSpoofResponseSerie0` - `NotSpoof []string` - `Spoof []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.TimeseriesGroups.Spoof(context.TODO(), radar.EmailSecurityTimeseriesGroupSpoofParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 `client.Radar.Email.Security.TimeseriesGroups.TLSVersion(ctx, query) (*EmailSecurityTimeseriesGroupTLSVersionResponse, error)` **get** `/radar/email/security/timeseries_groups/tls_version` Retrieves the distribution of emails by TLS version over time. ### Parameters - `query EmailSecurityTimeseriesGroupTLSVersionParams` - `AggInterval param.Field[EmailSecurityTimeseriesGroupTLSVersionParamsAggInterval]` 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. - `const EmailSecurityTimeseriesGroupTLSVersionParamsAggInterval15m EmailSecurityTimeseriesGroupTLSVersionParamsAggInterval = "15m"` - `const EmailSecurityTimeseriesGroupTLSVersionParamsAggInterval1h EmailSecurityTimeseriesGroupTLSVersionParamsAggInterval = "1h"` - `const EmailSecurityTimeseriesGroupTLSVersionParamsAggInterval1d EmailSecurityTimeseriesGroupTLSVersionParamsAggInterval = "1d"` - `const EmailSecurityTimeseriesGroupTLSVersionParamsAggInterval1w EmailSecurityTimeseriesGroupTLSVersionParamsAggInterval = "1w"` - `ARC param.Field[[]EmailSecurityTimeseriesGroupTLSVersionParamsARC]` Filters results by ARC (Authenticated Received Chain) validation. - `const EmailSecurityTimeseriesGroupTLSVersionParamsARCPass EmailSecurityTimeseriesGroupTLSVersionParamsARC = "PASS"` - `const EmailSecurityTimeseriesGroupTLSVersionParamsARCNone EmailSecurityTimeseriesGroupTLSVersionParamsARC = "NONE"` - `const EmailSecurityTimeseriesGroupTLSVersionParamsARCFail EmailSecurityTimeseriesGroupTLSVersionParamsARC = "FAIL"` - `DateEnd param.Field[[]Time]` 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. - `DateRange param.Field[[]string]` 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). - `DateStart param.Field[[]Time]` 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 param.Field[[]EmailSecurityTimeseriesGroupTLSVersionParamsDKIM]` Filters results by DKIM (DomainKeys Identified Mail) validation status. - `const EmailSecurityTimeseriesGroupTLSVersionParamsDKIMPass EmailSecurityTimeseriesGroupTLSVersionParamsDKIM = "PASS"` - `const EmailSecurityTimeseriesGroupTLSVersionParamsDKIMNone EmailSecurityTimeseriesGroupTLSVersionParamsDKIM = "NONE"` - `const EmailSecurityTimeseriesGroupTLSVersionParamsDKIMFail EmailSecurityTimeseriesGroupTLSVersionParamsDKIM = "FAIL"` - `DMARC param.Field[[]EmailSecurityTimeseriesGroupTLSVersionParamsDMARC]` Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status. - `const EmailSecurityTimeseriesGroupTLSVersionParamsDMARCPass EmailSecurityTimeseriesGroupTLSVersionParamsDMARC = "PASS"` - `const EmailSecurityTimeseriesGroupTLSVersionParamsDMARCNone EmailSecurityTimeseriesGroupTLSVersionParamsDMARC = "NONE"` - `const EmailSecurityTimeseriesGroupTLSVersionParamsDMARCFail EmailSecurityTimeseriesGroupTLSVersionParamsDMARC = "FAIL"` - `Format param.Field[EmailSecurityTimeseriesGroupTLSVersionParamsFormat]` Format in which results will be returned. - `const EmailSecurityTimeseriesGroupTLSVersionParamsFormatJson EmailSecurityTimeseriesGroupTLSVersionParamsFormat = "JSON"` - `const EmailSecurityTimeseriesGroupTLSVersionParamsFormatCsv EmailSecurityTimeseriesGroupTLSVersionParamsFormat = "CSV"` - `Name param.Field[[]string]` Array of names used to label the series in the response. - `SPF param.Field[[]EmailSecurityTimeseriesGroupTLSVersionParamsSPF]` Filters results by SPF (Sender Policy Framework) validation status. - `const EmailSecurityTimeseriesGroupTLSVersionParamsSPFPass EmailSecurityTimeseriesGroupTLSVersionParamsSPF = "PASS"` - `const EmailSecurityTimeseriesGroupTLSVersionParamsSPFNone EmailSecurityTimeseriesGroupTLSVersionParamsSPF = "NONE"` - `const EmailSecurityTimeseriesGroupTLSVersionParamsSPFFail EmailSecurityTimeseriesGroupTLSVersionParamsSPF = "FAIL"` ### Returns - `type EmailSecurityTimeseriesGroupTLSVersionResponse struct{…}` - `Meta EmailSecurityTimeseriesGroupTLSVersionResponseMeta` Metadata for the results. - `AggInterval EmailSecurityTimeseriesGroupTLSVersionResponseMetaAggInterval` 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/). - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaAggIntervalFifteenMinutes EmailSecurityTimeseriesGroupTLSVersionResponseMetaAggInterval = "FIFTEEN_MINUTES"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaAggIntervalOneHour EmailSecurityTimeseriesGroupTLSVersionResponseMetaAggInterval = "ONE_HOUR"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaAggIntervalOneDay EmailSecurityTimeseriesGroupTLSVersionResponseMetaAggInterval = "ONE_DAY"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaAggIntervalOneWeek EmailSecurityTimeseriesGroupTLSVersionResponseMetaAggInterval = "ONE_WEEK"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaAggIntervalOneMonth EmailSecurityTimeseriesGroupTLSVersionResponseMetaAggInterval = "ONE_MONTH"` - `ConfidenceInfo EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfo` - `Annotations []EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotation` - `DataSource EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource` Data source for annotations. - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceAll EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "ALL"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceAIBots EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "AI_BOTS"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceAIGateway EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "AI_GATEWAY"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceBGP EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "BGP"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceBots EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "BOTS"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceConnectionAnomaly EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "CONNECTION_ANOMALY"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceCT EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "CT"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceDNS EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DNS"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceDNSMagnitude EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_MAGNITUDE"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceDNSAS112 EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DNS_AS112"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceDos EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "DOS"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceEmailRouting EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_ROUTING"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceEmailSecurity EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "EMAIL_SECURITY"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceFw EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "FW"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceFwPg EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "FW_PG"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTP EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTPControl EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CONTROL"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTPCrawlerReferer EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_CRAWLER_REFERER"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceHTTPOrigins EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "HTTP_ORIGINS"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceIQI EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "IQI"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceLeakedCredentials EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "LEAKED_CREDENTIALS"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceNet EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "NET"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceRobotsTXT EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "ROBOTS_TXT"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceSpeed EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "SPEED"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSourceWorkersAI EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsDataSource = "WORKERS_AI"` - `Description string` - `EndDate Time` - `EventType EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsEventType` Event type for annotations. - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsEventTypeEvent EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsEventType = "EVENT"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsEventTypeGeneral EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsEventType = "GENERAL"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsEventTypeOutage EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsEventType = "OUTAGE"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsEventTypePartialProjection EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsEventType = "PARTIAL_PROJECTION"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsEventTypePipeline EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsEventType = "PIPELINE"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsEventTypeTrafficAnomaly EmailSecurityTimeseriesGroupTLSVersionResponseMetaConfidenceInfoAnnotationsEventType = "TRAFFIC_ANOMALY"` - `IsInstantaneous bool` Whether event is a single point in time or a time range. - `LinkedURL string` - `StartDate Time` - `Tags []string` - `Level int64` Provides an indication of how much confidence Cloudflare has in the data. - `DateRange []EmailSecurityTimeseriesGroupTLSVersionResponseMetaDateRange` - `EndTime Time` Adjusted end of date range. - `StartTime Time` Adjusted start of date range. - `LastUpdated Time` Timestamp of the last dataset update. - `Normalization EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalization` Normalization method applied to the results. Refer to [Normalization methods](https://edgetunnel-b2h.pages.dev/radar/concepts/normalization/). - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalizationPercentage EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalization = "PERCENTAGE"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalizationMin0Max EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalization = "MIN0_MAX"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalizationMinMax EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalization = "MIN_MAX"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalizationRawValues EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalization = "RAW_VALUES"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalizationPercentageChange EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalization = "PERCENTAGE_CHANGE"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalizationRollingAverage EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalization = "ROLLING_AVERAGE"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalizationOverlappedPercentage EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalization = "OVERLAPPED_PERCENTAGE"` - `const EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalizationRatio EmailSecurityTimeseriesGroupTLSVersionResponseMetaNormalization = "RATIO"` - `Units []EmailSecurityTimeseriesGroupTLSVersionResponseMetaUnit` Measurement units for the results. - `Name string` - `Value string` - `Serie0 EmailSecurityTimeseriesGroupTLSVersionResponseSerie0` - `TLS1_0 []string` - `TLS1_1 []string` - `TLS1_2 []string` - `TLS1_3 []string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/radar" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Radar.Email.Security.TimeseriesGroups.TLSVersion(context.TODO(), radar.EmailSecurityTimeseriesGroupTLSVersionParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 } ```