driveItem: createLink
Namespace: microsoft.graph
Important
APIs under the /beta
version in Microsoft Graph are subject to change. Use of these APIs in production applications is not supported. To determine whether an API is available in v1.0, use the Version selector.
You can use createLink action to share a driveItem via a sharing link.
The createLink action will create a new sharing link if the specified link type doesn't already exist for the calling application. If a sharing link of the specified type already exists for the app, the existing sharing link will be returned.
DriveItem resources inherit sharing permissions from their ancestors.
Permissions
One of the following permissions is required to call this API. To learn more, including how to choose permissions, see Permissions.
Permission type | Permissions (from least to most privileged) |
---|---|
Delegated (work or school account) | Files.ReadWrite, Files.ReadWrite.All, Sites.ReadWrite.All |
Delegated (personal Microsoft account) | Files.ReadWrite, Files.ReadWrite.All |
Application | Files.ReadWrite.All, Sites.ReadWrite.All |
HTTP request
POST /drives/{driveId}/items/{itemId}/createLink
POST /groups/{groupId}/drive/items/{itemId}/createLink
POST /me/drive/items/{itemId}/createLink
POST /sites/{siteId}/drive/items/{itemId}/createLink
POST /users/{userId}/drive/items/{itemId}/createLink
Request headers
Name | Description |
---|---|
Authorization | Bearer {token}. Required. |
Content-Type | application/json. Required. |
Request body
The body of the request defines properties of the sharing link your application is requesting. The request should be a JSON object with the following properties.
Property | Type | Description |
---|---|---|
type | String | Optional.The type of sharing link to create. |
scope | String | Optional. The scope of link to create. Either anonymous , organization , or users |
expirationDateTime | DateTimeOffset | Optional. A String with format of yyyy-MM-ddTHH:mm:ssZ of DateTime indicates the expiration time of the permission. |
password | String | Optional.The password of the sharing link that is set by the creator. |
recipients | driveRecipient collection | Optional. A collection of recipients who will receive access to the sharing link. |
retainInheritedPermissions | Boolean | Optional. If true (default), any existing inherited permissions are retained on the shared item when sharing this item for the first time. If false , all existing permissions are removed when sharing for the first time. |
sendNotification | Boolean | If true , this method sends a sharing link in an email to users specified in recipients . Applicable to OneDrive for Business or SharePoint. The default value is false . Optional. |
Link types
The following values are allowed for the type parameter.
Type value | Description |
---|---|
view | Creates a read-only link to the driveItem. |
review | Creates a review link to the driveItem. This option is only available for files in OneDrive for Business and SharePoint. |
edit | Creates an read-write link to the driveItem. |
embed | Creates an embeddable link to the driveItem. |
blocksDownload | Creates a read-only link that blocks download to the driveItem. This option is only available for files in OneDrive for Business and SharePoint. |
createOnly | Creates an upload-only link to the driveItem. This option is only available for folders in OneDrive for Business and SharePoint. |
addressBar | Creates the default link that is shown in the browser address bars for newly created files. Only available in OneDrive for Business and SharePoint. The organization admin configures whether this link type is supported, and what features are supported by this link type. |
adminDefault | Creates the default link to the driveItem as determined by the administrator of the organization. Only available in OneDrive for Business and SharePoint. The policy is enforced for the organization by the admin |
Scope types
The following values are allowed for the scope parameter.
Value | Description |
---|---|
anonymous | Anyone with the link has access, without needing to sign in. This may include people outside of your organization. Anonymous link support may be disabled by an administrator. |
organization | Anyone signed into your organization (tenant) can use the link to get access. Only available in OneDrive for Business and SharePoint. |
users | Specific people in the recipient's collection can use the link to get access. Only available in OneDrive for Business and SharePoint. |
Response
If successful, this method returns a single Permission resource in the response body that represents the requested sharing permissions.
The response will be 201 Created
if a new sharing link is created for the driveItem or 200 OK
if an existing link is returned.
Examples
Example 1: Create an anonymous sharing link
The following example requests a sharing link to be created for the driveItem specified by {itemId} in the user's OneDrive.
The sharing link is configured to be read-only and usable by anyone with the link.
For OneDrive for Business and SharePoint users, use the sendNotification
parameter to create a sharing link. The sharing link is then sent to recipients via email.
All existing permissions are removed when sharing for the first time if retainInheritedPermissions
is false.
Request
POST /me/drive/items/{itemId}/createLink
Content-Type: application/json
{
"type": "view",
"scope": "anonymous",
"password": "String",
"recipients": [
{
"@odata.type": "microsoft.graph.driveRecipient"
}
],
"sendNotification": true,
"retainInheritedPermissions": false
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var type = "view";
var scope = "anonymous";
var password = "String";
var recipients = new List<DriveRecipient>()
{
new DriveRecipient
{
}
};
await graphClient.Me.Drive.Items["{driveItem-id}"]
.CreateLink(type,scope,null,password,null,recipients,null)
.Request()
.PostAsync();
Important
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
For details about how to add the SDK to your project and create an authProvider instance, see the SDK documentation.
Response
Note: The response object shown here might be shortened for readability.
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "123ABC",
"roles": ["write"],
"link": {
"type": "view",
"scope": "anonymous",
"webUrl": "https://1drv.ms/A6913278E564460AA616C71B28AD6EB6",
"application": {
"id": "1234",
"displayName": "Sample Application"
},
},
"hasPassword": true
}
Example 2: Creating company sharable links
OneDrive for Business and SharePoint support company sharable links.
These are similar to anonymous links, except they only work for members of the owning organization.
To create a company sharable link, use the scope parameter with a value of organization
.
Request
POST /me/drive/items/{item-id}/createLink
Content-Type: application/json
{
"type": "edit",
"scope": "organization"
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var type = "edit";
var scope = "organization";
await graphClient.Me.Drive.Items["{driveItem-id}"]
.CreateLink(type,scope,null,null,null,null,null)
.Request()
.PostAsync();
Important
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
For details about how to add the SDK to your project and create an authProvider instance, see the SDK documentation.
Response
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "123ABC",
"roles": ["write"],
"link": {
"type": "edit",
"scope": "organization",
"webUrl": "https://contoso-my.sharepoint.com/personal/ellen_contoso_com/...",
"application": {
"id": "1234",
"displayName": "Sample Application"
},
}
}
Example 3: Creating embeddable links
When using the embed
link type, the webUrl returned can be embedded in an <iframe>
HTML element.
When an embed link is created, the webHtml
property contains the HTML code for an <iframe>
to host the content.
Note: Embed links are only supported for OneDrive personal.
Request
POST /me/drive/items/{item-id}/createLink
Content-Type: application/json
{
"type": "embed"
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var type = "embed";
await graphClient.Me.Drive.Items["{driveItem-id}"]
.CreateLink(type,null,null,null,null,null,null)
.Request()
.PostAsync();
Important
Microsoft Graph SDKs use the v1.0 version of the API by default, and do not support all the types, properties, and APIs available in the beta version. For details about accessing the beta API with the SDK, see Use the Microsoft Graph SDKs with the beta API.
For details about how to add the SDK to your project and create an authProvider instance, see the SDK documentation.
Response
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "123ABC",
"roles": ["read"],
"link": {
"type": "embed",
"webHtml": "<IFRAME src=\"https://onedrive.live.com/...\"></IFRAME>",
"webUrl": "https://onedive.live.com/...",
"application": {
"id": "1234",
"displayName": "Sample Application"
},
}
}
Remarks
- To create a link based on the organization's default policy and the caller's permissions on the driveItem, omit the scope and type parameters
- Links created using this action do not expire unless a default expiration policy is enforced for the organization.
- Links are visible in the sharing permissions for the driveItem and can be removed by an owner of the driveItem.
- Links always point to the current version of a driveItem unless the driveItem is checked out (SharePoint only).
Feedback
Submit and view feedback for