Taking Advantage of the SharePoint 2013 REST API

Preview:

Citation preview

Get Some REST: SharePoint 2013 REST API's

Eric Shupps

SharePoint Server MVP

Sponsored by:

Visit us on the web at www.binarywave.com

Real-time application monitoring, event management, and operational health metrics for Microsoft SharePoint

Reduce troubleshooting time by up to 30%Increase efficiency and improve user satisfactionAvoid downtime and costly outagesMeet or exceed service level agreementsMaximize investment in current infrastructure

About Me

CKS:DEV

The

SharePoint

Cowboy

Patterns

&

Practices

Eric Shupps

www.sharepointcowboy.com eshupps@binarywave.com facebook.com/sharepointcowboy @eshupps

Agenda

Introduction

Basic

Operations

JavaScript

Endpoints

Advanced

Methods

Windows 8

INTRODUCTION

Background

HTTP-based web service architecture that

uses nouns and verbs to define operations

Noun: “Items”

Verbs: GET, POST, PUT, DELETE

OData provides metadata, object typing

and query semantics for underlying data

structure (WCF data services)

/items(0)

Client Object Model service (client.svc)

processes queries, interacts with server OM,

returns formatted response (JSON, XML)

/items/GetByTitle(‘foo’)

Implementation

Clien

t.sv

c

Server

OM

Content

DBREAD

CREATE

UPDATE

DELETE

POST

GET

PUT, MERGE, DELETE

Structure

http://contoso/_api/items/GetById(1)?$select=Title,ID

Location Service Resource Path Query Options

Security

Local

Current

Context

Request

Digest

Remote

OAuth

Access

Token

Cross

Domain

Request

Executor

SP.WebProxy

HTTP

WebRequest

Context

Info

Cross

Domain

Gotchas

OData Spec != SharePoint REST

No request batching

Must specify “odata=verbose” in header

Default response format is ATOM

Use CSOM notation when accessing

static methods and properties

Some requests may not return default

values due to processing overhead

ENDPOINTS

SharePoint 2013 REST Endpoints

Site Web PublishingUser

Profiles

Webs

Features

Event

Receivers

Users

Profiles

Activity

Lists

Items

Pages

Variations

Navigation

Query Results

Suggestions

Search Taxonomy

Managed

Metadata

Metadata

You

Must

Be

Joking!

BASIC OPERATIONS

Sites

http://<site collection>/<site>/_api/sites/features/GetById(guid’<value>’)

http://<site collection>/<site>/_api/sites/eventreceivers

View Event Receivers

http://<site collection>/<site>/_api/web/webinfos/add

{ 'd' :{'parameters': {

'__metadata': {'type': 'SP.WebInfoCreationInformation' }, 'Url': 'RestSubWeb', 'Title': 'RestSubWeb', 'Description': 'rest created web','Language':1033,'WebTemplate':'sts','UseUniquePermissions':false}

}}

Create a Site

Get Feature

Lists

http://<site collection>/<site>/_api/lists

Get All Lists

http://<site collection>/<site>/_api/lists/GetByTitle(‘Shared Documents’)

Get List

http://<site collection>/<site>/_api/lists/GetByTitle(‘Shared Documents’)/items/GetById(0)

Get List Item

http://<site collection>/<site>/_api/lists/GetByTitle(‘Shared Documents’)/items/GetById(1)?$select=Title,ID

Get List Item with Specific Properties

Search

http://<site collection>/<site>/_api/search/query?queryText=‘Value’

Simple Term

http://<site collection>/<site>/_api/search/query?queryText=‘PreferredName:Robert Smith’

Item Property

http://<site collection>/<site>/_api/search/suggest?queryText=‘quarterly sales’

Suggestions

Social

http://<site collection>/<site>/_api/social.following/followed

Get Followed Users

http://<siteCollection>/<site>/_api/social.following/my/followeddocumentsuri

Get Followed Documents

http://<site collection>/<site>/_api/sp.userprofiles.peoplemanager/getmysuggestions

Get Suggestions

http://<siteCollection>/<site>/_api/sp.userprofiles.peoplemanager/getpeoplefollowedby(accountName=@v)?@v='domain\user'

Get Followers

ADVANCED METHODS

Queries

http://<site>/_api/Web/Lists(guid’<value>′)/Items(1)/FieldValuesAsHtml

HTML Values

http://<site>/_api/web/lists/getbytitle(‘Products’)/items()/?$select=Title,Price,effectivebasepermissions

Get Permissions

http://<site>/_api/web/lists/getbytitle('Products')/items()?$select=Title,Price,Supplier_/Title&$expand=Supplier_/Title

Join

Sorting & Filtering

http://<site>/_api/web/lists/getbytitle(‘Products’)/items/?$filter=Price gt 30000

Filter with Comparison

http://<site>/_api/web/lists/getbytitle(‘Products’)/items()?$select=Title,Price,Supplier_/Title&$expand=Supplier_/Title&$filter=Supplier_/Title eq ‘Acme’

Join with Filter

http://<site collection>/<site>/_api/web/lists('<guid>')/items$top=10

Top ‘N’ Results

CRUD Operations

url: http://site url/_api/web/lists/GetByTitle(‘Test')/itemsmethod: POSTbody: { '__metadata': { 'type': 'SP.Data.TestListItem' }, 'Title': 'Test'}headers:Authorization = "Bearer " + accessTokenX-RequestDigest = form digest valueaccept: "application/json;odata=verbose"content-type: "application/json;odata=verbose"content-length:1024

Create a List Item

url: http://site url/_api/web/lists/GetByTitle(‘Test')/items(item id)method: POSTbody: { '__metadata': { 'type': 'SP.Data.TestListItem' }, 'Title': 'TestUpdated'}headers:Authorization = "Bearer " + accessTokenX-RequestDigest = form digest value“IF-MATCH”: etag or “*”“X-HTTP-Method”:”MERGE”,accept: "application/json;odata=verbose"content-type: "application/json;odata=verbose"content-length:1024

Edit a List Item

Form Digest

Used to prevent replay attacks

Updates will fail without digest value

Local

$("#__REQUESTDIGEST").val()

Remote

POST to /_api/contextinfo

JAVASCRIPT

Operations

Async GET/POST operations using AJAX

library

Cross-Domain Library

SP.RequestExecutor

Remote Apps: SP.AppContextSite with

@target

JSON response

accept: "application/json;odata=verbose"

Authorization

Remote

Use CSOM to set context

Sites/Webs/Lists

– Handled by appweb not hostweb

Pass token in request

– RequestExecutor

Local

Use current context

PROVIDER HOSTED APP

Retrieving SharePoint list data with jQuery, REST and AJAX

WINDOWS 8

Operations

XAML

List items with specific fields

Async

– HTTPClient, HTTPClientHandler

ATOM

LINQ

Authorization

Domain Credentials

Permissions

Enterprise Authentication

Private Networks

WINDOWS 8 APP

Uploading Documents to SharePoint using REST

Sponsored by:

Visit us on the web at www.binarywave.com

Real-time application monitoring, event management, and operational health metrics for Microsoft SharePoint

Reduce troubleshooting time by up to 30%Increase efficiency and improve user satisfactionAvoid downtime and costly outagesMeet or exceed service level agreementsMaximize investment in current infrastructure

Resources

Description Link

Programming Using the SharePoint 2013 REST Service http://bit.ly/TUwC9N

OData URI Conventions http://bit.ly/Ytgdz4

Using the SharePoint 2013 REST Service http://bit.ly/YPHif5

SharePoint 2013 Search REST API http://bit.ly/ZqzOuM

Configuring SharePoint 2013 Search REST for Anonymous Users http://bit.ly/152vFoy

SharePoint 2013 REST TypeScript Library http://sprestts.codeplex.com

Recommended