From a1fc48fcc9b01d6ee82728f5bfcc7f0809396ca9 Mon Sep 17 00:00:00 2001 From: Bjarn Bronsveld Date: Wed, 30 Sep 2026 23:06:57 +0200 Subject: [PATCH 1/2] feat(api): add analytics and project report forwarding --- .../java/co/lettermint/api/ApiClient.java | 23 ++ .../lettermint/client/LettermintClient.java | 3 + .../models/api/AnalyticsRequest.java | 47 ++++ .../api/AnalyticsRequestFiltersItem.java | 17 ++ .../models/api/AnalyticsRequestSort.java | 13 ++ .../models/api/AnalyticsResponse.java | 16 ++ .../models/api/AnalyticsResponseData.java | 18 ++ .../models/api/AnalyticsResponseMeta.java | 55 +++++ .../api/AnalyticsResponseMetaComparison.java | 16 ++ .../api/AnalyticsResponsePagination.java | 19 ++ .../models/api/AnalyticsResponsePayload.java | 17 ++ ...AnalyticsResponsePayloadBreakdownItem.java | 27 +++ ...csResponsePayloadBreakdownItemMetrics.java | 208 ++++++++++++++++++ ...sResponsePayloadBreakdownItemPrevious.java | 13 ++ ...sePayloadBreakdownItemPreviousMetrics.java | 208 ++++++++++++++++++ ...PayloadBreakdownItemPreviousRateBases.java | 28 +++ ...akdownItemPreviousRateBasesBounceRate.java | 13 ++ ...ownItemPreviousRateBasesComplaintRate.java | 13 ++ ...downItemPreviousRateBasesDeferralRate.java | 13 ++ ...downItemPreviousRateBasesDeliveryRate.java | 13 ++ ...reviousRateBasesEffectiveDeliveryRate.java | 13 ++ ...wnItemPreviousRateBasesHumanClickRate.java | 13 ++ ...ownItemPreviousRateBasesHumanOpenRate.java | 13 ++ ...ResponsePayloadBreakdownItemRateBases.java | 28 +++ ...yloadBreakdownItemRateBasesBounceRate.java | 13 ++ ...adBreakdownItemRateBasesComplaintRate.java | 13 ++ ...oadBreakdownItemRateBasesDeferralRate.java | 13 ++ ...oadBreakdownItemRateBasesDeliveryRate.java | 13 ++ ...ownItemRateBasesEffectiveDeliveryRate.java | 13 ++ ...dBreakdownItemRateBasesHumanClickRate.java | 13 ++ ...adBreakdownItemRateBasesHumanOpenRate.java | 13 ++ ...ResponsePayloadBreakdownItemTrendItem.java | 32 +++ ...ePayloadBreakdownItemTrendItemMetrics.java | 208 ++++++++++++++++++ ...PayloadBreakdownItemTrendItemPrevious.java | 13 ++ ...BreakdownItemTrendItemPreviousMetrics.java | 208 ++++++++++++++++++ ...eakdownItemTrendItemPreviousRateBases.java | 28 +++ ...mTrendItemPreviousRateBasesBounceRate.java | 13 ++ ...endItemPreviousRateBasesComplaintRate.java | 13 ++ ...rendItemPreviousRateBasesDeferralRate.java | 13 ++ ...rendItemPreviousRateBasesDeliveryRate.java | 13 ++ ...reviousRateBasesEffectiveDeliveryRate.java | 13 ++ ...ndItemPreviousRateBasesHumanClickRate.java | 13 ++ ...endItemPreviousRateBasesHumanOpenRate.java | 13 ++ ...ayloadBreakdownItemTrendItemRateBases.java | 28 +++ ...kdownItemTrendItemRateBasesBounceRate.java | 13 ++ ...wnItemTrendItemRateBasesComplaintRate.java | 13 ++ ...ownItemTrendItemRateBasesDeferralRate.java | 13 ++ ...ownItemTrendItemRateBasesDeliveryRate.java | 13 ++ ...endItemRateBasesEffectiveDeliveryRate.java | 13 ++ ...nItemTrendItemRateBasesHumanClickRate.java | 13 ++ ...wnItemTrendItemRateBasesHumanOpenRate.java | 13 ++ .../api/AnalyticsResponsePayloadSummary.java | 20 ++ ...nalyticsResponsePayloadSummaryMetrics.java | 208 ++++++++++++++++++ ...alyticsResponsePayloadSummaryPrevious.java | 13 ++ ...ResponsePayloadSummaryPreviousMetrics.java | 208 ++++++++++++++++++ ...sponsePayloadSummaryPreviousRateBases.java | 28 +++ ...oadSummaryPreviousRateBasesBounceRate.java | 13 ++ ...SummaryPreviousRateBasesComplaintRate.java | 13 ++ ...dSummaryPreviousRateBasesDeferralRate.java | 13 ++ ...dSummaryPreviousRateBasesDeliveryRate.java | 13 ++ ...reviousRateBasesEffectiveDeliveryRate.java | 13 ++ ...ummaryPreviousRateBasesHumanClickRate.java | 13 ++ ...SummaryPreviousRateBasesHumanOpenRate.java | 13 ++ ...lyticsResponsePayloadSummaryRateBases.java | 28 +++ ...onsePayloadSummaryRateBasesBounceRate.java | 13 ++ ...ePayloadSummaryRateBasesComplaintRate.java | 13 ++ ...sePayloadSummaryRateBasesDeferralRate.java | 13 ++ ...sePayloadSummaryRateBasesDeliveryRate.java | 13 ++ ...SummaryRateBasesEffectiveDeliveryRate.java | 13 ++ ...PayloadSummaryRateBasesHumanClickRate.java | 13 ++ ...ePayloadSummaryRateBasesHumanOpenRate.java | 13 ++ ...nalyticsResponsePayloadTimeSeriesItem.java | 32 +++ ...sResponsePayloadTimeSeriesItemMetrics.java | 208 ++++++++++++++++++ ...ResponsePayloadTimeSeriesItemPrevious.java | 13 ++ ...ePayloadTimeSeriesItemPreviousMetrics.java | 208 ++++++++++++++++++ ...ayloadTimeSeriesItemPreviousRateBases.java | 28 +++ ...SeriesItemPreviousRateBasesBounceRate.java | 13 ++ ...iesItemPreviousRateBasesComplaintRate.java | 13 ++ ...riesItemPreviousRateBasesDeferralRate.java | 13 ++ ...riesItemPreviousRateBasesDeliveryRate.java | 13 ++ ...reviousRateBasesEffectiveDeliveryRate.java | 13 ++ ...esItemPreviousRateBasesHumanClickRate.java | 13 ++ ...iesItemPreviousRateBasesHumanOpenRate.java | 13 ++ ...esponsePayloadTimeSeriesItemRateBases.java | 28 +++ ...loadTimeSeriesItemRateBasesBounceRate.java | 13 ++ ...dTimeSeriesItemRateBasesComplaintRate.java | 13 ++ ...adTimeSeriesItemRateBasesDeferralRate.java | 13 ++ ...adTimeSeriesItemRateBasesDeliveryRate.java | 13 ++ ...iesItemRateBasesEffectiveDeliveryRate.java | 13 ++ ...TimeSeriesItemRateBasesHumanClickRate.java | 13 ++ ...dTimeSeriesItemRateBasesHumanOpenRate.java | 13 ++ .../api/GetReportForwardingResponse.java | 10 + .../models/api/ProjectCreatedData.java | 16 ++ .../models/api/ProjectListData.java | 3 + .../lettermint/models/api/RbacPermission.java | 1 + .../models/api/ReportForwardingRequest.java | 10 + .../models/api/ReportForwardingResource.java | 16 ++ .../ResendReportForwardingCodeResponse.java | 10 + .../models/api/SendMailResponse.java | 6 +- .../models/api/StoreProjectData.java | 7 +- .../lettermint/models/api/StoreRouteData.java | 15 ++ .../api/SuppressionDestroyResponse.java | 3 + .../api/UpdateReportForwardingRequest.java | 10 + .../api/UpdateReportForwardingResponse.java | 10 + .../models/api/UpdateRouteData.java | 9 + .../api/VerifyReportForwardingRequest.java | 10 + .../api/VerifyReportForwardingResponse.java | 10 + .../models/api/WebhookDeliveryListData.java | 3 + .../models/api/WebhookListData.java | 3 + .../lettermint/AnalyticsForwardingTest.java | 61 +++++ .../java/co/lettermint/ApiClientTest.java | 6 + 111 files changed, 3237 insertions(+), 5 deletions(-) create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsRequest.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsRequestFiltersItem.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsRequestSort.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponse.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponseData.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponseMeta.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponseMetaComparison.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePagination.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayload.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItem.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemMetrics.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPrevious.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousMetrics.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBases.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesBounceRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesComplaintRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesDeferralRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesEffectiveDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesHumanClickRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesHumanOpenRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBases.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesBounceRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesComplaintRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesDeferralRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesEffectiveDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesHumanClickRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesHumanOpenRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItem.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemMetrics.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPrevious.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousMetrics.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBases.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesBounceRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesComplaintRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesDeferralRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesEffectiveDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesHumanClickRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesHumanOpenRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBases.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesBounceRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesComplaintRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesDeferralRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesEffectiveDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesHumanClickRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesHumanOpenRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummary.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryMetrics.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPrevious.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousMetrics.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBases.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesBounceRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesComplaintRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesDeferralRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesEffectiveDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesHumanClickRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesHumanOpenRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBases.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesBounceRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesComplaintRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesDeferralRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesEffectiveDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesHumanClickRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesHumanOpenRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItem.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemMetrics.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPrevious.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousMetrics.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBases.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesBounceRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesComplaintRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesDeferralRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesEffectiveDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesHumanClickRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesHumanOpenRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBases.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesBounceRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesComplaintRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesDeferralRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesEffectiveDeliveryRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesHumanClickRate.java create mode 100644 src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesHumanOpenRate.java create mode 100644 src/main/java/co/lettermint/models/api/GetReportForwardingResponse.java create mode 100644 src/main/java/co/lettermint/models/api/ProjectCreatedData.java create mode 100644 src/main/java/co/lettermint/models/api/ReportForwardingRequest.java create mode 100644 src/main/java/co/lettermint/models/api/ReportForwardingResource.java create mode 100644 src/main/java/co/lettermint/models/api/ResendReportForwardingCodeResponse.java create mode 100644 src/main/java/co/lettermint/models/api/UpdateReportForwardingRequest.java create mode 100644 src/main/java/co/lettermint/models/api/UpdateReportForwardingResponse.java create mode 100644 src/main/java/co/lettermint/models/api/VerifyReportForwardingRequest.java create mode 100644 src/main/java/co/lettermint/models/api/VerifyReportForwardingResponse.java create mode 100644 src/test/java/co/lettermint/AnalyticsForwardingTest.java diff --git a/src/main/java/co/lettermint/api/ApiClient.java b/src/main/java/co/lettermint/api/ApiClient.java index 641c305..1a50756 100644 --- a/src/main/java/co/lettermint/api/ApiClient.java +++ b/src/main/java/co/lettermint/api/ApiClient.java @@ -38,6 +38,10 @@ public BlockedFileTypesResponse blockedFileTypes() { return client.get("/blocked-file-types", BlockedFileTypesResponse.class); } + public AnalyticsResponse analytics(AnalyticsRequest payload) { + return client.post("/analytics", payload, AnalyticsResponse.class); + } + public DomainsEndpoint domains() { return domains; } @@ -171,6 +175,25 @@ public String text(String messageId) { } public static class ProjectsEndpoint { + public GetReportForwardingResponse retrieveReportForwarding(String projectId) { + return client.get("/projects/" + segment(projectId) + "/report-forwarding", GetReportForwardingResponse.class); + } + + public UpdateReportForwardingResponse updateReportForwarding(String projectId, ReportForwardingRequest payload) { + return client.put("/projects/" + segment(projectId) + "/report-forwarding", payload, UpdateReportForwardingResponse.class); + } + + public void deleteReportForwarding(String projectId) { + client.delete("/projects/" + segment(projectId) + "/report-forwarding", Void.class); + } + + public VerifyReportForwardingResponse verifyReportForwarding(String projectId, VerifyReportForwardingRequest payload) { + return client.post("/projects/" + segment(projectId) + "/report-forwarding/verify", payload, VerifyReportForwardingResponse.class); + } + + public ResendReportForwardingCodeResponse resendReportForwardingCode(String projectId) { + return client.post("/projects/" + segment(projectId) + "/report-forwarding/resend-code", null, ResendReportForwardingCodeResponse.class); + } private final LettermintClient client; ProjectsEndpoint(LettermintClient client) { diff --git a/src/main/java/co/lettermint/client/LettermintClient.java b/src/main/java/co/lettermint/client/LettermintClient.java index 8b18732..821207c 100644 --- a/src/main/java/co/lettermint/client/LettermintClient.java +++ b/src/main/java/co/lettermint/client/LettermintClient.java @@ -176,6 +176,9 @@ private T request(String method, String requestUrl, Object payload, Class } if (responseClass != null) { + if (response.code() == 204 && responseClass == Void.class) { + return null; + } return objectMapper.readValue(responseBody, responseClass); } return objectMapper.readValue(responseBody, responseType); diff --git a/src/main/java/co/lettermint/models/api/AnalyticsRequest.java b/src/main/java/co/lettermint/models/api/AnalyticsRequest.java new file mode 100644 index 0000000..21b9bfe --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsRequest.java @@ -0,0 +1,47 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsRequest { + @JsonProperty("metrics") + public List metrics; + + @JsonProperty("from") + public String fromValue; + + @JsonProperty("to") + public String to; + + @JsonProperty("timezone") + public String timezone; + + @JsonProperty("include") + public List include; + + @JsonProperty("group_by") + public List groupBy; + + @JsonProperty("filters") + public List filters; + + @JsonProperty("interval") + public String interval; + + @JsonProperty("compare") + public String compare; + + @JsonProperty("include_trend") + public Boolean includeTrend; + + @JsonProperty("sort") + public AnalyticsRequestSort sort; + + @JsonProperty("limit") + public Integer limit; + + @JsonProperty("cursor") + public String cursor; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsRequestFiltersItem.java b/src/main/java/co/lettermint/models/api/AnalyticsRequestFiltersItem.java new file mode 100644 index 0000000..8c0640d --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsRequestFiltersItem.java @@ -0,0 +1,17 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsRequestFiltersItem { + @JsonProperty("dimension") + public String dimension; + + @JsonProperty("operator") + public String operator; + + @JsonProperty("values") + public List values; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsRequestSort.java b/src/main/java/co/lettermint/models/api/AnalyticsRequestSort.java new file mode 100644 index 0000000..759dfa2 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsRequestSort.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsRequestSort { + @JsonProperty("metric") + public String metric; + + @JsonProperty("direction") + public String direction; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponse.java b/src/main/java/co/lettermint/models/api/AnalyticsResponse.java new file mode 100644 index 0000000..767888b --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponse.java @@ -0,0 +1,16 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponse { + @JsonProperty("data") + public AnalyticsResponsePayload data; + + @JsonProperty("meta") + public AnalyticsResponseMeta meta; + + @JsonProperty("pagination") + public AnalyticsResponsePagination pagination; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponseData.java b/src/main/java/co/lettermint/models/api/AnalyticsResponseData.java new file mode 100644 index 0000000..7193a9d --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponseData.java @@ -0,0 +1,18 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import java.util.Map; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponseData { + @JsonProperty("data") + public Map data; + + @JsonProperty("meta") + public Map meta; + + @JsonProperty("pagination") + public List pagination; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponseMeta.java b/src/main/java/co/lettermint/models/api/AnalyticsResponseMeta.java new file mode 100644 index 0000000..d585611 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponseMeta.java @@ -0,0 +1,55 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponseMeta { + @JsonProperty("time_basis") + public String timeBasis; + + @JsonProperty("timezone") + public String timezone; + + @JsonProperty("interval") + public String interval; + + @JsonProperty("from") + public String fromValue; + + @JsonProperty("to") + public String to; + + @JsonProperty("effective_to") + public String effectiveTo; + + @JsonProperty("alignment") + public String alignment; + + @JsonProperty("generated_at") + public String generatedAt; + + @JsonProperty("available_since") + public String availableSince; + + @JsonProperty("partial") + public Boolean partial; + + @JsonProperty("ongoing") + public Boolean ongoing; + + @JsonProperty("collection_completeness") + public String collectionCompleteness; + + @JsonProperty("last_ingested_at") + public String lastIngestedAt; + + @JsonProperty("metric_definition_version") + public String metricDefinitionVersion; + + @JsonProperty("ranked_group_limit") + public Integer rankedGroupLimit; + + @JsonProperty("comparison") + public AnalyticsResponseMetaComparison comparison; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponseMetaComparison.java b/src/main/java/co/lettermint/models/api/AnalyticsResponseMetaComparison.java new file mode 100644 index 0000000..b425200 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponseMetaComparison.java @@ -0,0 +1,16 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponseMetaComparison { + @JsonProperty("from") + public String fromValue; + + @JsonProperty("to") + public String to; + + @JsonProperty("partial") + public Boolean partial; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePagination.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePagination.java new file mode 100644 index 0000000..872c1ae --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePagination.java @@ -0,0 +1,19 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePagination { + @JsonProperty("total_groups") + public Integer totalGroups; + + @JsonProperty("returned_groups") + public Integer returnedGroups; + + @JsonProperty("next_cursor") + public String nextCursor; + + @JsonProperty("truncated") + public Boolean truncated; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayload.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayload.java new file mode 100644 index 0000000..ab77108 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayload.java @@ -0,0 +1,17 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayload { + @JsonProperty("summary") + public AnalyticsResponsePayloadSummary summary; + + @JsonProperty("time_series") + public List timeSeries; + + @JsonProperty("breakdown") + public List breakdown; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItem.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItem.java new file mode 100644 index 0000000..4d02d42 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItem.java @@ -0,0 +1,27 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import java.util.Map; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItem { + @JsonProperty("metrics") + public AnalyticsResponsePayloadBreakdownItemMetrics metrics; + + @JsonProperty("rate_bases") + public AnalyticsResponsePayloadBreakdownItemRateBases rateBases; + + @JsonProperty("previous") + public AnalyticsResponsePayloadBreakdownItemPrevious previous; + + @JsonProperty("change") + public Map> change; + + @JsonProperty("dimensions") + public Map dimensions; + + @JsonProperty("trend") + public List trend; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemMetrics.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemMetrics.java new file mode 100644 index 0000000..31ea9ab --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemMetrics.java @@ -0,0 +1,208 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemMetrics { + @JsonProperty("accepted") + public Integer accepted; + + @JsonProperty("processed") + public Integer processed; + + @JsonProperty("suppressed") + public Integer suppressed; + + @JsonProperty("policy_rejected") + public Integer policyRejected; + + @JsonProperty("application_failed") + public Integer applicationFailed; + + @JsonProperty("mta_accepted") + public Integer mtaAccepted; + + @JsonProperty("canceled") + public Integer canceled; + + @JsonProperty("messages") + public Integer messages; + + @JsonProperty("delivered") + public Integer delivered; + + @JsonProperty("bounced") + public Integer bounced; + + @JsonProperty("soft_bounced") + public Integer softBounced; + + @JsonProperty("administratively_bounced") + public Integer administrativelyBounced; + + @JsonProperty("deferred_recipients") + public Integer deferredRecipients; + + @JsonProperty("deferred_events") + public Integer deferredEvents; + + @JsonProperty("delivery_attempts") + public Integer deliveryAttempts; + + @JsonProperty("attempted_recipients") + public Integer attemptedRecipients; + + @JsonProperty("transport_outcome_recipients") + public Integer transportOutcomeRecipients; + + @JsonProperty("effective_delivered") + public Integer effectiveDelivered; + + @JsonProperty("open_tracked_delivered") + public Integer openTrackedDelivered; + + @JsonProperty("click_tracked_delivered") + public Integer clickTrackedDelivered; + + @JsonProperty("out_of_band_bounced_recipients") + public Integer outOfBandBouncedRecipients; + + @JsonProperty("out_of_band_bounce_events") + public Integer outOfBandBounceEvents; + + @JsonProperty("complained") + public Integer complained; + + @JsonProperty("unsubscribed") + public Integer unsubscribed; + + @JsonProperty("human_opens") + public Integer humanOpens; + + @JsonProperty("human_opens_events") + public Integer humanOpensEvents; + + @JsonProperty("human_clicks") + public Integer humanClicks; + + @JsonProperty("human_clicks_events") + public Integer humanClicksEvents; + + @JsonProperty("machine_opens") + public Integer machineOpens; + + @JsonProperty("machine_opens_events") + public Integer machineOpensEvents; + + @JsonProperty("machine_clicks") + public Integer machineClicks; + + @JsonProperty("machine_clicks_events") + public Integer machineClicksEvents; + + @JsonProperty("privacy_opens") + public Integer privacyOpens; + + @JsonProperty("privacy_opens_events") + public Integer privacyOpensEvents; + + @JsonProperty("privacy_clicks") + public Integer privacyClicks; + + @JsonProperty("privacy_clicks_events") + public Integer privacyClicksEvents; + + @JsonProperty("bot_opens") + public Integer botOpens; + + @JsonProperty("bot_opens_events") + public Integer botOpensEvents; + + @JsonProperty("bot_clicks") + public Integer botClicks; + + @JsonProperty("bot_clicks_events") + public Integer botClicksEvents; + + @JsonProperty("scanner_opens") + public Integer scannerOpens; + + @JsonProperty("scanner_opens_events") + public Integer scannerOpensEvents; + + @JsonProperty("scanner_clicks") + public Integer scannerClicks; + + @JsonProperty("scanner_clicks_events") + public Integer scannerClicksEvents; + + @JsonProperty("observed_opens") + public Integer observedOpens; + + @JsonProperty("observed_opens_events") + public Integer observedOpensEvents; + + @JsonProperty("observed_clicks") + public Integer observedClicks; + + @JsonProperty("observed_clicks_events") + public Integer observedClicksEvents; + + @JsonProperty("delivery_rate") + public Double deliveryRate; + + @JsonProperty("effective_delivery_rate") + public Double effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public Double bounceRate; + + @JsonProperty("deferral_rate") + public Double deferralRate; + + @JsonProperty("complaint_rate") + public Double complaintRate; + + @JsonProperty("human_open_rate") + public Double humanOpenRate; + + @JsonProperty("human_click_rate") + public Double humanClickRate; + + @JsonProperty("processing_latency_p50_ms") + public Double processingLatencyP50Ms; + + @JsonProperty("processing_latency_p95_ms") + public Double processingLatencyP95Ms; + + @JsonProperty("processing_latency_p99_ms") + public Double processingLatencyP99Ms; + + @JsonProperty("processing_latency_samples") + public Integer processingLatencySamples; + + @JsonProperty("delivery_latency_p50_ms") + public Double deliveryLatencyP50Ms; + + @JsonProperty("delivery_latency_p95_ms") + public Double deliveryLatencyP95Ms; + + @JsonProperty("delivery_latency_p99_ms") + public Double deliveryLatencyP99Ms; + + @JsonProperty("delivery_latency_samples") + public Integer deliveryLatencySamples; + + @JsonProperty("total_latency_p50_ms") + public Double totalLatencyP50Ms; + + @JsonProperty("total_latency_p95_ms") + public Double totalLatencyP95Ms; + + @JsonProperty("total_latency_p99_ms") + public Double totalLatencyP99Ms; + + @JsonProperty("total_latency_samples") + public Integer totalLatencySamples; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPrevious.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPrevious.java new file mode 100644 index 0000000..dfc89a7 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPrevious.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemPrevious { + @JsonProperty("metrics") + public AnalyticsResponsePayloadBreakdownItemPreviousMetrics metrics; + + @JsonProperty("rate_bases") + public AnalyticsResponsePayloadBreakdownItemPreviousRateBases rateBases; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousMetrics.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousMetrics.java new file mode 100644 index 0000000..ac713b7 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousMetrics.java @@ -0,0 +1,208 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemPreviousMetrics { + @JsonProperty("accepted") + public Integer accepted; + + @JsonProperty("processed") + public Integer processed; + + @JsonProperty("suppressed") + public Integer suppressed; + + @JsonProperty("policy_rejected") + public Integer policyRejected; + + @JsonProperty("application_failed") + public Integer applicationFailed; + + @JsonProperty("mta_accepted") + public Integer mtaAccepted; + + @JsonProperty("canceled") + public Integer canceled; + + @JsonProperty("messages") + public Integer messages; + + @JsonProperty("delivered") + public Integer delivered; + + @JsonProperty("bounced") + public Integer bounced; + + @JsonProperty("soft_bounced") + public Integer softBounced; + + @JsonProperty("administratively_bounced") + public Integer administrativelyBounced; + + @JsonProperty("deferred_recipients") + public Integer deferredRecipients; + + @JsonProperty("deferred_events") + public Integer deferredEvents; + + @JsonProperty("delivery_attempts") + public Integer deliveryAttempts; + + @JsonProperty("attempted_recipients") + public Integer attemptedRecipients; + + @JsonProperty("transport_outcome_recipients") + public Integer transportOutcomeRecipients; + + @JsonProperty("effective_delivered") + public Integer effectiveDelivered; + + @JsonProperty("open_tracked_delivered") + public Integer openTrackedDelivered; + + @JsonProperty("click_tracked_delivered") + public Integer clickTrackedDelivered; + + @JsonProperty("out_of_band_bounced_recipients") + public Integer outOfBandBouncedRecipients; + + @JsonProperty("out_of_band_bounce_events") + public Integer outOfBandBounceEvents; + + @JsonProperty("complained") + public Integer complained; + + @JsonProperty("unsubscribed") + public Integer unsubscribed; + + @JsonProperty("human_opens") + public Integer humanOpens; + + @JsonProperty("human_opens_events") + public Integer humanOpensEvents; + + @JsonProperty("human_clicks") + public Integer humanClicks; + + @JsonProperty("human_clicks_events") + public Integer humanClicksEvents; + + @JsonProperty("machine_opens") + public Integer machineOpens; + + @JsonProperty("machine_opens_events") + public Integer machineOpensEvents; + + @JsonProperty("machine_clicks") + public Integer machineClicks; + + @JsonProperty("machine_clicks_events") + public Integer machineClicksEvents; + + @JsonProperty("privacy_opens") + public Integer privacyOpens; + + @JsonProperty("privacy_opens_events") + public Integer privacyOpensEvents; + + @JsonProperty("privacy_clicks") + public Integer privacyClicks; + + @JsonProperty("privacy_clicks_events") + public Integer privacyClicksEvents; + + @JsonProperty("bot_opens") + public Integer botOpens; + + @JsonProperty("bot_opens_events") + public Integer botOpensEvents; + + @JsonProperty("bot_clicks") + public Integer botClicks; + + @JsonProperty("bot_clicks_events") + public Integer botClicksEvents; + + @JsonProperty("scanner_opens") + public Integer scannerOpens; + + @JsonProperty("scanner_opens_events") + public Integer scannerOpensEvents; + + @JsonProperty("scanner_clicks") + public Integer scannerClicks; + + @JsonProperty("scanner_clicks_events") + public Integer scannerClicksEvents; + + @JsonProperty("observed_opens") + public Integer observedOpens; + + @JsonProperty("observed_opens_events") + public Integer observedOpensEvents; + + @JsonProperty("observed_clicks") + public Integer observedClicks; + + @JsonProperty("observed_clicks_events") + public Integer observedClicksEvents; + + @JsonProperty("delivery_rate") + public Double deliveryRate; + + @JsonProperty("effective_delivery_rate") + public Double effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public Double bounceRate; + + @JsonProperty("deferral_rate") + public Double deferralRate; + + @JsonProperty("complaint_rate") + public Double complaintRate; + + @JsonProperty("human_open_rate") + public Double humanOpenRate; + + @JsonProperty("human_click_rate") + public Double humanClickRate; + + @JsonProperty("processing_latency_p50_ms") + public Double processingLatencyP50Ms; + + @JsonProperty("processing_latency_p95_ms") + public Double processingLatencyP95Ms; + + @JsonProperty("processing_latency_p99_ms") + public Double processingLatencyP99Ms; + + @JsonProperty("processing_latency_samples") + public Integer processingLatencySamples; + + @JsonProperty("delivery_latency_p50_ms") + public Double deliveryLatencyP50Ms; + + @JsonProperty("delivery_latency_p95_ms") + public Double deliveryLatencyP95Ms; + + @JsonProperty("delivery_latency_p99_ms") + public Double deliveryLatencyP99Ms; + + @JsonProperty("delivery_latency_samples") + public Integer deliveryLatencySamples; + + @JsonProperty("total_latency_p50_ms") + public Double totalLatencyP50Ms; + + @JsonProperty("total_latency_p95_ms") + public Double totalLatencyP95Ms; + + @JsonProperty("total_latency_p99_ms") + public Double totalLatencyP99Ms; + + @JsonProperty("total_latency_samples") + public Integer totalLatencySamples; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBases.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBases.java new file mode 100644 index 0000000..532240a --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBases.java @@ -0,0 +1,28 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemPreviousRateBases { + @JsonProperty("delivery_rate") + public AnalyticsResponsePayloadBreakdownItemPreviousRateBasesDeliveryRate deliveryRate; + + @JsonProperty("effective_delivery_rate") + public AnalyticsResponsePayloadBreakdownItemPreviousRateBasesEffectiveDeliveryRate effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public AnalyticsResponsePayloadBreakdownItemPreviousRateBasesBounceRate bounceRate; + + @JsonProperty("deferral_rate") + public AnalyticsResponsePayloadBreakdownItemPreviousRateBasesDeferralRate deferralRate; + + @JsonProperty("complaint_rate") + public AnalyticsResponsePayloadBreakdownItemPreviousRateBasesComplaintRate complaintRate; + + @JsonProperty("human_open_rate") + public AnalyticsResponsePayloadBreakdownItemPreviousRateBasesHumanOpenRate humanOpenRate; + + @JsonProperty("human_click_rate") + public AnalyticsResponsePayloadBreakdownItemPreviousRateBasesHumanClickRate humanClickRate; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesBounceRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesBounceRate.java new file mode 100644 index 0000000..b9a9394 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesBounceRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemPreviousRateBasesBounceRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesComplaintRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesComplaintRate.java new file mode 100644 index 0000000..ed35724 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesComplaintRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemPreviousRateBasesComplaintRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesDeferralRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesDeferralRate.java new file mode 100644 index 0000000..2d8151d --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesDeferralRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemPreviousRateBasesDeferralRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesDeliveryRate.java new file mode 100644 index 0000000..125c65c --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemPreviousRateBasesDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesEffectiveDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesEffectiveDeliveryRate.java new file mode 100644 index 0000000..b97100f --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesEffectiveDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemPreviousRateBasesEffectiveDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesHumanClickRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesHumanClickRate.java new file mode 100644 index 0000000..fdb1830 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesHumanClickRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemPreviousRateBasesHumanClickRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesHumanOpenRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesHumanOpenRate.java new file mode 100644 index 0000000..7eabfcd --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemPreviousRateBasesHumanOpenRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemPreviousRateBasesHumanOpenRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBases.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBases.java new file mode 100644 index 0000000..3be8ed4 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBases.java @@ -0,0 +1,28 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemRateBases { + @JsonProperty("delivery_rate") + public AnalyticsResponsePayloadBreakdownItemRateBasesDeliveryRate deliveryRate; + + @JsonProperty("effective_delivery_rate") + public AnalyticsResponsePayloadBreakdownItemRateBasesEffectiveDeliveryRate effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public AnalyticsResponsePayloadBreakdownItemRateBasesBounceRate bounceRate; + + @JsonProperty("deferral_rate") + public AnalyticsResponsePayloadBreakdownItemRateBasesDeferralRate deferralRate; + + @JsonProperty("complaint_rate") + public AnalyticsResponsePayloadBreakdownItemRateBasesComplaintRate complaintRate; + + @JsonProperty("human_open_rate") + public AnalyticsResponsePayloadBreakdownItemRateBasesHumanOpenRate humanOpenRate; + + @JsonProperty("human_click_rate") + public AnalyticsResponsePayloadBreakdownItemRateBasesHumanClickRate humanClickRate; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesBounceRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesBounceRate.java new file mode 100644 index 0000000..432ffdf --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesBounceRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemRateBasesBounceRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesComplaintRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesComplaintRate.java new file mode 100644 index 0000000..c7bf65e --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesComplaintRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemRateBasesComplaintRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesDeferralRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesDeferralRate.java new file mode 100644 index 0000000..28d88f9 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesDeferralRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemRateBasesDeferralRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesDeliveryRate.java new file mode 100644 index 0000000..441280b --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemRateBasesDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesEffectiveDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesEffectiveDeliveryRate.java new file mode 100644 index 0000000..a21bca0 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesEffectiveDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemRateBasesEffectiveDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesHumanClickRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesHumanClickRate.java new file mode 100644 index 0000000..2c86fdb --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesHumanClickRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemRateBasesHumanClickRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesHumanOpenRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesHumanOpenRate.java new file mode 100644 index 0000000..4fe1725 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemRateBasesHumanOpenRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemRateBasesHumanOpenRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItem.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItem.java new file mode 100644 index 0000000..5ac76cd --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItem.java @@ -0,0 +1,32 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Map; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItem { + @JsonProperty("metrics") + public AnalyticsResponsePayloadBreakdownItemTrendItemMetrics metrics; + + @JsonProperty("rate_bases") + public AnalyticsResponsePayloadBreakdownItemTrendItemRateBases rateBases; + + @JsonProperty("previous") + public AnalyticsResponsePayloadBreakdownItemTrendItemPrevious previous; + + @JsonProperty("change") + public Map> change; + + @JsonProperty("from") + public String fromValue; + + @JsonProperty("to") + public String to; + + @JsonProperty("available") + public Boolean available; + + @JsonProperty("partial") + public Boolean partial; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemMetrics.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemMetrics.java new file mode 100644 index 0000000..8369809 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemMetrics.java @@ -0,0 +1,208 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemMetrics { + @JsonProperty("accepted") + public Integer accepted; + + @JsonProperty("processed") + public Integer processed; + + @JsonProperty("suppressed") + public Integer suppressed; + + @JsonProperty("policy_rejected") + public Integer policyRejected; + + @JsonProperty("application_failed") + public Integer applicationFailed; + + @JsonProperty("mta_accepted") + public Integer mtaAccepted; + + @JsonProperty("canceled") + public Integer canceled; + + @JsonProperty("messages") + public Integer messages; + + @JsonProperty("delivered") + public Integer delivered; + + @JsonProperty("bounced") + public Integer bounced; + + @JsonProperty("soft_bounced") + public Integer softBounced; + + @JsonProperty("administratively_bounced") + public Integer administrativelyBounced; + + @JsonProperty("deferred_recipients") + public Integer deferredRecipients; + + @JsonProperty("deferred_events") + public Integer deferredEvents; + + @JsonProperty("delivery_attempts") + public Integer deliveryAttempts; + + @JsonProperty("attempted_recipients") + public Integer attemptedRecipients; + + @JsonProperty("transport_outcome_recipients") + public Integer transportOutcomeRecipients; + + @JsonProperty("effective_delivered") + public Integer effectiveDelivered; + + @JsonProperty("open_tracked_delivered") + public Integer openTrackedDelivered; + + @JsonProperty("click_tracked_delivered") + public Integer clickTrackedDelivered; + + @JsonProperty("out_of_band_bounced_recipients") + public Integer outOfBandBouncedRecipients; + + @JsonProperty("out_of_band_bounce_events") + public Integer outOfBandBounceEvents; + + @JsonProperty("complained") + public Integer complained; + + @JsonProperty("unsubscribed") + public Integer unsubscribed; + + @JsonProperty("human_opens") + public Integer humanOpens; + + @JsonProperty("human_opens_events") + public Integer humanOpensEvents; + + @JsonProperty("human_clicks") + public Integer humanClicks; + + @JsonProperty("human_clicks_events") + public Integer humanClicksEvents; + + @JsonProperty("machine_opens") + public Integer machineOpens; + + @JsonProperty("machine_opens_events") + public Integer machineOpensEvents; + + @JsonProperty("machine_clicks") + public Integer machineClicks; + + @JsonProperty("machine_clicks_events") + public Integer machineClicksEvents; + + @JsonProperty("privacy_opens") + public Integer privacyOpens; + + @JsonProperty("privacy_opens_events") + public Integer privacyOpensEvents; + + @JsonProperty("privacy_clicks") + public Integer privacyClicks; + + @JsonProperty("privacy_clicks_events") + public Integer privacyClicksEvents; + + @JsonProperty("bot_opens") + public Integer botOpens; + + @JsonProperty("bot_opens_events") + public Integer botOpensEvents; + + @JsonProperty("bot_clicks") + public Integer botClicks; + + @JsonProperty("bot_clicks_events") + public Integer botClicksEvents; + + @JsonProperty("scanner_opens") + public Integer scannerOpens; + + @JsonProperty("scanner_opens_events") + public Integer scannerOpensEvents; + + @JsonProperty("scanner_clicks") + public Integer scannerClicks; + + @JsonProperty("scanner_clicks_events") + public Integer scannerClicksEvents; + + @JsonProperty("observed_opens") + public Integer observedOpens; + + @JsonProperty("observed_opens_events") + public Integer observedOpensEvents; + + @JsonProperty("observed_clicks") + public Integer observedClicks; + + @JsonProperty("observed_clicks_events") + public Integer observedClicksEvents; + + @JsonProperty("delivery_rate") + public Double deliveryRate; + + @JsonProperty("effective_delivery_rate") + public Double effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public Double bounceRate; + + @JsonProperty("deferral_rate") + public Double deferralRate; + + @JsonProperty("complaint_rate") + public Double complaintRate; + + @JsonProperty("human_open_rate") + public Double humanOpenRate; + + @JsonProperty("human_click_rate") + public Double humanClickRate; + + @JsonProperty("processing_latency_p50_ms") + public Double processingLatencyP50Ms; + + @JsonProperty("processing_latency_p95_ms") + public Double processingLatencyP95Ms; + + @JsonProperty("processing_latency_p99_ms") + public Double processingLatencyP99Ms; + + @JsonProperty("processing_latency_samples") + public Integer processingLatencySamples; + + @JsonProperty("delivery_latency_p50_ms") + public Double deliveryLatencyP50Ms; + + @JsonProperty("delivery_latency_p95_ms") + public Double deliveryLatencyP95Ms; + + @JsonProperty("delivery_latency_p99_ms") + public Double deliveryLatencyP99Ms; + + @JsonProperty("delivery_latency_samples") + public Integer deliveryLatencySamples; + + @JsonProperty("total_latency_p50_ms") + public Double totalLatencyP50Ms; + + @JsonProperty("total_latency_p95_ms") + public Double totalLatencyP95Ms; + + @JsonProperty("total_latency_p99_ms") + public Double totalLatencyP99Ms; + + @JsonProperty("total_latency_samples") + public Integer totalLatencySamples; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPrevious.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPrevious.java new file mode 100644 index 0000000..8d16473 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPrevious.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemPrevious { + @JsonProperty("metrics") + public AnalyticsResponsePayloadBreakdownItemTrendItemPreviousMetrics metrics; + + @JsonProperty("rate_bases") + public AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBases rateBases; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousMetrics.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousMetrics.java new file mode 100644 index 0000000..b5b4404 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousMetrics.java @@ -0,0 +1,208 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemPreviousMetrics { + @JsonProperty("accepted") + public Integer accepted; + + @JsonProperty("processed") + public Integer processed; + + @JsonProperty("suppressed") + public Integer suppressed; + + @JsonProperty("policy_rejected") + public Integer policyRejected; + + @JsonProperty("application_failed") + public Integer applicationFailed; + + @JsonProperty("mta_accepted") + public Integer mtaAccepted; + + @JsonProperty("canceled") + public Integer canceled; + + @JsonProperty("messages") + public Integer messages; + + @JsonProperty("delivered") + public Integer delivered; + + @JsonProperty("bounced") + public Integer bounced; + + @JsonProperty("soft_bounced") + public Integer softBounced; + + @JsonProperty("administratively_bounced") + public Integer administrativelyBounced; + + @JsonProperty("deferred_recipients") + public Integer deferredRecipients; + + @JsonProperty("deferred_events") + public Integer deferredEvents; + + @JsonProperty("delivery_attempts") + public Integer deliveryAttempts; + + @JsonProperty("attempted_recipients") + public Integer attemptedRecipients; + + @JsonProperty("transport_outcome_recipients") + public Integer transportOutcomeRecipients; + + @JsonProperty("effective_delivered") + public Integer effectiveDelivered; + + @JsonProperty("open_tracked_delivered") + public Integer openTrackedDelivered; + + @JsonProperty("click_tracked_delivered") + public Integer clickTrackedDelivered; + + @JsonProperty("out_of_band_bounced_recipients") + public Integer outOfBandBouncedRecipients; + + @JsonProperty("out_of_band_bounce_events") + public Integer outOfBandBounceEvents; + + @JsonProperty("complained") + public Integer complained; + + @JsonProperty("unsubscribed") + public Integer unsubscribed; + + @JsonProperty("human_opens") + public Integer humanOpens; + + @JsonProperty("human_opens_events") + public Integer humanOpensEvents; + + @JsonProperty("human_clicks") + public Integer humanClicks; + + @JsonProperty("human_clicks_events") + public Integer humanClicksEvents; + + @JsonProperty("machine_opens") + public Integer machineOpens; + + @JsonProperty("machine_opens_events") + public Integer machineOpensEvents; + + @JsonProperty("machine_clicks") + public Integer machineClicks; + + @JsonProperty("machine_clicks_events") + public Integer machineClicksEvents; + + @JsonProperty("privacy_opens") + public Integer privacyOpens; + + @JsonProperty("privacy_opens_events") + public Integer privacyOpensEvents; + + @JsonProperty("privacy_clicks") + public Integer privacyClicks; + + @JsonProperty("privacy_clicks_events") + public Integer privacyClicksEvents; + + @JsonProperty("bot_opens") + public Integer botOpens; + + @JsonProperty("bot_opens_events") + public Integer botOpensEvents; + + @JsonProperty("bot_clicks") + public Integer botClicks; + + @JsonProperty("bot_clicks_events") + public Integer botClicksEvents; + + @JsonProperty("scanner_opens") + public Integer scannerOpens; + + @JsonProperty("scanner_opens_events") + public Integer scannerOpensEvents; + + @JsonProperty("scanner_clicks") + public Integer scannerClicks; + + @JsonProperty("scanner_clicks_events") + public Integer scannerClicksEvents; + + @JsonProperty("observed_opens") + public Integer observedOpens; + + @JsonProperty("observed_opens_events") + public Integer observedOpensEvents; + + @JsonProperty("observed_clicks") + public Integer observedClicks; + + @JsonProperty("observed_clicks_events") + public Integer observedClicksEvents; + + @JsonProperty("delivery_rate") + public Double deliveryRate; + + @JsonProperty("effective_delivery_rate") + public Double effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public Double bounceRate; + + @JsonProperty("deferral_rate") + public Double deferralRate; + + @JsonProperty("complaint_rate") + public Double complaintRate; + + @JsonProperty("human_open_rate") + public Double humanOpenRate; + + @JsonProperty("human_click_rate") + public Double humanClickRate; + + @JsonProperty("processing_latency_p50_ms") + public Double processingLatencyP50Ms; + + @JsonProperty("processing_latency_p95_ms") + public Double processingLatencyP95Ms; + + @JsonProperty("processing_latency_p99_ms") + public Double processingLatencyP99Ms; + + @JsonProperty("processing_latency_samples") + public Integer processingLatencySamples; + + @JsonProperty("delivery_latency_p50_ms") + public Double deliveryLatencyP50Ms; + + @JsonProperty("delivery_latency_p95_ms") + public Double deliveryLatencyP95Ms; + + @JsonProperty("delivery_latency_p99_ms") + public Double deliveryLatencyP99Ms; + + @JsonProperty("delivery_latency_samples") + public Integer deliveryLatencySamples; + + @JsonProperty("total_latency_p50_ms") + public Double totalLatencyP50Ms; + + @JsonProperty("total_latency_p95_ms") + public Double totalLatencyP95Ms; + + @JsonProperty("total_latency_p99_ms") + public Double totalLatencyP99Ms; + + @JsonProperty("total_latency_samples") + public Integer totalLatencySamples; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBases.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBases.java new file mode 100644 index 0000000..770b2c5 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBases.java @@ -0,0 +1,28 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBases { + @JsonProperty("delivery_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesDeliveryRate deliveryRate; + + @JsonProperty("effective_delivery_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesEffectiveDeliveryRate effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesBounceRate bounceRate; + + @JsonProperty("deferral_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesDeferralRate deferralRate; + + @JsonProperty("complaint_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesComplaintRate complaintRate; + + @JsonProperty("human_open_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesHumanOpenRate humanOpenRate; + + @JsonProperty("human_click_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesHumanClickRate humanClickRate; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesBounceRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesBounceRate.java new file mode 100644 index 0000000..655fd4f --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesBounceRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesBounceRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesComplaintRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesComplaintRate.java new file mode 100644 index 0000000..4229ce8 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesComplaintRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesComplaintRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesDeferralRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesDeferralRate.java new file mode 100644 index 0000000..a4e9807 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesDeferralRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesDeferralRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesDeliveryRate.java new file mode 100644 index 0000000..6458cdf --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesEffectiveDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesEffectiveDeliveryRate.java new file mode 100644 index 0000000..8a690c2 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesEffectiveDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesEffectiveDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesHumanClickRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesHumanClickRate.java new file mode 100644 index 0000000..21fc074 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesHumanClickRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesHumanClickRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesHumanOpenRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesHumanOpenRate.java new file mode 100644 index 0000000..0508d8f --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesHumanOpenRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemPreviousRateBasesHumanOpenRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBases.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBases.java new file mode 100644 index 0000000..df9b1b8 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBases.java @@ -0,0 +1,28 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemRateBases { + @JsonProperty("delivery_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesDeliveryRate deliveryRate; + + @JsonProperty("effective_delivery_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesEffectiveDeliveryRate effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesBounceRate bounceRate; + + @JsonProperty("deferral_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesDeferralRate deferralRate; + + @JsonProperty("complaint_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesComplaintRate complaintRate; + + @JsonProperty("human_open_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesHumanOpenRate humanOpenRate; + + @JsonProperty("human_click_rate") + public AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesHumanClickRate humanClickRate; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesBounceRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesBounceRate.java new file mode 100644 index 0000000..d30d7fc --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesBounceRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesBounceRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesComplaintRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesComplaintRate.java new file mode 100644 index 0000000..f2cca1d --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesComplaintRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesComplaintRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesDeferralRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesDeferralRate.java new file mode 100644 index 0000000..f8df528 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesDeferralRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesDeferralRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesDeliveryRate.java new file mode 100644 index 0000000..9846da7 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesEffectiveDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesEffectiveDeliveryRate.java new file mode 100644 index 0000000..3976f25 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesEffectiveDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesEffectiveDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesHumanClickRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesHumanClickRate.java new file mode 100644 index 0000000..8dce4cd --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesHumanClickRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesHumanClickRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesHumanOpenRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesHumanOpenRate.java new file mode 100644 index 0000000..e6efca5 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesHumanOpenRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadBreakdownItemTrendItemRateBasesHumanOpenRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummary.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummary.java new file mode 100644 index 0000000..be479ee --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummary.java @@ -0,0 +1,20 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Map; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummary { + @JsonProperty("metrics") + public AnalyticsResponsePayloadSummaryMetrics metrics; + + @JsonProperty("rate_bases") + public AnalyticsResponsePayloadSummaryRateBases rateBases; + + @JsonProperty("previous") + public AnalyticsResponsePayloadSummaryPrevious previous; + + @JsonProperty("change") + public Map> change; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryMetrics.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryMetrics.java new file mode 100644 index 0000000..343ddd9 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryMetrics.java @@ -0,0 +1,208 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryMetrics { + @JsonProperty("accepted") + public Integer accepted; + + @JsonProperty("processed") + public Integer processed; + + @JsonProperty("suppressed") + public Integer suppressed; + + @JsonProperty("policy_rejected") + public Integer policyRejected; + + @JsonProperty("application_failed") + public Integer applicationFailed; + + @JsonProperty("mta_accepted") + public Integer mtaAccepted; + + @JsonProperty("canceled") + public Integer canceled; + + @JsonProperty("messages") + public Integer messages; + + @JsonProperty("delivered") + public Integer delivered; + + @JsonProperty("bounced") + public Integer bounced; + + @JsonProperty("soft_bounced") + public Integer softBounced; + + @JsonProperty("administratively_bounced") + public Integer administrativelyBounced; + + @JsonProperty("deferred_recipients") + public Integer deferredRecipients; + + @JsonProperty("deferred_events") + public Integer deferredEvents; + + @JsonProperty("delivery_attempts") + public Integer deliveryAttempts; + + @JsonProperty("attempted_recipients") + public Integer attemptedRecipients; + + @JsonProperty("transport_outcome_recipients") + public Integer transportOutcomeRecipients; + + @JsonProperty("effective_delivered") + public Integer effectiveDelivered; + + @JsonProperty("open_tracked_delivered") + public Integer openTrackedDelivered; + + @JsonProperty("click_tracked_delivered") + public Integer clickTrackedDelivered; + + @JsonProperty("out_of_band_bounced_recipients") + public Integer outOfBandBouncedRecipients; + + @JsonProperty("out_of_band_bounce_events") + public Integer outOfBandBounceEvents; + + @JsonProperty("complained") + public Integer complained; + + @JsonProperty("unsubscribed") + public Integer unsubscribed; + + @JsonProperty("human_opens") + public Integer humanOpens; + + @JsonProperty("human_opens_events") + public Integer humanOpensEvents; + + @JsonProperty("human_clicks") + public Integer humanClicks; + + @JsonProperty("human_clicks_events") + public Integer humanClicksEvents; + + @JsonProperty("machine_opens") + public Integer machineOpens; + + @JsonProperty("machine_opens_events") + public Integer machineOpensEvents; + + @JsonProperty("machine_clicks") + public Integer machineClicks; + + @JsonProperty("machine_clicks_events") + public Integer machineClicksEvents; + + @JsonProperty("privacy_opens") + public Integer privacyOpens; + + @JsonProperty("privacy_opens_events") + public Integer privacyOpensEvents; + + @JsonProperty("privacy_clicks") + public Integer privacyClicks; + + @JsonProperty("privacy_clicks_events") + public Integer privacyClicksEvents; + + @JsonProperty("bot_opens") + public Integer botOpens; + + @JsonProperty("bot_opens_events") + public Integer botOpensEvents; + + @JsonProperty("bot_clicks") + public Integer botClicks; + + @JsonProperty("bot_clicks_events") + public Integer botClicksEvents; + + @JsonProperty("scanner_opens") + public Integer scannerOpens; + + @JsonProperty("scanner_opens_events") + public Integer scannerOpensEvents; + + @JsonProperty("scanner_clicks") + public Integer scannerClicks; + + @JsonProperty("scanner_clicks_events") + public Integer scannerClicksEvents; + + @JsonProperty("observed_opens") + public Integer observedOpens; + + @JsonProperty("observed_opens_events") + public Integer observedOpensEvents; + + @JsonProperty("observed_clicks") + public Integer observedClicks; + + @JsonProperty("observed_clicks_events") + public Integer observedClicksEvents; + + @JsonProperty("delivery_rate") + public Double deliveryRate; + + @JsonProperty("effective_delivery_rate") + public Double effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public Double bounceRate; + + @JsonProperty("deferral_rate") + public Double deferralRate; + + @JsonProperty("complaint_rate") + public Double complaintRate; + + @JsonProperty("human_open_rate") + public Double humanOpenRate; + + @JsonProperty("human_click_rate") + public Double humanClickRate; + + @JsonProperty("processing_latency_p50_ms") + public Double processingLatencyP50Ms; + + @JsonProperty("processing_latency_p95_ms") + public Double processingLatencyP95Ms; + + @JsonProperty("processing_latency_p99_ms") + public Double processingLatencyP99Ms; + + @JsonProperty("processing_latency_samples") + public Integer processingLatencySamples; + + @JsonProperty("delivery_latency_p50_ms") + public Double deliveryLatencyP50Ms; + + @JsonProperty("delivery_latency_p95_ms") + public Double deliveryLatencyP95Ms; + + @JsonProperty("delivery_latency_p99_ms") + public Double deliveryLatencyP99Ms; + + @JsonProperty("delivery_latency_samples") + public Integer deliveryLatencySamples; + + @JsonProperty("total_latency_p50_ms") + public Double totalLatencyP50Ms; + + @JsonProperty("total_latency_p95_ms") + public Double totalLatencyP95Ms; + + @JsonProperty("total_latency_p99_ms") + public Double totalLatencyP99Ms; + + @JsonProperty("total_latency_samples") + public Integer totalLatencySamples; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPrevious.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPrevious.java new file mode 100644 index 0000000..c551806 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPrevious.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryPrevious { + @JsonProperty("metrics") + public AnalyticsResponsePayloadSummaryPreviousMetrics metrics; + + @JsonProperty("rate_bases") + public AnalyticsResponsePayloadSummaryPreviousRateBases rateBases; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousMetrics.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousMetrics.java new file mode 100644 index 0000000..4c27652 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousMetrics.java @@ -0,0 +1,208 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryPreviousMetrics { + @JsonProperty("accepted") + public Integer accepted; + + @JsonProperty("processed") + public Integer processed; + + @JsonProperty("suppressed") + public Integer suppressed; + + @JsonProperty("policy_rejected") + public Integer policyRejected; + + @JsonProperty("application_failed") + public Integer applicationFailed; + + @JsonProperty("mta_accepted") + public Integer mtaAccepted; + + @JsonProperty("canceled") + public Integer canceled; + + @JsonProperty("messages") + public Integer messages; + + @JsonProperty("delivered") + public Integer delivered; + + @JsonProperty("bounced") + public Integer bounced; + + @JsonProperty("soft_bounced") + public Integer softBounced; + + @JsonProperty("administratively_bounced") + public Integer administrativelyBounced; + + @JsonProperty("deferred_recipients") + public Integer deferredRecipients; + + @JsonProperty("deferred_events") + public Integer deferredEvents; + + @JsonProperty("delivery_attempts") + public Integer deliveryAttempts; + + @JsonProperty("attempted_recipients") + public Integer attemptedRecipients; + + @JsonProperty("transport_outcome_recipients") + public Integer transportOutcomeRecipients; + + @JsonProperty("effective_delivered") + public Integer effectiveDelivered; + + @JsonProperty("open_tracked_delivered") + public Integer openTrackedDelivered; + + @JsonProperty("click_tracked_delivered") + public Integer clickTrackedDelivered; + + @JsonProperty("out_of_band_bounced_recipients") + public Integer outOfBandBouncedRecipients; + + @JsonProperty("out_of_band_bounce_events") + public Integer outOfBandBounceEvents; + + @JsonProperty("complained") + public Integer complained; + + @JsonProperty("unsubscribed") + public Integer unsubscribed; + + @JsonProperty("human_opens") + public Integer humanOpens; + + @JsonProperty("human_opens_events") + public Integer humanOpensEvents; + + @JsonProperty("human_clicks") + public Integer humanClicks; + + @JsonProperty("human_clicks_events") + public Integer humanClicksEvents; + + @JsonProperty("machine_opens") + public Integer machineOpens; + + @JsonProperty("machine_opens_events") + public Integer machineOpensEvents; + + @JsonProperty("machine_clicks") + public Integer machineClicks; + + @JsonProperty("machine_clicks_events") + public Integer machineClicksEvents; + + @JsonProperty("privacy_opens") + public Integer privacyOpens; + + @JsonProperty("privacy_opens_events") + public Integer privacyOpensEvents; + + @JsonProperty("privacy_clicks") + public Integer privacyClicks; + + @JsonProperty("privacy_clicks_events") + public Integer privacyClicksEvents; + + @JsonProperty("bot_opens") + public Integer botOpens; + + @JsonProperty("bot_opens_events") + public Integer botOpensEvents; + + @JsonProperty("bot_clicks") + public Integer botClicks; + + @JsonProperty("bot_clicks_events") + public Integer botClicksEvents; + + @JsonProperty("scanner_opens") + public Integer scannerOpens; + + @JsonProperty("scanner_opens_events") + public Integer scannerOpensEvents; + + @JsonProperty("scanner_clicks") + public Integer scannerClicks; + + @JsonProperty("scanner_clicks_events") + public Integer scannerClicksEvents; + + @JsonProperty("observed_opens") + public Integer observedOpens; + + @JsonProperty("observed_opens_events") + public Integer observedOpensEvents; + + @JsonProperty("observed_clicks") + public Integer observedClicks; + + @JsonProperty("observed_clicks_events") + public Integer observedClicksEvents; + + @JsonProperty("delivery_rate") + public Double deliveryRate; + + @JsonProperty("effective_delivery_rate") + public Double effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public Double bounceRate; + + @JsonProperty("deferral_rate") + public Double deferralRate; + + @JsonProperty("complaint_rate") + public Double complaintRate; + + @JsonProperty("human_open_rate") + public Double humanOpenRate; + + @JsonProperty("human_click_rate") + public Double humanClickRate; + + @JsonProperty("processing_latency_p50_ms") + public Double processingLatencyP50Ms; + + @JsonProperty("processing_latency_p95_ms") + public Double processingLatencyP95Ms; + + @JsonProperty("processing_latency_p99_ms") + public Double processingLatencyP99Ms; + + @JsonProperty("processing_latency_samples") + public Integer processingLatencySamples; + + @JsonProperty("delivery_latency_p50_ms") + public Double deliveryLatencyP50Ms; + + @JsonProperty("delivery_latency_p95_ms") + public Double deliveryLatencyP95Ms; + + @JsonProperty("delivery_latency_p99_ms") + public Double deliveryLatencyP99Ms; + + @JsonProperty("delivery_latency_samples") + public Integer deliveryLatencySamples; + + @JsonProperty("total_latency_p50_ms") + public Double totalLatencyP50Ms; + + @JsonProperty("total_latency_p95_ms") + public Double totalLatencyP95Ms; + + @JsonProperty("total_latency_p99_ms") + public Double totalLatencyP99Ms; + + @JsonProperty("total_latency_samples") + public Integer totalLatencySamples; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBases.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBases.java new file mode 100644 index 0000000..e08e55c --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBases.java @@ -0,0 +1,28 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryPreviousRateBases { + @JsonProperty("delivery_rate") + public AnalyticsResponsePayloadSummaryPreviousRateBasesDeliveryRate deliveryRate; + + @JsonProperty("effective_delivery_rate") + public AnalyticsResponsePayloadSummaryPreviousRateBasesEffectiveDeliveryRate effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public AnalyticsResponsePayloadSummaryPreviousRateBasesBounceRate bounceRate; + + @JsonProperty("deferral_rate") + public AnalyticsResponsePayloadSummaryPreviousRateBasesDeferralRate deferralRate; + + @JsonProperty("complaint_rate") + public AnalyticsResponsePayloadSummaryPreviousRateBasesComplaintRate complaintRate; + + @JsonProperty("human_open_rate") + public AnalyticsResponsePayloadSummaryPreviousRateBasesHumanOpenRate humanOpenRate; + + @JsonProperty("human_click_rate") + public AnalyticsResponsePayloadSummaryPreviousRateBasesHumanClickRate humanClickRate; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesBounceRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesBounceRate.java new file mode 100644 index 0000000..dd2cd0e --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesBounceRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryPreviousRateBasesBounceRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesComplaintRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesComplaintRate.java new file mode 100644 index 0000000..d7df134 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesComplaintRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryPreviousRateBasesComplaintRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesDeferralRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesDeferralRate.java new file mode 100644 index 0000000..f46296d --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesDeferralRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryPreviousRateBasesDeferralRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesDeliveryRate.java new file mode 100644 index 0000000..8235aef --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryPreviousRateBasesDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesEffectiveDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesEffectiveDeliveryRate.java new file mode 100644 index 0000000..fba38f7 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesEffectiveDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryPreviousRateBasesEffectiveDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesHumanClickRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesHumanClickRate.java new file mode 100644 index 0000000..20a2558 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesHumanClickRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryPreviousRateBasesHumanClickRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesHumanOpenRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesHumanOpenRate.java new file mode 100644 index 0000000..6cc249a --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryPreviousRateBasesHumanOpenRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryPreviousRateBasesHumanOpenRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBases.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBases.java new file mode 100644 index 0000000..484032d --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBases.java @@ -0,0 +1,28 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryRateBases { + @JsonProperty("delivery_rate") + public AnalyticsResponsePayloadSummaryRateBasesDeliveryRate deliveryRate; + + @JsonProperty("effective_delivery_rate") + public AnalyticsResponsePayloadSummaryRateBasesEffectiveDeliveryRate effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public AnalyticsResponsePayloadSummaryRateBasesBounceRate bounceRate; + + @JsonProperty("deferral_rate") + public AnalyticsResponsePayloadSummaryRateBasesDeferralRate deferralRate; + + @JsonProperty("complaint_rate") + public AnalyticsResponsePayloadSummaryRateBasesComplaintRate complaintRate; + + @JsonProperty("human_open_rate") + public AnalyticsResponsePayloadSummaryRateBasesHumanOpenRate humanOpenRate; + + @JsonProperty("human_click_rate") + public AnalyticsResponsePayloadSummaryRateBasesHumanClickRate humanClickRate; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesBounceRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesBounceRate.java new file mode 100644 index 0000000..85d2d88 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesBounceRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryRateBasesBounceRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesComplaintRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesComplaintRate.java new file mode 100644 index 0000000..9d16c6b --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesComplaintRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryRateBasesComplaintRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesDeferralRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesDeferralRate.java new file mode 100644 index 0000000..729b8cf --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesDeferralRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryRateBasesDeferralRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesDeliveryRate.java new file mode 100644 index 0000000..cd454e0 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryRateBasesDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesEffectiveDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesEffectiveDeliveryRate.java new file mode 100644 index 0000000..ca9777d --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesEffectiveDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryRateBasesEffectiveDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesHumanClickRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesHumanClickRate.java new file mode 100644 index 0000000..4eb3774 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesHumanClickRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryRateBasesHumanClickRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesHumanOpenRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesHumanOpenRate.java new file mode 100644 index 0000000..f881be4 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadSummaryRateBasesHumanOpenRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadSummaryRateBasesHumanOpenRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItem.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItem.java new file mode 100644 index 0000000..620126e --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItem.java @@ -0,0 +1,32 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Map; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItem { + @JsonProperty("metrics") + public AnalyticsResponsePayloadTimeSeriesItemMetrics metrics; + + @JsonProperty("rate_bases") + public AnalyticsResponsePayloadTimeSeriesItemRateBases rateBases; + + @JsonProperty("previous") + public AnalyticsResponsePayloadTimeSeriesItemPrevious previous; + + @JsonProperty("change") + public Map> change; + + @JsonProperty("from") + public String fromValue; + + @JsonProperty("to") + public String to; + + @JsonProperty("available") + public Boolean available; + + @JsonProperty("partial") + public Boolean partial; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemMetrics.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemMetrics.java new file mode 100644 index 0000000..9ae3dd0 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemMetrics.java @@ -0,0 +1,208 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemMetrics { + @JsonProperty("accepted") + public Integer accepted; + + @JsonProperty("processed") + public Integer processed; + + @JsonProperty("suppressed") + public Integer suppressed; + + @JsonProperty("policy_rejected") + public Integer policyRejected; + + @JsonProperty("application_failed") + public Integer applicationFailed; + + @JsonProperty("mta_accepted") + public Integer mtaAccepted; + + @JsonProperty("canceled") + public Integer canceled; + + @JsonProperty("messages") + public Integer messages; + + @JsonProperty("delivered") + public Integer delivered; + + @JsonProperty("bounced") + public Integer bounced; + + @JsonProperty("soft_bounced") + public Integer softBounced; + + @JsonProperty("administratively_bounced") + public Integer administrativelyBounced; + + @JsonProperty("deferred_recipients") + public Integer deferredRecipients; + + @JsonProperty("deferred_events") + public Integer deferredEvents; + + @JsonProperty("delivery_attempts") + public Integer deliveryAttempts; + + @JsonProperty("attempted_recipients") + public Integer attemptedRecipients; + + @JsonProperty("transport_outcome_recipients") + public Integer transportOutcomeRecipients; + + @JsonProperty("effective_delivered") + public Integer effectiveDelivered; + + @JsonProperty("open_tracked_delivered") + public Integer openTrackedDelivered; + + @JsonProperty("click_tracked_delivered") + public Integer clickTrackedDelivered; + + @JsonProperty("out_of_band_bounced_recipients") + public Integer outOfBandBouncedRecipients; + + @JsonProperty("out_of_band_bounce_events") + public Integer outOfBandBounceEvents; + + @JsonProperty("complained") + public Integer complained; + + @JsonProperty("unsubscribed") + public Integer unsubscribed; + + @JsonProperty("human_opens") + public Integer humanOpens; + + @JsonProperty("human_opens_events") + public Integer humanOpensEvents; + + @JsonProperty("human_clicks") + public Integer humanClicks; + + @JsonProperty("human_clicks_events") + public Integer humanClicksEvents; + + @JsonProperty("machine_opens") + public Integer machineOpens; + + @JsonProperty("machine_opens_events") + public Integer machineOpensEvents; + + @JsonProperty("machine_clicks") + public Integer machineClicks; + + @JsonProperty("machine_clicks_events") + public Integer machineClicksEvents; + + @JsonProperty("privacy_opens") + public Integer privacyOpens; + + @JsonProperty("privacy_opens_events") + public Integer privacyOpensEvents; + + @JsonProperty("privacy_clicks") + public Integer privacyClicks; + + @JsonProperty("privacy_clicks_events") + public Integer privacyClicksEvents; + + @JsonProperty("bot_opens") + public Integer botOpens; + + @JsonProperty("bot_opens_events") + public Integer botOpensEvents; + + @JsonProperty("bot_clicks") + public Integer botClicks; + + @JsonProperty("bot_clicks_events") + public Integer botClicksEvents; + + @JsonProperty("scanner_opens") + public Integer scannerOpens; + + @JsonProperty("scanner_opens_events") + public Integer scannerOpensEvents; + + @JsonProperty("scanner_clicks") + public Integer scannerClicks; + + @JsonProperty("scanner_clicks_events") + public Integer scannerClicksEvents; + + @JsonProperty("observed_opens") + public Integer observedOpens; + + @JsonProperty("observed_opens_events") + public Integer observedOpensEvents; + + @JsonProperty("observed_clicks") + public Integer observedClicks; + + @JsonProperty("observed_clicks_events") + public Integer observedClicksEvents; + + @JsonProperty("delivery_rate") + public Double deliveryRate; + + @JsonProperty("effective_delivery_rate") + public Double effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public Double bounceRate; + + @JsonProperty("deferral_rate") + public Double deferralRate; + + @JsonProperty("complaint_rate") + public Double complaintRate; + + @JsonProperty("human_open_rate") + public Double humanOpenRate; + + @JsonProperty("human_click_rate") + public Double humanClickRate; + + @JsonProperty("processing_latency_p50_ms") + public Double processingLatencyP50Ms; + + @JsonProperty("processing_latency_p95_ms") + public Double processingLatencyP95Ms; + + @JsonProperty("processing_latency_p99_ms") + public Double processingLatencyP99Ms; + + @JsonProperty("processing_latency_samples") + public Integer processingLatencySamples; + + @JsonProperty("delivery_latency_p50_ms") + public Double deliveryLatencyP50Ms; + + @JsonProperty("delivery_latency_p95_ms") + public Double deliveryLatencyP95Ms; + + @JsonProperty("delivery_latency_p99_ms") + public Double deliveryLatencyP99Ms; + + @JsonProperty("delivery_latency_samples") + public Integer deliveryLatencySamples; + + @JsonProperty("total_latency_p50_ms") + public Double totalLatencyP50Ms; + + @JsonProperty("total_latency_p95_ms") + public Double totalLatencyP95Ms; + + @JsonProperty("total_latency_p99_ms") + public Double totalLatencyP99Ms; + + @JsonProperty("total_latency_samples") + public Integer totalLatencySamples; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPrevious.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPrevious.java new file mode 100644 index 0000000..81569a2 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPrevious.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemPrevious { + @JsonProperty("metrics") + public AnalyticsResponsePayloadTimeSeriesItemPreviousMetrics metrics; + + @JsonProperty("rate_bases") + public AnalyticsResponsePayloadTimeSeriesItemPreviousRateBases rateBases; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousMetrics.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousMetrics.java new file mode 100644 index 0000000..380c587 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousMetrics.java @@ -0,0 +1,208 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemPreviousMetrics { + @JsonProperty("accepted") + public Integer accepted; + + @JsonProperty("processed") + public Integer processed; + + @JsonProperty("suppressed") + public Integer suppressed; + + @JsonProperty("policy_rejected") + public Integer policyRejected; + + @JsonProperty("application_failed") + public Integer applicationFailed; + + @JsonProperty("mta_accepted") + public Integer mtaAccepted; + + @JsonProperty("canceled") + public Integer canceled; + + @JsonProperty("messages") + public Integer messages; + + @JsonProperty("delivered") + public Integer delivered; + + @JsonProperty("bounced") + public Integer bounced; + + @JsonProperty("soft_bounced") + public Integer softBounced; + + @JsonProperty("administratively_bounced") + public Integer administrativelyBounced; + + @JsonProperty("deferred_recipients") + public Integer deferredRecipients; + + @JsonProperty("deferred_events") + public Integer deferredEvents; + + @JsonProperty("delivery_attempts") + public Integer deliveryAttempts; + + @JsonProperty("attempted_recipients") + public Integer attemptedRecipients; + + @JsonProperty("transport_outcome_recipients") + public Integer transportOutcomeRecipients; + + @JsonProperty("effective_delivered") + public Integer effectiveDelivered; + + @JsonProperty("open_tracked_delivered") + public Integer openTrackedDelivered; + + @JsonProperty("click_tracked_delivered") + public Integer clickTrackedDelivered; + + @JsonProperty("out_of_band_bounced_recipients") + public Integer outOfBandBouncedRecipients; + + @JsonProperty("out_of_band_bounce_events") + public Integer outOfBandBounceEvents; + + @JsonProperty("complained") + public Integer complained; + + @JsonProperty("unsubscribed") + public Integer unsubscribed; + + @JsonProperty("human_opens") + public Integer humanOpens; + + @JsonProperty("human_opens_events") + public Integer humanOpensEvents; + + @JsonProperty("human_clicks") + public Integer humanClicks; + + @JsonProperty("human_clicks_events") + public Integer humanClicksEvents; + + @JsonProperty("machine_opens") + public Integer machineOpens; + + @JsonProperty("machine_opens_events") + public Integer machineOpensEvents; + + @JsonProperty("machine_clicks") + public Integer machineClicks; + + @JsonProperty("machine_clicks_events") + public Integer machineClicksEvents; + + @JsonProperty("privacy_opens") + public Integer privacyOpens; + + @JsonProperty("privacy_opens_events") + public Integer privacyOpensEvents; + + @JsonProperty("privacy_clicks") + public Integer privacyClicks; + + @JsonProperty("privacy_clicks_events") + public Integer privacyClicksEvents; + + @JsonProperty("bot_opens") + public Integer botOpens; + + @JsonProperty("bot_opens_events") + public Integer botOpensEvents; + + @JsonProperty("bot_clicks") + public Integer botClicks; + + @JsonProperty("bot_clicks_events") + public Integer botClicksEvents; + + @JsonProperty("scanner_opens") + public Integer scannerOpens; + + @JsonProperty("scanner_opens_events") + public Integer scannerOpensEvents; + + @JsonProperty("scanner_clicks") + public Integer scannerClicks; + + @JsonProperty("scanner_clicks_events") + public Integer scannerClicksEvents; + + @JsonProperty("observed_opens") + public Integer observedOpens; + + @JsonProperty("observed_opens_events") + public Integer observedOpensEvents; + + @JsonProperty("observed_clicks") + public Integer observedClicks; + + @JsonProperty("observed_clicks_events") + public Integer observedClicksEvents; + + @JsonProperty("delivery_rate") + public Double deliveryRate; + + @JsonProperty("effective_delivery_rate") + public Double effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public Double bounceRate; + + @JsonProperty("deferral_rate") + public Double deferralRate; + + @JsonProperty("complaint_rate") + public Double complaintRate; + + @JsonProperty("human_open_rate") + public Double humanOpenRate; + + @JsonProperty("human_click_rate") + public Double humanClickRate; + + @JsonProperty("processing_latency_p50_ms") + public Double processingLatencyP50Ms; + + @JsonProperty("processing_latency_p95_ms") + public Double processingLatencyP95Ms; + + @JsonProperty("processing_latency_p99_ms") + public Double processingLatencyP99Ms; + + @JsonProperty("processing_latency_samples") + public Integer processingLatencySamples; + + @JsonProperty("delivery_latency_p50_ms") + public Double deliveryLatencyP50Ms; + + @JsonProperty("delivery_latency_p95_ms") + public Double deliveryLatencyP95Ms; + + @JsonProperty("delivery_latency_p99_ms") + public Double deliveryLatencyP99Ms; + + @JsonProperty("delivery_latency_samples") + public Integer deliveryLatencySamples; + + @JsonProperty("total_latency_p50_ms") + public Double totalLatencyP50Ms; + + @JsonProperty("total_latency_p95_ms") + public Double totalLatencyP95Ms; + + @JsonProperty("total_latency_p99_ms") + public Double totalLatencyP99Ms; + + @JsonProperty("total_latency_samples") + public Integer totalLatencySamples; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBases.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBases.java new file mode 100644 index 0000000..dbc22af --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBases.java @@ -0,0 +1,28 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemPreviousRateBases { + @JsonProperty("delivery_rate") + public AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesDeliveryRate deliveryRate; + + @JsonProperty("effective_delivery_rate") + public AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesEffectiveDeliveryRate effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesBounceRate bounceRate; + + @JsonProperty("deferral_rate") + public AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesDeferralRate deferralRate; + + @JsonProperty("complaint_rate") + public AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesComplaintRate complaintRate; + + @JsonProperty("human_open_rate") + public AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesHumanOpenRate humanOpenRate; + + @JsonProperty("human_click_rate") + public AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesHumanClickRate humanClickRate; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesBounceRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesBounceRate.java new file mode 100644 index 0000000..47954ba --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesBounceRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesBounceRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesComplaintRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesComplaintRate.java new file mode 100644 index 0000000..6aa95ac --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesComplaintRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesComplaintRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesDeferralRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesDeferralRate.java new file mode 100644 index 0000000..97fbc6f --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesDeferralRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesDeferralRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesDeliveryRate.java new file mode 100644 index 0000000..84d6a29 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesEffectiveDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesEffectiveDeliveryRate.java new file mode 100644 index 0000000..9ec4965 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesEffectiveDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesEffectiveDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesHumanClickRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesHumanClickRate.java new file mode 100644 index 0000000..ca9f0c5 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesHumanClickRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesHumanClickRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesHumanOpenRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesHumanOpenRate.java new file mode 100644 index 0000000..9f49557 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesHumanOpenRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemPreviousRateBasesHumanOpenRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBases.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBases.java new file mode 100644 index 0000000..1e329e2 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBases.java @@ -0,0 +1,28 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemRateBases { + @JsonProperty("delivery_rate") + public AnalyticsResponsePayloadTimeSeriesItemRateBasesDeliveryRate deliveryRate; + + @JsonProperty("effective_delivery_rate") + public AnalyticsResponsePayloadTimeSeriesItemRateBasesEffectiveDeliveryRate effectiveDeliveryRate; + + @JsonProperty("bounce_rate") + public AnalyticsResponsePayloadTimeSeriesItemRateBasesBounceRate bounceRate; + + @JsonProperty("deferral_rate") + public AnalyticsResponsePayloadTimeSeriesItemRateBasesDeferralRate deferralRate; + + @JsonProperty("complaint_rate") + public AnalyticsResponsePayloadTimeSeriesItemRateBasesComplaintRate complaintRate; + + @JsonProperty("human_open_rate") + public AnalyticsResponsePayloadTimeSeriesItemRateBasesHumanOpenRate humanOpenRate; + + @JsonProperty("human_click_rate") + public AnalyticsResponsePayloadTimeSeriesItemRateBasesHumanClickRate humanClickRate; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesBounceRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesBounceRate.java new file mode 100644 index 0000000..c8ab78c --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesBounceRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemRateBasesBounceRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesComplaintRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesComplaintRate.java new file mode 100644 index 0000000..7a33c62 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesComplaintRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemRateBasesComplaintRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesDeferralRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesDeferralRate.java new file mode 100644 index 0000000..c46476b --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesDeferralRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemRateBasesDeferralRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesDeliveryRate.java new file mode 100644 index 0000000..9bb3565 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemRateBasesDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesEffectiveDeliveryRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesEffectiveDeliveryRate.java new file mode 100644 index 0000000..24bfcdf --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesEffectiveDeliveryRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemRateBasesEffectiveDeliveryRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesHumanClickRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesHumanClickRate.java new file mode 100644 index 0000000..c367ed6 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesHumanClickRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemRateBasesHumanClickRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesHumanOpenRate.java b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesHumanOpenRate.java new file mode 100644 index 0000000..3fcb551 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/AnalyticsResponsePayloadTimeSeriesItemRateBasesHumanOpenRate.java @@ -0,0 +1,13 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class AnalyticsResponsePayloadTimeSeriesItemRateBasesHumanOpenRate { + @JsonProperty("numerator") + public Integer numerator; + + @JsonProperty("denominator") + public Integer denominator; +} diff --git a/src/main/java/co/lettermint/models/api/GetReportForwardingResponse.java b/src/main/java/co/lettermint/models/api/GetReportForwardingResponse.java new file mode 100644 index 0000000..0c8206e --- /dev/null +++ b/src/main/java/co/lettermint/models/api/GetReportForwardingResponse.java @@ -0,0 +1,10 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class GetReportForwardingResponse { + @JsonProperty("data") + public ReportForwardingResource data; +} diff --git a/src/main/java/co/lettermint/models/api/ProjectCreatedData.java b/src/main/java/co/lettermint/models/api/ProjectCreatedData.java new file mode 100644 index 0000000..6b65672 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/ProjectCreatedData.java @@ -0,0 +1,16 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class ProjectCreatedData { + @JsonProperty("data") + public ProjectData data; + + @JsonProperty("message") + public String message; + + @JsonProperty("api_token") + public String apiToken; +} diff --git a/src/main/java/co/lettermint/models/api/ProjectListData.java b/src/main/java/co/lettermint/models/api/ProjectListData.java index 2e35eb8..1eecd24 100644 --- a/src/main/java/co/lettermint/models/api/ProjectListData.java +++ b/src/main/java/co/lettermint/models/api/ProjectListData.java @@ -11,6 +11,9 @@ public class ProjectListData { @JsonProperty("name") public String name; + @JsonProperty("delivery_mode") + public String deliveryMode; + @JsonProperty("smtp_enabled") public Boolean smtpEnabled; diff --git a/src/main/java/co/lettermint/models/api/RbacPermission.java b/src/main/java/co/lettermint/models/api/RbacPermission.java index e28b9d2..a3ed6aa 100644 --- a/src/main/java/co/lettermint/models/api/RbacPermission.java +++ b/src/main/java/co/lettermint/models/api/RbacPermission.java @@ -35,6 +35,7 @@ public final class RbacPermission { public static final String WEBHOOKSDELETE = "webhooks:delete"; public static final String WEBHOOKSROTATESECRET = "webhooks:rotate_secret"; public static final String STATSREAD = "stats:read"; + public static final String ANALYTICSREAD = "analytics:read"; public static final String MESSAGESREAD = "messages:read"; public static final String MESSAGESREADCONTENT = "messages:read_content"; public static final String MESSAGESSEND = "messages:send"; diff --git a/src/main/java/co/lettermint/models/api/ReportForwardingRequest.java b/src/main/java/co/lettermint/models/api/ReportForwardingRequest.java new file mode 100644 index 0000000..0e1a7f3 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/ReportForwardingRequest.java @@ -0,0 +1,10 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class ReportForwardingRequest { + @JsonProperty("destination") + public String destination; +} diff --git a/src/main/java/co/lettermint/models/api/ReportForwardingResource.java b/src/main/java/co/lettermint/models/api/ReportForwardingResource.java new file mode 100644 index 0000000..b3e1dc3 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/ReportForwardingResource.java @@ -0,0 +1,16 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class ReportForwardingResource { + @JsonProperty("destination") + public String destination; + + @JsonProperty("verified") + public Boolean verified; + + @JsonProperty("verified_at") + public String verifiedAt; +} diff --git a/src/main/java/co/lettermint/models/api/ResendReportForwardingCodeResponse.java b/src/main/java/co/lettermint/models/api/ResendReportForwardingCodeResponse.java new file mode 100644 index 0000000..1e55202 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/ResendReportForwardingCodeResponse.java @@ -0,0 +1,10 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class ResendReportForwardingCodeResponse { + @JsonProperty("data") + public ReportForwardingResource data; +} diff --git a/src/main/java/co/lettermint/models/api/SendMailResponse.java b/src/main/java/co/lettermint/models/api/SendMailResponse.java index 81ad75e..19196e2 100644 --- a/src/main/java/co/lettermint/models/api/SendMailResponse.java +++ b/src/main/java/co/lettermint/models/api/SendMailResponse.java @@ -11,12 +11,12 @@ public class SendMailResponse { @JsonProperty("status") public String status; - @JsonProperty("scheduled_at") - public String scheduledAt; - @JsonProperty("sandbox") public Boolean sandbox; @JsonProperty("sandbox_result") public String sandboxResult; + + @JsonProperty("scheduled_at") + public String scheduledAt; } diff --git a/src/main/java/co/lettermint/models/api/StoreProjectData.java b/src/main/java/co/lettermint/models/api/StoreProjectData.java index 5ac9f69..2d05a43 100644 --- a/src/main/java/co/lettermint/models/api/StoreProjectData.java +++ b/src/main/java/co/lettermint/models/api/StoreProjectData.java @@ -11,12 +11,15 @@ public class StoreProjectData { @JsonProperty("smtp_enabled") public Boolean smtpEnabled; + @JsonProperty("delivery_mode") + public String deliveryMode; + @JsonProperty("initial_routes") public String initialRoutes; @JsonProperty("short_token") public Boolean shortToken; - @JsonProperty("delivery_mode") - public String deliveryMode; + @JsonProperty("redact_email_content") + public Boolean redactEmailContent; } diff --git a/src/main/java/co/lettermint/models/api/StoreRouteData.java b/src/main/java/co/lettermint/models/api/StoreRouteData.java index f64ae57..0a98090 100644 --- a/src/main/java/co/lettermint/models/api/StoreRouteData.java +++ b/src/main/java/co/lettermint/models/api/StoreRouteData.java @@ -13,4 +13,19 @@ public class StoreRouteData { @JsonProperty("slug") public String slug; + + @JsonProperty("settings") + public UpdateRouteSettingsData settings; + + @JsonProperty("inbound_settings") + public UpdateRouteInboundSettingsData inboundSettings; + + @JsonProperty("inbound_domain") + public String inboundDomain; + + @JsonProperty("inbound_spam_threshold") + public Double inboundSpamThreshold; + + @JsonProperty("attachment_delivery") + public String attachmentDelivery; } diff --git a/src/main/java/co/lettermint/models/api/SuppressionDestroyResponse.java b/src/main/java/co/lettermint/models/api/SuppressionDestroyResponse.java index 79b6fa2..0573063 100644 --- a/src/main/java/co/lettermint/models/api/SuppressionDestroyResponse.java +++ b/src/main/java/co/lettermint/models/api/SuppressionDestroyResponse.java @@ -16,4 +16,7 @@ public class SuppressionDestroyResponse { @JsonProperty("confidence") public Double confidence; + + @JsonProperty("ticket_identifier") + public String ticketIdentifier; } diff --git a/src/main/java/co/lettermint/models/api/UpdateReportForwardingRequest.java b/src/main/java/co/lettermint/models/api/UpdateReportForwardingRequest.java new file mode 100644 index 0000000..987c199 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/UpdateReportForwardingRequest.java @@ -0,0 +1,10 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class UpdateReportForwardingRequest { + @JsonProperty("destination") + public String destination; +} diff --git a/src/main/java/co/lettermint/models/api/UpdateReportForwardingResponse.java b/src/main/java/co/lettermint/models/api/UpdateReportForwardingResponse.java new file mode 100644 index 0000000..7876d1c --- /dev/null +++ b/src/main/java/co/lettermint/models/api/UpdateReportForwardingResponse.java @@ -0,0 +1,10 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class UpdateReportForwardingResponse { + @JsonProperty("data") + public ReportForwardingResource data; +} diff --git a/src/main/java/co/lettermint/models/api/UpdateRouteData.java b/src/main/java/co/lettermint/models/api/UpdateRouteData.java index 0978ddb..cbb8a33 100644 --- a/src/main/java/co/lettermint/models/api/UpdateRouteData.java +++ b/src/main/java/co/lettermint/models/api/UpdateRouteData.java @@ -13,4 +13,13 @@ public class UpdateRouteData { @JsonProperty("inbound_settings") public UpdateRouteInboundSettingsData inboundSettings; + + @JsonProperty("inbound_domain") + public String inboundDomain; + + @JsonProperty("inbound_spam_threshold") + public Double inboundSpamThreshold; + + @JsonProperty("attachment_delivery") + public String attachmentDelivery; } diff --git a/src/main/java/co/lettermint/models/api/VerifyReportForwardingRequest.java b/src/main/java/co/lettermint/models/api/VerifyReportForwardingRequest.java new file mode 100644 index 0000000..79bb669 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/VerifyReportForwardingRequest.java @@ -0,0 +1,10 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class VerifyReportForwardingRequest { + @JsonProperty("code") + public String code; +} diff --git a/src/main/java/co/lettermint/models/api/VerifyReportForwardingResponse.java b/src/main/java/co/lettermint/models/api/VerifyReportForwardingResponse.java new file mode 100644 index 0000000..cfcd6a4 --- /dev/null +++ b/src/main/java/co/lettermint/models/api/VerifyReportForwardingResponse.java @@ -0,0 +1,10 @@ +package co.lettermint.models.api; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class VerifyReportForwardingResponse { + @JsonProperty("data") + public ReportForwardingResource data; +} diff --git a/src/main/java/co/lettermint/models/api/WebhookDeliveryListData.java b/src/main/java/co/lettermint/models/api/WebhookDeliveryListData.java index 5cbb9c1..02dcc0a 100644 --- a/src/main/java/co/lettermint/models/api/WebhookDeliveryListData.java +++ b/src/main/java/co/lettermint/models/api/WebhookDeliveryListData.java @@ -26,6 +26,9 @@ public class WebhookDeliveryListData { @JsonProperty("status") public String status; + @JsonProperty("sandbox") + public Boolean sandbox; + @JsonProperty("attempt_number") public Integer attemptNumber; diff --git a/src/main/java/co/lettermint/models/api/WebhookListData.java b/src/main/java/co/lettermint/models/api/WebhookListData.java index 7085c8b..f417c07 100644 --- a/src/main/java/co/lettermint/models/api/WebhookListData.java +++ b/src/main/java/co/lettermint/models/api/WebhookListData.java @@ -33,6 +33,9 @@ public class WebhookListData { @JsonProperty("enabled") public Boolean enabled; + @JsonProperty("delivery_mode_filter") + public String deliveryModeFilter; + @JsonProperty("last_called_at") public String lastCalledAt; diff --git a/src/test/java/co/lettermint/AnalyticsForwardingTest.java b/src/test/java/co/lettermint/AnalyticsForwardingTest.java new file mode 100644 index 0000000..8e5dea2 --- /dev/null +++ b/src/test/java/co/lettermint/AnalyticsForwardingTest.java @@ -0,0 +1,61 @@ +package co.lettermint; + +import co.lettermint.api.ApiClient; +import co.lettermint.models.api.*; +import com.fasterxml.jackson.databind.ObjectMapper; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okhttp3.mockwebserver.RecordedRequest; +import org.junit.jupiter.api.Test; +import java.util.Arrays; +import static org.junit.jupiter.api.Assertions.*; + +class AnalyticsForwardingTest { + @Test + void analyticsAndForwardingUseTheirWireContracts() throws Exception { + try (MockWebServer server = new MockWebServer()) { + server.enqueue(new MockResponse().setBody("{\"data\":{\"summary\":{}},\"meta\":{\"timezone\":\"UTC\"},\"pagination\":{\"total_groups\":0,\"returned_groups\":0,\"next_cursor\":null,\"truncated\":false}}")); + for (int i=0; i<4; i++) server.enqueue(new MockResponse().setBody("{\"data\":{\"destination\":null,\"verified\":false,\"verified_at\":null}}")); + server.enqueue(new MockResponse().setResponseCode(204)); + server.start(); + ApiClient api = Lettermint.api("team-token", server.url("/v1").toString()); + AnalyticsRequest payload = new AnalyticsRequest(); + payload.metrics = Arrays.asList("accepted", "delivered"); + payload.include = Arrays.asList("summary"); + assertEquals("UTC", api.analytics(payload).meta.timezone); + assertNull(api.projects().retrieveReportForwarding("project/id").data.destination); + ReportForwardingRequest destination = new ReportForwardingRequest(); + destination.destination = "reports@example.com"; + api.projects().updateReportForwarding("project/id", destination); + VerifyReportForwardingRequest code = new VerifyReportForwardingRequest(); + code.code = "123456"; + api.projects().verifyReportForwarding("project/id", code); + api.projects().resendReportForwardingCode("project/id"); + api.projects().deleteReportForwarding("project/id"); + String base = "/v1/projects/project%2Fid/report-forwarding"; + String[] paths = {"/v1/analytics", base, base, base+"/verify", base+"/resend-code", base}; + String[] methods = {"POST", "GET", "PUT", "POST", "POST", "DELETE"}; + ObjectMapper mapper = new ObjectMapper(); + for (int i=0; i<6; i++) { + RecordedRequest request = server.takeRequest(); + assertEquals(paths[i], request.getPath()); + assertEquals(methods[i], request.getMethod()); + assertEquals("Bearer team-token", request.getHeader("Authorization")); + assertNull(request.getHeader("x-lettermint-token")); + if (i==0) assertEquals("accepted", mapper.readTree(request.getBody().readUtf8()).get("metrics").get(0).asText()); + if (i==2) assertEquals("reports@example.com", mapper.readTree(request.getBody().readUtf8()).get("destination").asText()); + if (i==3) assertEquals("123456", mapper.readTree(request.getBody().readUtf8()).get("code").asText()); + } + } + } + + @Test + void updatedResponseFieldsRemainAvailable() throws Exception { + ObjectMapper mapper = new ObjectMapper(); + ProjectStoreResponse created = mapper.readValue("{\"data\":{},\"message\":\"Created\",\"api_token\":\"project-token\"}", ProjectStoreResponse.class); + assertEquals("project-token", created.apiToken); + SuppressionDestroyResponse review = mapper.readValue("{\"success\":true,\"status\":\"review_ticket_exists\",\"message\":\"Review\",\"ticket_identifier\":\"ticket-1\",\"confidence\":0.9}", SuppressionDestroyResponse.class); + assertEquals("ticket-1", review.ticketIdentifier); + assertEquals(0.9, review.confidence); + } +} diff --git a/src/test/java/co/lettermint/ApiClientTest.java b/src/test/java/co/lettermint/ApiClientTest.java index 4d8f44c..1e9379b 100644 --- a/src/test/java/co/lettermint/ApiClientTest.java +++ b/src/test/java/co/lettermint/ApiClientTest.java @@ -294,6 +294,12 @@ void apiExposesDocumentedOperations() throws Exception { methods.put("domain.verifySpecificDnsRecord", api.domains().getClass().getMethod("verifyDnsRecord", String.class, String.class)); methods.put("domain.updateProjects", api.domains().getClass().getMethod("updateProjects", String.class, co.lettermint.models.api.UpdateDomainProjectsData.class)); methods.put("v1.ping", api.getClass().getMethod("ping")); + methods.put("v1.analytics", api.getClass().getMethod("analytics", co.lettermint.models.api.AnalyticsRequest.class)); + methods.put("getReportForwarding", api.projects().getClass().getMethod("retrieveReportForwarding", String.class)); + methods.put("updateReportForwarding", api.projects().getClass().getMethod("updateReportForwarding", String.class, co.lettermint.models.api.ReportForwardingRequest.class)); + methods.put("deleteReportForwarding", api.projects().getClass().getMethod("deleteReportForwarding", String.class)); + methods.put("verifyReportForwarding", api.projects().getClass().getMethod("verifyReportForwarding", String.class, co.lettermint.models.api.VerifyReportForwardingRequest.class)); + methods.put("resendReportForwardingCode", api.projects().getClass().getMethod("resendReportForwardingCode", String.class)); methods.put("v1.blockedFileTypes", api.getClass().getMethod("blockedFileTypes")); methods.put("message.index", api.messages().getClass().getMethod("list")); methods.put("message.show", api.messages().getClass().getMethod("retrieve", String.class)); From 029bc87b496573a0b5e6172d64a16a15eaecb776 Mon Sep 17 00:00:00 2001 From: Bjarn Bronsveld Date: Thu, 1 Oct 2026 07:39:13 +0200 Subject: [PATCH 2/2] fix(api): retain cancel response source compatibility --- .../models/api/CancelScheduledMessageResponse.java | 11 +---------- src/test/java/co/lettermint/ApiClientTest.java | 10 ++++++++-- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/main/java/co/lettermint/models/api/CancelScheduledMessageResponse.java b/src/main/java/co/lettermint/models/api/CancelScheduledMessageResponse.java index 4ab0526..5eeb1cd 100644 --- a/src/main/java/co/lettermint/models/api/CancelScheduledMessageResponse.java +++ b/src/main/java/co/lettermint/models/api/CancelScheduledMessageResponse.java @@ -1,16 +1,7 @@ package co.lettermint.models.api; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; @JsonIgnoreProperties(ignoreUnknown = true) -public class CancelScheduledMessageResponse { - @JsonProperty("message_id") - public String messageId; - - @JsonProperty("status") - public String status; - - @JsonProperty("scheduled_at") - public String scheduledAt; +public class CancelScheduledMessageResponse extends RescheduleMessageResponse { } diff --git a/src/test/java/co/lettermint/ApiClientTest.java b/src/test/java/co/lettermint/ApiClientTest.java index 1e9379b..19ec567 100644 --- a/src/test/java/co/lettermint/ApiClientTest.java +++ b/src/test/java/co/lettermint/ApiClientTest.java @@ -154,14 +154,18 @@ void schedulesMessageChangesWithTypedResponses() throws Exception { try (MockWebServer server = new MockWebServer()) { server.enqueue(new MockResponse().setHeader("Content-Type", "application/json").setBody("{\"message_id\":\"msg/id\",\"status\":\"scheduled\",\"scheduled_at\":\"2026-08-27T09:00:00Z\"}")); server.enqueue(new MockResponse().setHeader("Content-Type", "application/json").setBody("{\"message_id\":\"msg/id\",\"status\":\"canceled\",\"scheduled_at\":null}")); - server.enqueue(new MockResponse().setHeader("Content-Type", "application/json").setBody("{\"data\":{\"message_id\":\"msg/id\",\"status\":\"queued\",\"webhook_target_count\":1}}")); + server.enqueue(new MockResponse().setResponseCode(202).setHeader("Content-Type", "application/json").setBody("{\"data\":{\"message_id\":\"msg/id\",\"status\":\"queued\",\"webhook_target_count\":1}}")); server.start(); ApiClient api = Lettermint.api("api-token", server.url("/v1").toString()); co.lettermint.models.api.RescheduleMessageRequest payload = new co.lettermint.models.api.RescheduleMessageRequest(); payload.scheduledAt = "2026-08-27T09:00:00Z"; assertEquals("scheduled", api.messages().reschedule("msg/id", payload).status); - assertEquals("canceled", api.messages().cancel("msg/id").status); + co.lettermint.models.api.CancelScheduledMessageResponse cancelResponse = api.messages().cancel("msg/id"); + co.lettermint.models.api.RescheduleMessageResponse legacyResponse = cancelResponse; + assertEquals("msg/id", legacyResponse.messageId); + assertEquals("canceled", legacyResponse.status); + assertNull(legacyResponse.scheduledAt); assertEquals("queued", api.messages().process("msg/id").data.get("status")); RecordedRequest reschedule = server.takeRequest(); @@ -171,6 +175,8 @@ void schedulesMessageChangesWithTypedResponses() throws Exception { RecordedRequest cancel = server.takeRequest(); assertEquals("POST", cancel.getMethod()); assertEquals("/v1/messages/msg%2Fid/cancel", cancel.getPath()); + assertEquals("Bearer api-token", cancel.getHeader("Authorization")); + assertEquals("", cancel.getBody().readUtf8()); RecordedRequest process = server.takeRequest(); assertEquals("POST", process.getMethod()); assertEquals("/v1/messages/msg%2Fid/process", process.getPath());