diff --git a/src/main/java/co/lettermint/endpoints/EmailEndpoint.java b/src/main/java/co/lettermint/endpoints/EmailEndpoint.java index faad957..62e7145 100644 --- a/src/main/java/co/lettermint/endpoints/EmailEndpoint.java +++ b/src/main/java/co/lettermint/endpoints/EmailEndpoint.java @@ -27,6 +27,7 @@ public class EmailEndpoint extends Endpoint { private String route; private Map metadata; private String tag; + private List> tags; private Map settings; private String idempotencyKey; @@ -52,6 +53,7 @@ private void reset() { this.route = null; this.metadata = new LinkedHashMap<>(); this.tag = null; + this.tags = new ArrayList<>(); this.settings = null; this.idempotencyKey = null; } @@ -205,6 +207,15 @@ public EmailEndpoint tag(String tag) { return this; } + /** + * Set reusable name-value tags for the email. + */ + @SafeVarargs + public final EmailEndpoint tags(Map... tags) { + this.tags = new ArrayList<>(Arrays.asList(tags)); + return this; + } + /** * Set per-email settings that override the selected route. */ @@ -313,6 +324,10 @@ private Map buildPayload() { payload.put("tag", tag); } + if (!tags.isEmpty()) { + payload.put("tags", tags); + } + if (settings != null) { payload.put("settings", settings); } diff --git a/src/main/java/co/lettermint/models/api/MessageData.java b/src/main/java/co/lettermint/models/api/MessageData.java index 5b6a82f..34dd24a 100644 --- a/src/main/java/co/lettermint/models/api/MessageData.java +++ b/src/main/java/co/lettermint/models/api/MessageData.java @@ -22,6 +22,9 @@ public class MessageData { @JsonProperty("tag") public String tag; + @JsonProperty("tags") + public List> tags; + @JsonProperty("from_email") public String fromEmail; diff --git a/src/main/java/co/lettermint/models/api/MessageEventData.java b/src/main/java/co/lettermint/models/api/MessageEventData.java index d49a262..a2efb0d 100644 --- a/src/main/java/co/lettermint/models/api/MessageEventData.java +++ b/src/main/java/co/lettermint/models/api/MessageEventData.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; import java.util.Map; @JsonIgnoreProperties(ignoreUnknown = true) @@ -12,6 +13,12 @@ public class MessageEventData { @JsonProperty("event") public String event; + @JsonProperty("tag") + public String tag; + + @JsonProperty("tags") + public List> tags; + @JsonProperty("metadata") public Map metadata; diff --git a/src/main/java/co/lettermint/models/api/MessageEventsResponse.java b/src/main/java/co/lettermint/models/api/MessageEventsResponse.java index 3541c19..a866a0e 100644 --- a/src/main/java/co/lettermint/models/api/MessageEventsResponse.java +++ b/src/main/java/co/lettermint/models/api/MessageEventsResponse.java @@ -3,27 +3,16 @@ 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 MessageEventsResponse { @JsonProperty("data") public List data; - @JsonProperty("path") - public String path; + @JsonProperty("links") + public List links; - @JsonProperty("per_page") - public Integer perPage; - - @JsonProperty("next_cursor") - public String nextCursor; - - @JsonProperty("next_page_url") - public String nextPageUrl; - - @JsonProperty("prev_cursor") - public String prevCursor; - - @JsonProperty("prev_page_url") - public String prevPageUrl; + @JsonProperty("meta") + public Map meta; } diff --git a/src/main/java/co/lettermint/models/api/MessageListData.java b/src/main/java/co/lettermint/models/api/MessageListData.java index b38861b..19d735d 100644 --- a/src/main/java/co/lettermint/models/api/MessageListData.java +++ b/src/main/java/co/lettermint/models/api/MessageListData.java @@ -3,6 +3,7 @@ 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 MessageListData { @@ -42,6 +43,9 @@ public class MessageListData { @JsonProperty("tag") public String tag; + @JsonProperty("tags") + public List> tags; + @JsonProperty("status_changed_at") public String statusChangedAt; diff --git a/src/main/java/co/lettermint/models/api/SendMailRequest.java b/src/main/java/co/lettermint/models/api/SendMailRequest.java index e16c940..d0acaa1 100644 --- a/src/main/java/co/lettermint/models/api/SendMailRequest.java +++ b/src/main/java/co/lettermint/models/api/SendMailRequest.java @@ -37,6 +37,9 @@ public class SendMailRequest { @JsonProperty("tag") public String tag; + @JsonProperty("tags") + public List> tags; + @JsonProperty("settings") public Map settings; diff --git a/src/main/java/co/lettermint/models/api/UpdateRouteSettingsData.java b/src/main/java/co/lettermint/models/api/UpdateRouteSettingsData.java index 2aa39fb..b7c98fa 100644 --- a/src/main/java/co/lettermint/models/api/UpdateRouteSettingsData.java +++ b/src/main/java/co/lettermint/models/api/UpdateRouteSettingsData.java @@ -17,6 +17,9 @@ public class UpdateRouteSettingsData { @JsonProperty("suppress_auto_responders") public Boolean suppressAutoResponders; + @JsonProperty("suppress_disposable_recipients") + public Boolean suppressDisposableRecipients; + @JsonProperty("tls") public String tls; diff --git a/src/test/java/co/lettermint/EmailEndpointTest.java b/src/test/java/co/lettermint/EmailEndpointTest.java index 3fd93d9..5cc526c 100644 --- a/src/test/java/co/lettermint/EmailEndpointTest.java +++ b/src/test/java/co/lettermint/EmailEndpointTest.java @@ -70,6 +70,10 @@ void testEmailWithAllOptions() throws Exception { metadata.put("userId", "user_123"); metadata.put("campaign", "welcome"); + Map tags = new HashMap<>(); + tags.put("name", "campaign"); + tags.put("value", "welcome-v2"); + Map settings = new HashMap<>(); settings.put("track_opens", false); settings.put("track_clicks", true); @@ -91,6 +95,7 @@ void testEmailWithAllOptions() throws Exception { .route("route-slug-123") .metadata(metadata) .tag("welcome") + .tags(tags) .settings(settings) .idempotencyKey("unique-key-123") .send(); @@ -111,6 +116,7 @@ void testEmailWithAllOptions() throws Exception { assertTrue(body.contains("\"text\":\"Hello World\"")); assertTrue(body.contains("\"route\":\"route-slug-123\"")); assertTrue(body.contains("\"tag\":\"welcome\"")); + assertTrue(body.contains("\"tags\"")); assertTrue(body.contains("\"settings\":")); assertTrue(body.contains("\"track_opens\":false")); assertTrue(body.contains("\"track_clicks\":true"));