Expand my Community achievements bar.

SOLVED

Access Page Manager API with postman

Avatar

Level 2
I have AEM's instance hosted something like this https://author.dev.demo.adobecqms.net, this is AEM 6.5 version.

I want to create and delete pages on this author instance using AEM's page manager API with any automation tool like JMeter or RestAssured but I have no idea, how to do it.

After spending some time on the internet (hitting in the dark), I am able to at settings.xml in .m2/settings.xml from this post - https://www.aemquickstart.in/2017/04/cannot-create-maven-project.html 

Also, I have below posts

  1. Publish/Unpublish Adobe AEM page from Java AEM Replicator API
  2. Using PageManager API in AEM6/CQ5 page Manager API
  3. https://www.codota.com/code/java/methods/com.day.cq.wcm.api.Page/getParent page Manager API

But how do I implement them? I don't have any AEM coding experience.

Any reference, tutorial, GitHub project, sample code which can help me in understanding how to API APIs on hosted AEM application?

1 Accepted Solution

Avatar

Correct answer by
Level 8

Understanding PageManager API is difficult if you don't have any conceptual knowledge or hands-on experience on AEM, instead of that you can use POSTMAN and CURL commands to create pages.

Use the below command's to create pages, both will work.

curl -u admin:admin -F "jcr:primaryType=cq:Page" -F "jcr:content/jcr:primaryType=cq:PageContent" -F "jcr:content/jcr:title=keysandstrokes" -F "jcr:content/sling:resourceType=geometrixx/components/contentpage" http://localhost:4502/content/geometrixx/en/keysandstrokes

or 

 

curl -u admin:admin –F cmd="createPage" -F label="" -F parentPath="/content/geometrixx/en/company" -F template="/apps/geometrixx/templates/contentpage" -F title="new page" http://localhost:4502/bin/wcmcommand

 

Reference links for more curl commands:

http://www.coderss.in/aem-curl-commands/

https://hashimkhan.in/aem-adobecq5-code-templates/curl-aem-commands/

 

View solution in original post

6 Replies

Avatar

Community Advisor

Hi @iamjeeva ,

 

In order to create/delete a page in AEM programatically, take a look at Page Manager API

https://helpx.adobe.com/experience-manager/6-5/sites/developing/using/reference-materials/javadoc/co...

 

Code Snippet to create a page in AEM:

 

private void createPage (ResourceResolver resolver) throws Exception {

        String path      =  "/content/whatever" ;

        String pageName  = "testpage";

        String pageTitle = "Test Page";

        String template  = "/apps/sample/templates/test";

        Page testPage = null;

        PageManager pageManager = resolver.adaptTo(PageManager.class);

        if (pageManager != null) {

                testPage = pageManager.create(path, pageName, template, pageTitle);        

        }

}

 

 

 

Avatar

Level 2

Hey Chitra - I don't want to set it up on local (can you please trim the answer). 

 

I want to know how can I use PageManager API on my hosted AEM instance (not local instance) like this one https://author.dev.demo.adobecqms.net

 

Can I use this API with Postman? I mean, I fire a POST calls to the AEM REST API and get the pages created.

 

Thanks for the response, I appreciate it.

Avatar

Correct answer by
Level 8

Understanding PageManager API is difficult if you don't have any conceptual knowledge or hands-on experience on AEM, instead of that you can use POSTMAN and CURL commands to create pages.

Use the below command's to create pages, both will work.

curl -u admin:admin -F "jcr:primaryType=cq:Page" -F "jcr:content/jcr:primaryType=cq:PageContent" -F "jcr:content/jcr:title=keysandstrokes" -F "jcr:content/sling:resourceType=geometrixx/components/contentpage" http://localhost:4502/content/geometrixx/en/keysandstrokes

or 

 

curl -u admin:admin –F cmd="createPage" -F label="" -F parentPath="/content/geometrixx/en/company" -F template="/apps/geometrixx/templates/contentpage" -F title="new page" http://localhost:4502/bin/wcmcommand

 

Reference links for more curl commands:

http://www.coderss.in/aem-curl-commands/

https://hashimkhan.in/aem-adobecq5-code-templates/curl-aem-commands/

 

Avatar

Level 2

I tried both, in first curl command I am getting status 500 error

<html>
<head>
<title>Error while processing /libs/wcm/core/content/sites/content/demo-content-pages</title>
</head>
<body>
<h1>Error while processing /libs/wcm/core/content/sites/content/demo-content-pages</h1>
<table>
<tbody>
<tr>
<td>Status</td>
<td><div id="Status">500</div></td>
</tr>
<tr>
<td>Message</td>
<td><div id="Message">org.apache.sling.api.resource.PersistenceException: Unable to commit changes to session.</div></td>

 

and for the second curl command, I am getting below error

curl -u jeeva-admin:mypassword –F cmd="createPage" -F label="" -F parentPath="/content/content/demo-content-pages/en/newpages" -F template="/apps/demo/templates/defaultpage" -F title="new page curl" https://author.dev.demo.adobecqms.net/bin/wcmcommand

 

curl: (6) Could not resolve host: –F

curl: (6) Could not resolve host: cmd=createPage

 

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html>

    <head><title>405 Method POST not supported</title></head>

    <body>

        <h1>Method POST not supported</h1>

        <p>Cannot serve request to /bin/wcmcommand in com.day.cq.wcm.core.impl.commands.WCMCommandServlet</p>

        

        <h3>Request Progress:</h3>

<pre>

      0 TIMER_START{Request Processing}

      1 COMMENT timer_end format is {&lt;elapsed microseconds&gt;,&lt;timer name&gt;} &lt;optional message&gt;

      6 LOG Method=POST, PathInfo=null

      7 TIMER_START{handleSecurity}

292179 TIMER_END{292171,handleSecurity} authenticator org.apache.sling.auth.core.impl.SlingAuthenticator@413fbfeb returns true

292526 TIMER_START{ResourceResolution}

292573 TIMER_END{46,ResourceResolution} URI=/bin/wcmcommand resolves to Resource=ServletResource, servlet=com.day.cq.wcm.core.impl.commands.WCMCommandServlet, path=/bin/wcmcommand

292579 LOG Resource Path Info: SlingRequestPathInfo: path=&apos;/bin/wcmcommand&apos;, selectorString=&apos;null&apos;, extension=&apos;null&apos;, suffix=&apos;null&apos;

292579 TIMER_START{ServletResolution}

292582 TIMER_START{resolveServlet(/bin/wcmcommand)}

292592 TIMER_END{9,resolveServlet(/bin/wcmcommand)} Using servlet com.day.cq.wcm.core.impl.commands.WCMCommandServlet

292595 TIMER_END{15,ServletResolution} URI=/bin/wcmcommand handled by Servlet=com.day.cq.wcm.core.impl.commands.WCMCommandServlet

292597 LOG Applying Requestfilters

292602 LOG Calling filter: com.adobe.granite.resourceresolverhelper.impl.ResourceResolverHelperImpl

292609 LOG Calling filter: org.apache.sling.security.impl.ContentDispositionFilter

292612 LOG Calling filter: com.adobe.granite.csrf.impl.CSRFFilter

292620 LOG Calling filter: org.apache.sling.i18n.impl.I18NFilter

292624 LOG Calling filter: com.adobe.granite.httpcache.impl.InnerCacheFilter

292628 LOG Calling filter: org.apache.sling.rewriter.impl.RewriterFilter

292632 LOG Calling filter: com.adobe.cq.history.impl.HistoryRequestFilter

292806 LOG Calling filter: com.day.cq.wcm.core.impl.WCMRequestFilter

292814 LOG Calling filter: com.adobe.fd.core.security.internal.CurrentUserServiceImpl

293054 LOG Calling filter: com.adobe.cq.wcm.core.components.internal.servlets.CoreFormHandlingServlet

293057 LOG Calling filter: com.adobe.granite.optout.impl.OptOutFilter

293064 LOG Calling filter: com.day.cq.wcm.foundation.forms.impl.FormsHandlingServlet

293067 LOG Calling filter: com.adobe.cq.social.commons.cors.CORSAuthenticationFilter

293070 LOG Calling filter: com.adobe.livecycle.dsc.clientsdk.internal.ResourceResolverHolderFilter

293073 LOG Calling filter: org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter

293076 LOG Calling filter: com.adobe.livecycle.content.appcontext.impl.AppContextFilter

293080 LOG Calling filter: org.demo.core.filters.LoggingFilter

293136 LOG Calling filter: org.demo.core.filters.LoggingFilter

293148 LOG Calling filter: org.demo.core.filters.LoggingFilter

293159 LOG Calling filter: org.demo.core.filters.LoggingFilter

293171 LOG Calling filter: com.day.cq.wcm.mobile.core.impl.redirect.RedirectFilter

293174 LOG Calling filter: com.day.cq.wcm.core.impl.AuthoringUIModeServiceImpl

293572 LOG Calling filter: com.adobe.granite.rest.assets.impl.AssetContentDispositionFilter

293575 LOG Calling filter: com.adobe.granite.requests.logging.impl.RequestLoggerImpl

293579 LOG Calling filter: com.adobe.granite.rest.impl.servlet.ApiResourceFilter

293611 LOG Calling filter: com.day.cq.dam.core.impl.assetlinkshare.AdhocAssetShareAuthHandler

293614 LOG Calling filter: com.day.cq.dam.core.impl.servlet.ActivityRecordHandler

293625 LOG Calling filter: com.adobe.cq.social.ugcbase.security.impl.SaferSlingPostServlet

293630 LOG Calling filter: com.day.cq.wcm.core.impl.warp.TimeWarpFilter

293637 LOG Applying Componentfilters

293639 LOG Calling filter: com.day.cq.personalization.impl.TargetComponentFilter

293643 LOG Calling filter: com.day.cq.wcm.core.impl.page.PageLockFilter

293647 LOG Calling filter: com.day.cq.wcm.core.impl.WCMComponentFilter

293766 LOG Calling filter: com.day.cq.wcm.core.impl.WCMDebugFilter

293770 TIMER_START{com.day.cq.wcm.core.impl.commands.WCMCommandServlet#0}

293797 LOG Applying Error filters

293800 LOG Calling filter: org.apache.sling.i18n.impl.I18NFilter

293802 LOG Calling filter: org.apache.sling.rewriter.impl.RewriterFilter

293806 TIMER_START{handleError:status=405}

294527 TIMER_END{719,handleError:status=405} Using handler /apps/sling/servlet/errorhandler/default.jsp

306519 LOG Found processor for post processing ProcessorConfiguration: {contentTypes=[text/html], order=1, active=true, valid=true, processErrorResponse=true, pipeline=(generator=Config(type=htmlparser, config={}), transformers=(Config(type=linkchecker, config={}), Config(type=versioned-clientlibs, config={}), serializer=Config(type=htmlwriter, config={}))}

306709 TIMER_END{306708,Request Processing} Dumping SlingRequestProgressTracker Entries

</pre>

 

        

        <hr>

        <address>Apache Sling</address>

    </body>

</html>

 

Can you please help in finding, what wrong I am doing?

Avatar

Community Advisor

Hi @iamjeeva 

 

You can look into the Page manager api sample examples. Here is the refrence : https://www.programcreek.com/java-api-examples/?api=com.day.cq.wcm.api.PageManager

 

Thanks,

Nupur