<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>How to use the rest builder correctly to return custom products.</title>
  <link rel="self" href="https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=122380031" />
  <subtitle>How to use the rest builder correctly to return custom products.</subtitle>
  <id>https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=122380031</id>
  <updated>2026-04-05T19:10:42Z</updated>
  <dc:date>2026-04-05T19:10:42Z</dc:date>
  <entry>
    <title>How to use the rest builder correctly to return custom products.</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122380030" />
    <author>
      <name>Kareem Younes</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122380030</id>
    <updated>2024-02-06T18:21:17Z</updated>
    <published>2024-02-05T08:23:51Z</published>
    <summary type="html">&lt;p&gt;I am trying to use the rest builder to build an api that returns the
  products based on a specific category id.&lt;/p&gt;
&lt;pre&gt;
&lt;code class="language-java"&gt;package ProductEndpoint.internal.resource.v1_0;

import com.liferay.petra.function.UnsafeBiConsumer;
import com.liferay.petra.function.UnsafeFunction;
import com.liferay.portal.kernel.search.Sort;
import com.liferay.portal.kernel.search.filter.Filter;
import com.liferay.portal.vulcan.pagination.Page;
import com.liferay.portal.vulcan.pagination.Pagination;

import java.util.Collection;

import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ServiceScope;

import ProductEndpoint.dto.v1_0.Product;
import ProductEndpoint.resource.v1_0.ProductResource;

//import com.liferay.headless.commerce.admin.catalog.client.*;
//import com.liferay.headless.commerce.admin.catalog.client.dto.v1_0.Product;
//import com.liferay.headless.commerce.admin.catalog.client.pagination.Pagination;
//import com.liferay.headless.commerce.admin.catalog.client.resource.v1_0.ProductResource;

/**
 * @author kyounes
 */
@Component(properties = &amp;quot;OSGI-INF/liferay/rest/v1_0/product.properties&amp;quot;, scope = ServiceScope.PROTOTYPE, service = ProductResource.class)
public class ProductResourceImpl extends BaseProductResourceImpl {
    @Override
    public Page &amp;lt; Product &amp;gt; getProductPages(String search, Filter filter, Pagination pagination, Sort[] sorts)
    throws Exception {
        com.liferay.headless.commerce.admin.catalog.client.resource.v1_0.ProductResource.Builder builder = com.liferay.headless.commerce.admin.catalog.client.resource.v1_0.ProductResource.builder();
        com.liferay.headless.commerce.admin.catalog.client.resource.v1_0.ProductResource productResource = builder.authentication(&amp;quot;test@liferay.com&amp;quot;, &amp;quot;test&amp;quot;).build();

        com.liferay.headless.commerce.admin.catalog.client.pagination.Pagination pagination2 = com.liferay.headless.commerce.admin.catalog.client.pagination.Pagination.of(1, 200);
        try {
            System.out.println(productResource.getProductsPage(null, null, pagination2, null));
        } catch (Exception e) {
            System.out.println(e);
        };
        //
        com.liferay.headless.commerce.admin.catalog.client.pagination.Page &amp;lt; com.liferay.headless.commerce.admin.catalog.client.dto.v1_0.Product &amp;gt; page = productResource
            .getProductsPage(null, null, pagination2, null);

        return super.getProductPages(search, filter, pagination, sorts);
    }

    @Override
    public void setContextBatchUnsafeBiConsumer(
        UnsafeBiConsumer &amp;lt; Collection &amp;lt; Product &amp;gt; , UnsafeFunction &amp;lt; Product, Product, Exception &amp;gt; , Exception &amp;gt; contextBatchUnsafeBiConsumer) {
        // TODO Auto-generated method stub

    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;RIght now I am using the
  `com.liferay.headless.commerce.admin.catalog.client` headless api to
  get the products; however, the rest-builder uses the
  `com.liferay.portal.vulcan.pagination.Page` for pagination while the
  headless api uses com.liferay.headless.commerce.admin.catalog.client.pagination.Pagination.&lt;br&gt;
  &lt;br&gt; Right now I am looping over each liferay commerce product and
  mapping it to my product.&lt;br&gt;
  &lt;br&gt; I would love a comprehensive explanation on the right approach of
  achiving such a task, as I am pretty new to this and I would love to
  understand more.&lt;br&gt; Thanks.&lt;/p&gt;</summary>
    <dc:creator>Kareem Younes</dc:creator>
    <dc:date>2024-02-05T08:23:51Z</dc:date>
  </entry>
</feed>
