diff --git a/src/main/java/com/whatsapp/api/impl/WhatsappBusinessManagementApi.java b/src/main/java/com/whatsapp/api/impl/WhatsappBusinessManagementApi.java index 620c3cd97..eccff19ac 100644 --- a/src/main/java/com/whatsapp/api/impl/WhatsappBusinessManagementApi.java +++ b/src/main/java/com/whatsapp/api/impl/WhatsappBusinessManagementApi.java @@ -127,6 +127,18 @@ public MessageTemplates retrieveTemplates(String whatsappBusinessAccountId, Stri return executeSync(whatsappBusinessManagementApiService.retrieveTemplates(apiVersion.getValue(), whatsappBusinessAccountId, Map.of("name", templateName))); } + /** + * Retrieve filtered templates message templates. + * + * @param whatsappBusinessAccountId Represents a specific WhatsApp Business Account (WABA). Make the API call to the WABA ID. + * @param filters map of query objects, key is query parameter and value is query parameter value, i.e. Map.of("name", "templateName") will search by name. + * For all filters see Allowed fields for filtering + * @return {@link MessageTemplates} List of templates + * @see Message templates + */ + public MessageTemplates retrieveTemplates(String whatsappBusinessAccountId, Map filters) { + return executeSync(whatsappBusinessManagementApiService.retrieveTemplates(apiVersion.getValue(), whatsappBusinessAccountId, filters)); + } /** * Retrieve templates message templates. * diff --git a/src/test/java/com/whatsapp/api/impl/WhatsappBusinessManagementApiTest.java b/src/test/java/com/whatsapp/api/impl/WhatsappBusinessManagementApiTest.java index 788d5b7d2..39467bfa8 100644 --- a/src/test/java/com/whatsapp/api/impl/WhatsappBusinessManagementApiTest.java +++ b/src/test/java/com/whatsapp/api/impl/WhatsappBusinessManagementApiTest.java @@ -28,6 +28,7 @@ import java.io.IOException; import java.net.URISyntaxException; import java.util.Collections; +import java.util.Map; import static com.whatsapp.api.configuration.WhatsappApiConfig.getApiVersion; @@ -507,6 +508,24 @@ void testRetrieveMessageTemplate3() throws IOException, URISyntaxException } + @Test + void testRetrieveFilteredMessageTemplate() throws IOException, URISyntaxException, InterruptedException { + WhatsappApiFactory factory = WhatsappApiFactory.newInstance(TOKEN); + + WhatsappBusinessManagementApi whatsappBusinessCloudApi = factory.newBusinessManagementApi(); + mockWebServer.enqueue(new MockResponse().newBuilder().code(200).body(fromResource("/retTemplate3.json")).build()); + + var templates = whatsappBusinessCloudApi.retrieveTemplates(WABA_ID, Map.of("name", "welcome_template3")); + + RecordedRequest recordedRequest = mockWebServer.takeRequest(); + Assertions.assertEquals("GET", recordedRequest.getMethod()); + Assertions.assertEquals("/" + API_VERSION + "/" + WABA_ID + "/message_templates?name=welcome_template3", recordedRequest.getPath()); + + Assertions.assertEquals(1, templates.data().size()); + Assertions.assertEquals("welcome_template3", templates.data().get(0).name()); + Assertions.assertEquals("Hello {{1}}, welcome to our {{2}} test.", templates.data().get(0).components().get(1).getText()); + } + @Test void testRetrieveMessageTemplate3WithLimit() throws IOException, URISyntaxException {