Introduction

In this article, you will learn how to retrieve, create, update or delete the sites under a site collection, using REST API's on SharePoint 2013 / SharePoint Online sites like O365. The sites are considered as sub sites within the site collection.

Steps Involved

Create Sub Site

The operation will create a sub site within the site collection.

To get the form digest value, you can use the logic, given below:

  1. $.ajax
  2. ({
  3. url: "/_api/contextinfo",
  4. type: "POST",
  5. async: false,
  6. headers: { "accept": "application/json;odata=verbose" },
  7. success: function(data){
  8. requestDigest = data.d.GetContextWebInformation.FormDigestValue;
  9. },
  10. error: function(data){
  11. }
  12. });

The code snippet given below helps in creating a site. In this example, the form digest value is retrieved directly from the page control. (The operation given above is not required)

  1. var restAPIURL = "/_api/web/webinfos/add";
  2. var newSiteData = JSON.stringify(
  3. {
  4. 'parameters': {
  5. '__metadata': {
  6. 'type': 'SP.WebInfoCreationInformation'
  7. },
  8. 'Url': 'SubSite',
  9. 'Description': 'Subsite created from REST API',
  10. 'Title': 'SubSite',
  11. 'Language': 1033,
  12. 'WebTemplate': 'STS#0',
  13. 'UseUniquePermissions': false
  14. }
  15. });
  16. $.ajax
  17. ({
  18. url: restAPIURL,
  19. type: "POST",
  20. async: false,
  21. data: newSiteData,
  22. headers: {
  23. "accept": "application/json;odata=verbose",
  24. "content-type": "application/json;odata=verbose",
  25. "X-RequestDigest": $('#__REQUESTDIGEST').val()
  26. },
  27. success: function(data){
  28. console.log('site created');
  29. },
  30. error: function(data){
  31. console.log('Error creating site');
  32. }
  33. });
Retrieve Sub Site

The site properties can be retrieved, using REST API. The URL to access the properties is, http://subsiteurl/_api/web

This will get the basic properties of the site. To get more properties, we need to use select and expand parameters in the URL. For example, the URL given above will not fetch more information on the features. To get the active features on the site, we need to pass the feature on the select and expand parameters to retrieve the information. Similarly, other collection values needs to be retrieved with the select and expand parameters.

The code snippet given below helps to retrieve the site properties.

  1. //var restAPIURL = "/subsite/_api/web?$select=Features&$expand=Features/Id"
  2. var restAPIURL = "/subsite/_api/web"
  3. $.ajax
  4. ({
  5. url: restAPIURL,
  6. type: "GET",
  7. headers: { "accept": "application/json;odata=verbose" },
  8. success: function(data){
  9. console.log("Title : " + data.d.Title);
  10. console.log("Description : " + data.d.Description);
  11. },
  12. error: function(data){
  13. console.log('Error getting info');
  14. }
  15. });

Update Sub Site

The update operation will be very similar to creating an operation.

  • The URL for updating the operation will be, http://subsiteurl/_api/web.
  • The method or type will be POST.
  • The properties that need to be updated are sent, using JSON string.
  • In the header parameter, we need to set and send the content type for the data type, form digest value for the security validation and “Merge” method for the update operation.

The code snippet given below helps in updating the site properties. Here, just update the title of the sub site created in the above sections:

  1. var updateSiteData = JSON.stringify(
  2. {
  3. '__metadata': {
  4. 'type': 'SP.Web'
  5. },
  6. 'Description': 'Subsite updated from REST API',
  7. 'Title': 'New SubSite',
  8. });
  9. restAPIURL = "/subsite/_api/web"
  10. $.ajax
  11. ({
  12. url: restAPIURL,
  13. type: "POST",
  14. async: false,
  15. data: updateSiteData,
  16. headers: {
  17. "accept": "application/json;odata=verbose",
  18. "content-type": "application/json;odata=verbose",
  19. "X-RequestDigest": $('#__REQUESTDIGEST').val(),
  20. "X-HTTP-Method": "MERGE"
  21. },
  22. success: function(data){
  23. console.log('site updated');
  24. },
  25. error: function(data){
  26. console.log('Error updating site');
  27. }
  28. });

Delete Sub Site

The delete operation will be very similar to create or update operations. Here, no input data is required.

  • The URL will be http://subsiteurl/_api/web.

  • The type or method will be POST.

  • In the header parameter, we need to set and send the content type for data type, form digest value for the security validation and “Delete” method for the delete operation.

The code snippet given below helps delete the site.

  1. var restAPIURL = "/subsite/_api/web"
  2. $.ajax
  3. ({
  4. url: restAPIURL,
  5. type: "POST",
  6. async: false,
  7. headers: {
  8. "accept": "application/json;odata=verbose",
  9. "content-type": "application/json;odata=verbose",
  10. "X-RequestDigest": $('#__REQUESTDIGEST').val(),
  11. "X-HTTP-Method": "DELETE"
  12. },
  13. success: function(data){
  14. console.log('site deleted');
  15. },
  16. error: function(data){
  17. console.log('Error deleting site');
  18. }
  19. });
Summary
Thus, you have learned how to create, retrieve, update or delete the sub sites, using REST API on SharePoint 2013 / SharePoint online sites.