Tuesday, 14 June 2016

Retrieve Office 365 Delve Blogs Programmatically using REST API

Views
In this article, you will learn how to get the blogs from Office 365 delve sites on the custom components programmatically using REST API with various filter options.

Query Options :


By default, when user tries to create a blog post from delve user page, the page will be redirected to user's personal site page. All the posts created on delve blog page will be stored in the user’s personal site. i.e., under “/portals/personal/userfirstname/” site.
Some of the queriable fields are content types, file types and file extensions. Only these field values are unique for blogs created on the Office 365 blog site which will not be similar to other items. Some of the unique properties and values are,
  • Content type - The blogs stored on the portal uses story page content type.
  • Secondary File Extensions - The file extension is aspx page but secondary file extension used is PointPub which is unique.
  • File Type - The file type of the blog is PointPub.
We will see how we can query to get the desired results using Search REST API.

Using content type:

First we will find out the content type of story page manually from Office 365 site.
  • From personal site collection, navigate to see all lists folder and then select pages folder. (Or just append “/portals/personal/userfirstname/ppg” to the url and open to see the pages library directly)
  • Go to library settings of Pages library.
  • Click on the Story Page content type. If content types not found, go to advanced settings and allow the content types.
  • From the URL of story page content type, get ctype value. Ctype values shows the content type id of the respective content type. 
Then we need to build the search REST API URL to query the content.

The search REST API using content type will look like below.

Using File Type:

We can also query the blogs using the file type. The file type used for blog is PointPub. The information is stored in JSON format in PointPub files. The file contains the information like Title, SubTitle, Author, Published data, Value, etc. Value contains blog content for each blog.

The search REST API using file type will look like below.

Instead of using file type, you can also use secondary file extension property to filter out the blog data.

We will use Jquery Ajax call to query and get the blog details. In the below code snippet, I have used file type to get all the blog data present on Office 365 site using search API. Similarly other search REST API Url’s can be used to retrieve the blog results.
  1. $.ajax({  
  2.     url: "/_api/search/query?querytext='filetype:PointPub'"// URL can also use content type id to filter the blog data  
  3.     type: "GET",  
  4.     async: false,  
  5.     headers: { "accept""application/json;odata=verbose" },  
  6.     success: function(data){  
  7.         var blogInfo = data.d.query.PrimaryQueryResult.RelevantResults;  
  8.         var blogResults = blogInfo.Table.Rows.results;  
  9.         console.log("Title : "+blogResults[0].Cells.results[3]);  
  10.         console.log("Author : "+blogResults[0].Cells.results[4]);  
  11.     },  
  12.     error: function(data){  
  13.     }  
  14. });  
In the above example, title and author values are retrieved for first blog present in the collection. similarly, other properties or blog content can be retrieved from the collection by changingblogResults[i].Cells.results[j] result set.