publishWithReference(@NotNull JSONObject requestBody)
}
/**
- * To Unpublish an entry call will unpublish an entry at once, and also, gives
- * you the provision to unpublish an
+ * To Un-publish an entry call will un-publish an entry at once, and also, gives
+ * you the provision to un-publish an
* entry automatically at a later date/time.
*
* In the 'Body' section, you can specify the locales and environments from
- * which you want to unpublish the entry.
+ * which you want to un-publish the entry.
* These details should be specified in the
*
* entry parameter. However, if
@@ -778,4 +778,21 @@ public Call unpublish(@NotNull JSONObject requestBody) {
return this.service.unpublish(this.headers, this.contentTypeUid, this.entryUid, requestBody);
}
+
+ /**
+ * Get instance of taxonomy search filter class instance through which we can query on taxonomy based on content type
+ * Examples
+ *
+ *
+ * JSONObject query = new JSONObject();
+ * query.put("taxonomies.taxonomy_uid", "{ \"$in\" : [\"term_uid1\" , \"term_uid2\" ] }");
+ * Response response = entry.query(query).execute();
+ *
+ * instance of {@link Terms}
+ */
+ public Call query(@NotNull JSONObject query) {
+ validateCT();
+ return this.service.filterTaxonomy(this.headers, this.contentTypeUid, query);
+ }
+
}
diff --git a/src/main/java/com/contentstack/cms/stack/EntryService.java b/src/main/java/com/contentstack/cms/stack/EntryService.java
index d5ef1e23..3fe6d220 100644
--- a/src/main/java/com/contentstack/cms/stack/EntryService.java
+++ b/src/main/java/com/contentstack/cms/stack/EntryService.java
@@ -146,4 +146,11 @@ Call unpublish(
@Path("content_type_uid") String contentTypeUid,
@Path("entry_uid") String entryUid,
@Body JSONObject requestBody);
+
+ @GET("content_types/{content_type_uid}/entries")
+ Call filterTaxonomy(
+ @HeaderMap Map headers,
+ @Path("content_type_uid") String contentTypeUid,
+ @Query("query") JSONObject queryObject);
+
}
diff --git a/src/main/java/com/contentstack/cms/stack/Taxonomy.java b/src/main/java/com/contentstack/cms/stack/Taxonomy.java
index 020270e8..fce2db5a 100644
--- a/src/main/java/com/contentstack/cms/stack/Taxonomy.java
+++ b/src/main/java/com/contentstack/cms/stack/Taxonomy.java
@@ -251,4 +251,16 @@ public Terms terms() {
return new Terms(this.taxonomyService, this.headers, this.taxonomyId);
}
+
+ /**
+ * Get instance of taxonomy search filter class instance through which we can query on taxonomy based on Entry
+ * Example usage:
+ * JSONObject object = new JSonObject();
+ * object.put("taxonomies.color", Object)
+ * Taxonomy taxonomy = stack("authtoken").taxonomy("taxonomyId").filterTaxonomy(object);
+ */
+ public Call query(JSONObject query) {
+ return this.taxonomyService.filterTaxonomy(this.headers, query);
+ }
+
}
diff --git a/src/main/java/com/contentstack/cms/stack/TaxonomyService.java b/src/main/java/com/contentstack/cms/stack/TaxonomyService.java
index f104c368..571a9bcb 100644
--- a/src/main/java/com/contentstack/cms/stack/TaxonomyService.java
+++ b/src/main/java/com/contentstack/cms/stack/TaxonomyService.java
@@ -91,4 +91,11 @@ Call reorder(
Call searchTerm(
@HeaderMap HashMap headers,
@Query("typeahead") String termString);
+
+
+ @GET("taxonomies/entries")
+ Call filterTaxonomy(
+ @HeaderMap HashMap headers,
+ @Query("query") JSONObject queryObject
+ );
}
diff --git a/src/test/java/com/contentstack/cms/ContentstackUnitTest.java b/src/test/java/com/contentstack/cms/ContentstackUnitTest.java
index ea4e09f6..eaca866e 100644
--- a/src/test/java/com/contentstack/cms/ContentstackUnitTest.java
+++ b/src/test/java/com/contentstack/cms/ContentstackUnitTest.java
@@ -250,7 +250,7 @@ public void testValidOrganization() {
@Test
public void testNullOrganizationUid() {
Contentstack client = new Contentstack.Builder().setAuthtoken("fake@authtoken").build();
- Assertions.assertThrows(IllegalArgumentException.class, () -> client.organization(null));
+ Assertions.assertThrows(NullPointerException.class, () -> client.organization(null));
}
@Test
diff --git a/src/test/java/com/contentstack/cms/stack/EntryFieldUnitTests.java b/src/test/java/com/contentstack/cms/stack/EntryFieldUnitTests.java
index f43cbc0a..f9701a5a 100644
--- a/src/test/java/com/contentstack/cms/stack/EntryFieldUnitTests.java
+++ b/src/test/java/com/contentstack/cms/stack/EntryFieldUnitTests.java
@@ -3,6 +3,7 @@
import com.contentstack.cms.Contentstack;
import com.contentstack.cms.TestClient;
import okhttp3.Request;
+import okhttp3.ResponseBody;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.junit.jupiter.api.*;
@@ -768,4 +769,23 @@ void testHeader() {
Assertions.assertEquals(3, resp.headers().size());
}
+ @Test
+ void queryFiltersOnTaxonomy() {
+ JSONObject query = new JSONObject();
+ query.put("taxonomies.taxonomy_uid", "{ \"$in\" : [\"term_uid1\" , \"term_uid2\" ] }");
+ Request request = entryInstance.query(query).request();
+ Assertions.assertEquals(2, request.headers().names().size());
+ Assertions.assertEquals("GET", request.method());
+ Assertions.assertTrue(request.url().isHttps());
+ Assertions.assertEquals("api.contentstack.io", request.url().host());
+ Assertions.assertEquals(4, request.url().pathSegments().size());
+ Assertions.assertEquals("v3", request.url().pathSegments().get(0));
+ Assertions.assertEquals("content_types", request.url().pathSegments().get(1));
+ Assertions.assertEquals("product", request.url().pathSegments().get(2));
+ Assertions.assertEquals("entries", request.url().pathSegments().get(3));
+ Assertions.assertNull(request.body());
+ Assertions.assertEquals("query={\"taxonomies.taxonomy_uid\":\"{ \\\"$in\\\" : [\\\"term_uid1\\\" , \\\"term_uid2\\\" ] }\"}", request.url().query());
+
+ }
+
}
diff --git a/src/test/java/com/contentstack/cms/stack/TaxonomyTest.java b/src/test/java/com/contentstack/cms/stack/TaxonomyTest.java
index d65d7c3b..23d9fca7 100644
--- a/src/test/java/com/contentstack/cms/stack/TaxonomyTest.java
+++ b/src/test/java/com/contentstack/cms/stack/TaxonomyTest.java
@@ -365,4 +365,27 @@ void findTestAPI() throws IOException {
System.out.println(response);
}
+ @Test
+ void queryFiltersOnTaxonomy() {
+ Taxonomy taxonomy = new Contentstack.Builder()
+ .setAuthtoken(TestClient.AUTHTOKEN)
+ .setHost("api.contentstack.io")
+ .build()
+ .stack("blt12c1ba95c1b11e88")
+ .taxonomy();
+ JSONObject query = new JSONObject();
+ query.put("taxonomies.taxonomy_uid", "{ \"$in\" : [\"term_uid1\" , \"term_uid2\" ] }");
+ Request request = taxonomy.query(query).request();
+ Assertions.assertEquals(1, request.headers().names().size());
+ Assertions.assertEquals("GET", request.method());
+ Assertions.assertTrue(request.url().isHttps());
+ Assertions.assertEquals("api.contentstack.io", request.url().host());
+ Assertions.assertEquals(3, request.url().pathSegments().size());
+ Assertions.assertEquals("v3", request.url().pathSegments().get(0));
+ Assertions.assertEquals("taxonomies", request.url().pathSegments().get(1));
+ Assertions.assertEquals("entries", request.url().pathSegments().get(2));
+ Assertions.assertNull(request.body());
+ Assertions.assertEquals("query={\"taxonomies.taxonomy_uid\":\"{ \\\"$in\\\" : [\\\"term_uid1\\\" , \\\"term_uid2\\\" ] }\"}", request.url().query());
+ }
+
}