3 minute read

The graph api library will help you make requests from SharePoint under the context of the user. A benefit of this method is that it will not require you to register the app.

TokenPermalink

The first step is to get an access token for the graph api requests. The graph library has a Token property that can be set, so you do not need to pass it for each request. All requests will be made under the user context.

Token PropertiesPermalink

The request will return the following data.

Name Description
access_token The graph api access token.
expires_on Expiration date of the token.
resource The graph api cloud environment.
scope The user’s permissions.
token_type The token type.

Cloud EnvironmentsPermalink

There are different Graph API cloud environments, per the Microsoft Docs. Below are examples for the different cloud environments.

DefaultPermalink

The default cloud environment used is the https://graph.microsoft.com environment.

import { ContextInfo, Graph } from "gd-sprest";

// Get the access token
Graph.getAccessToken().execute(token => {
    // Set the default token for the api requests
    Graph.Token = token.access_token;
});

ChinaPermalink

import { ContextInfo, Graph, SPTypes } from "gd-sprest";

// Get the access token
Graph.getAccessToken(SPTypes.CloudEnvironment.China).execute(token => {
    // Set the default token for the api requests
    Graph.Token = token.access_token;
});

US Level 4Permalink

import { ContextInfo, Graph, SPTypes } from "gd-sprest";

// Get the access token
Graph.getAccessToken(SPTypes.CloudEnvironment.USL4).execute(token => {
    // Set the default token for the api requests
    Graph.Token = token.access_token;
});

US Level 5Permalink

import { ContextInfo, Graph, SPTypes } from "gd-sprest";

// Get the access token
Graph.getAccessToken(SPTypes.CloudEnvironment.USL5).execute(token => {
    // Set the default token for the api requests
    Graph.Token = token.access_token;
});

RequestsPermalink

The ContextInfo will be used to reference the current site-id for the code examples. The code examples will also assume that the Token has already been set.

Request PropertiesPermalink

Name Description
accessToken The access token. Defaults to the Graph.Token value if not presented.
cloud The cloud environment to access. Defaults to the Graph.Cloud or Default cloud environment if not presented.
requestType The GET/POST request type.
url The graph api url for the request.
version The version of the graph api to access. Defaults to the Graph.Version or 1.0 version if not presented.

Setting the Default Request PropertiesPermalink

To set the properties, simples reference the Graph library and set the property.

import { Graph, SPTypes } from "gd-sprest";

// Set the default properties
Graph.Cloud = SPTypes.CloudEnvironment.USL5;
Graph.Version = "2.0";

// Get the access token
Graph.getAccessToken().execute(token => {
    // Set the default token value
    Graph.Token = token.access_token;
});

Code ExamplesPermalink

Get the User InformationPermalink

import { Graph } from "gd-sprest";

// Get my information
Graph({ url: "me" }).execute(userInfo => {
    userInfo.businessPhones;
    userInfo.display_name;
    userInfo.givenName;
    userInfo.id;
    userInfo.jobTitle;
    userInfo.mail;
    userInfo.mobilePhone;
    userInfo.officeLocation;
    userInfo.preferredLanguage;
    userInfo.surname;
    userInfo.userPrincipalName;
});

Get the root sitePermalink

import { Graph } from "gd-sprest";

// Get the root site collection
Graph({ url: "/sites/root" }).execute(rootSite => {
    rootSite.createdDateTime;
    rootSite.description;
    rootSite.displayName;
    rootSite.id;
    rootSite.lastModifiedDate;
    rootSite.name;
    rootSite.root;
    rootSite.siteCollection;
});

Get the Current SitePermalink

import { ContextInfo, Graph } from "gd-sprest";

// Get the current site collection
Graph({ url: "/sites/" + ContextInfo.siteId }).execute(siteInfo => {
    siteInfo.createdDateTime;
    siteInfo.description;
    siteInfo.displayName;
    siteInfo.id;
    siteInfo.lastModifiedDate;
    siteInfo.name;
    siteInfo.root;
    siteInfo.siteCollection;
});

Get the Lists in the Current Site CollectionPermalink

import { ContextInfo, Graph } from "gd-sprest";

// Get the lists in the current site collection
Graph({ url: "/sites/" + ContextInfo.siteId + "/lists" }).execute(lists => {
    // Parse the lists
    for(let i=0; i<lists.value.length; i++) {
        lists.createdBy;
        lists.createdDateTime;
        lists.description;
        lists.displayName;
        lists.eTag;
        lists.id;
        lists.lastModifiedBy;
        lists.lastModifiedDateTime;
        lists.list;
        lists.name;
        lists.parentReference;
        lists.webUrl;
    }
});

Create a List in the Current Site CollectionPermalink

import { ContextInfo, Graph } from "gd-sprest";

// Create a list in the current site collection
Graph({ url: "/sites/" + ContextInfo.siteId + "/lists", requestType: "POST", data: {
  "displayName": "Books",
  "columns": [
    {
      "name": "Author",
      "text": { }
    },
    {
      "name": "PageCount",
      "number": { }
    }
  ],
  "list": {
    "template": "genericList"
  }
}}).execute(list => {
    list.createdBy;
    list.createdDateTime;
    list.description;
    list.displayName;
    list.eTag;
    list.id;
    list.lastModifiedBy;
    list.lastModifiedDateTime;
    list.list;
    list.name;
    list.parentReference;
    list.webUrl;
});