taking advantage of the sharepoint 2013 rest api
TRANSCRIPT
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 [email protected] 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