Пространство имен: microsoft.graph
Важно!
API версии /beta
в Microsoft Graph могут быть изменены. Использование этих API в производственных приложениях не поддерживается. Чтобы определить, доступен ли API в версии 1.0, используйте селектор версий.
Создайте ссылку для предоставления общего доступа к driveItem driveItem.
Действие createLink создает новую ссылку для общего доступа, если указанный тип ссылки еще не существует для вызывающего приложения.
Если ссылка для общего доступа указанного типа уже существует для приложения, возвращается существующая ссылка для общего доступа.
Ресурсы DriveItem наследуют разрешения совместного доступа от своих предков.
Этот API доступен в следующих национальных облачных развертываниях.
Глобальная служба |
Правительство США L4 |
Правительство США L5 (DOD) |
Китай управляется 21Vianet |
✅ |
✅ |
✅ |
✅ |
Разрешения
Выберите разрешение или разрешения, помеченные как наименее привилегированные для этого API. Используйте более привилегированное разрешение или разрешения только в том случае, если это требуется приложению. Дополнительные сведения о делегированных разрешениях и разрешениях приложений см. в разделе Типы разрешений. Дополнительные сведения об этих разрешениях см. в справочнике по разрешениям.
Тип разрешения |
Разрешения с наименьшими привилегиями |
Более высокие привилегированные разрешения |
Делегированные (рабочая или учебная учетная запись) |
Files.ReadWrite |
Files.ReadWrite.All, Sites.ReadWrite.All |
Делегированные (личная учетная запись Майкрософт) |
Files.ReadWrite |
Files.ReadWrite.All |
Приложение |
Files.ReadWrite.All |
Sites.ReadWrite.All |
HTTP-запрос
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
Тело запроса
В теле запроса определяются свойства ссылки для совместного доступа, запрашиваемой приложением.
Запрос должен быть объектом JSON с указанными ниже свойствами.
Свойство |
Тип |
Описание |
type |
String |
Необязательный параметр. Тип создаваемой ссылки для совместного доступа. |
область |
String |
Необязательный параметр. Область создаваемой ссылки. Либо anonymous , organization либо users |
expirationDateTime |
DateTimeOffset |
Необязательный параметр. Строка в формате yyyy-MM-ddTHH:mm:ssZ элемента DateTime указывает время окончания срока действия разрешения. |
password |
Строка |
Необязательный параметр. Создатель задает пароль для ссылки общего доступа. |
recipients |
коллекция driveRecipient |
Необязательный параметр. Коллекция получателей, получающих доступ к ссылке общего доступа. |
retainInheritedPermissions |
Boolean |
Необязательное свойство. Если true (по умолчанию) все существующие унаследованные разрешения сохраняются для общего элемента при первом предоставлении общего доступа к этому элементу. Если false задано значение , все существующие разрешения удаляются при первом предоставлении общего доступа. |
sendNotification |
Логический |
Если true задано значение , этот метод отправляет ссылку общего доступа в сообщении электронной почты пользователям, указанным в recipients . Применимо к OneDrive для бизнеса или SharePoint. Значение по умолчанию — false . Необязательный параметр. |
Типы ссылок
Параметр type может принимать указанные ниже значения.
Значение типа |
Описание |
представление |
Создает ссылку только для чтения на driveItem. |
Отзыв |
Создает ссылку на проверку для driveItem. Этот параметр доступен только для файлов в OneDrive для бизнеса и SharePoint. |
edit |
Создает ссылку для чтения и записи на driveItem. |
Внедрить |
Создает встраиваемую ссылку на driveItem. |
blocksСкачать |
Создает ссылку только для чтения, которая блокирует скачивание в driveItem. Этот параметр доступен только для файлов в OneDrive для бизнеса и SharePoint. |
createOnly |
Создает ссылку только для отправки на driveItem. Этот параметр доступен только для папок в OneDrive для бизнеса и SharePoint. |
addressBar |
Создает ссылку по умолчанию, которая отображается в адресных строках браузера для вновь созданных файлов. Доступно только в OneDrive для бизнеса и SharePoint. Администратор организации настраивает, поддерживает ли этот тип ссылки, и указывает, какие функции он поддерживает. |
adminDefault |
Создает ссылку по умолчанию на driveItem , как определено администратором организации. Доступно только в OneDrive для бизнеса и SharePoint. Администратор применяет политику для организации. |
Типы областей
Параметр scope может принимать указанные ниже значения.
Значение |
Описание |
Анонимные |
Любой пользователь со ссылкой обладает правом доступа без необходимости входа в систему. В него могут входить люди за пределами вашей организации. Администратор может отключить поддержку анонимных ссылок. |
organization; |
Любой пользователь, вошедший в вашу организацию (клиент), может использовать ссылку для получения доступа. Доступно только в OneDrive для бизнеса и SharePoint. |
users |
Определенные пользователи в коллекции получателя могут использовать ссылку для получения доступа. Доступно только в OneDrive для бизнеса и SharePoint. |
Отклик
В случае успешного выполнения этот метод возвращает в тексте ответа один ресурс Permission, представляющий запрашиваемые разрешения для совместного доступа.
Ответом будет 201 Created
, если для driveItem создана новая ссылка для общего доступа или 200 OK
возвращается существующая ссылка.
Примеры
Пример 1. Создание анонимной ссылки для общего доступа
В следующем примере запрашивается ссылка для общего доступа для элемента driveItem, указанного {itemId} в OneDrive пользователя.
Ссылка для совместного доступа подразумевает доступ только для чтения, и ее может использовать каждый, кому она предоставлена.
Для пользователей OneDrive для бизнеса и SharePoint используйте sendNotification
параметр , чтобы создать ссылку для общего доступа. Затем ссылка для общего доступа отправляется получателям по электронной почте.
Все существующие разрешения удаляются при первом совместном использовании, если retainInheritedPermissions
имеет значение false.
Запрос
POST https://graph.microsoft.com/beta/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
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Drives.Item.Items.Item.CreateLink;
using Microsoft.Graph.Beta.Models;
var requestBody = new CreateLinkPostRequestBody
{
Type = "view",
Scope = "anonymous",
Password = "String",
Recipients = new List<DriveRecipient>
{
new DriveRecipient
{
OdataType = "microsoft.graph.driveRecipient",
},
},
SendNotification = true,
RetainInheritedPermissions = false,
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Drives["{drive-id}"].Items["{driveItem-id}"].CreateLink.PostAsync(requestBody);
mgc-beta drives items create-link post --drive-id {drive-id} --drive-item-id {driveItem-id} --body '{\
"type": "view",\
"scope": "anonymous",\
"password": "String",\
"recipients": [\
{\
"@odata.type": "microsoft.graph.driveRecipient"\
}\
],\
"sendNotification": true,\
"retainInheritedPermissions": false\
}\
'
// Code snippets are only available for the latest major version. Current major version is $v0.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphdrives "github.com/microsoftgraph/msgraph-beta-sdk-go/drives"
graphmodels "github.com/microsoftgraph/msgraph-beta-sdk-go/models"
//other-imports
)
requestBody := graphdrives.NewCreateLinkPostRequestBody()
type := "view"
requestBody.SetType(&type)
scope := "anonymous"
requestBody.SetScope(&scope)
password := "String"
requestBody.SetPassword(&password)
driveRecipient := graphmodels.NewDriveRecipient()
recipients := []graphmodels.DriveRecipientable {
driveRecipient,
}
requestBody.SetRecipients(recipients)
sendNotification := true
requestBody.SetSendNotification(&sendNotification)
retainInheritedPermissions := false
requestBody.SetRetainInheritedPermissions(&retainInheritedPermissions)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
createLink, err := graphClient.Drives().ByDriveId("drive-id").Items().ByDriveItemId("driveItem-id").CreateLink().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.beta.drives.item.items.item.createlink.CreateLinkPostRequestBody createLinkPostRequestBody = new com.microsoft.graph.beta.drives.item.items.item.createlink.CreateLinkPostRequestBody();
createLinkPostRequestBody.setType("view");
createLinkPostRequestBody.setScope("anonymous");
createLinkPostRequestBody.setPassword("String");
LinkedList<DriveRecipient> recipients = new LinkedList<DriveRecipient>();
DriveRecipient driveRecipient = new DriveRecipient();
driveRecipient.setOdataType("microsoft.graph.driveRecipient");
recipients.add(driveRecipient);
createLinkPostRequestBody.setRecipients(recipients);
createLinkPostRequestBody.setSendNotification(true);
createLinkPostRequestBody.setRetainInheritedPermissions(false);
var result = graphClient.drives().byDriveId("{drive-id}").items().byDriveItemId("{driveItem-id}").createLink().post(createLinkPostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const permission = {
type: 'view',
scope: 'anonymous',
password: 'String',
recipients: [
{
'@odata.type': 'microsoft.graph.driveRecipient'
}
],
sendNotification: true,
retainInheritedPermissions: false
};
await client.api('/me/drive/items/{itemId}/createLink')
.version('beta')
.post(permission);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\Drives\Item\Items\Item\CreateLink\CreateLinkPostRequestBody;
use Microsoft\Graph\Beta\Generated\Models\DriveRecipient;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new CreateLinkPostRequestBody();
$requestBody->setType('view');
$requestBody->setScope('anonymous');
$requestBody->setPassword('String');
$recipientsDriveRecipient1 = new DriveRecipient();
$recipientsDriveRecipient1->setOdataType('microsoft.graph.driveRecipient');
$recipientsArray []= $recipientsDriveRecipient1;
$requestBody->setRecipients($recipientsArray);
$requestBody->setSendNotification(true);
$requestBody->setRetainInheritedPermissions(false);
$result = $graphServiceClient->drives()->byDriveId('drive-id')->items()->byDriveItemId('driveItem-id')->createLink()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.Files
$params = @{
type = "view"
scope = "anonymous"
password = "String"
recipients = @(
@{
"@odata.type" = "microsoft.graph.driveRecipient"
}
)
sendNotification = $true
retainInheritedPermissions = $false
}
New-MgBetaDriveItemLink -DriveId $driveId -DriveItemId $driveItemId -BodyParameter $params
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph_beta import GraphServiceClient
from msgraph_beta.generated.drives.item.items.item.create_link.create_link_post_request_body import CreateLinkPostRequestBody
from msgraph_beta.generated.models.drive_recipient import DriveRecipient
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = CreateLinkPostRequestBody(
type = "view",
scope = "anonymous",
password = "String",
recipients = [
DriveRecipient(
odata_type = "microsoft.graph.driveRecipient",
),
],
send_notification = True,
retain_inherited_permissions = False,
)
result = await graph_client.drives.by_drive_id('drive-id').items.by_drive_item_id('driveItem-id').create_link.post(request_body)
Отклик
Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.
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
}
Пример 2. Создание корпоративных общих ссылок
OneDrive для бизнеса и SharePoint поддерживают ссылки с возможностью общего доступа в компании.
Они похожи на анонимные ссылки, за исключением того, что они работают только для участников владеющей организации.
Чтобы создать такую ссылку, задайте для параметра scope значение organization
.
Запрос
POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/createLink
Content-Type: application/json
{
"type": "edit",
"scope": "organization"
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Drives.Item.Items.Item.CreateLink;
var requestBody = new CreateLinkPostRequestBody
{
Type = "edit",
Scope = "organization",
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Drives["{drive-id}"].Items["{driveItem-id}"].CreateLink.PostAsync(requestBody);
mgc-beta drives items create-link post --drive-id {drive-id} --drive-item-id {driveItem-id} --body '{\
"type": "edit",\
"scope": "organization"\
}\
'
// Code snippets are only available for the latest major version. Current major version is $v0.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphdrives "github.com/microsoftgraph/msgraph-beta-sdk-go/drives"
//other-imports
)
requestBody := graphdrives.NewCreateLinkPostRequestBody()
type := "edit"
requestBody.SetType(&type)
scope := "organization"
requestBody.SetScope(&scope)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
createLink, err := graphClient.Drives().ByDriveId("drive-id").Items().ByDriveItemId("driveItem-id").CreateLink().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.beta.drives.item.items.item.createlink.CreateLinkPostRequestBody createLinkPostRequestBody = new com.microsoft.graph.beta.drives.item.items.item.createlink.CreateLinkPostRequestBody();
createLinkPostRequestBody.setType("edit");
createLinkPostRequestBody.setScope("organization");
var result = graphClient.drives().byDriveId("{drive-id}").items().byDriveItemId("{driveItem-id}").createLink().post(createLinkPostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const permission = {
type: 'edit',
scope: 'organization'
};
await client.api('/me/drive/items/{item-id}/createLink')
.version('beta')
.post(permission);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\Drives\Item\Items\Item\CreateLink\CreateLinkPostRequestBody;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new CreateLinkPostRequestBody();
$requestBody->setType('edit');
$requestBody->setScope('organization');
$result = $graphServiceClient->drives()->byDriveId('drive-id')->items()->byDriveItemId('driveItem-id')->createLink()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.Files
$params = @{
type = "edit"
scope = "organization"
}
New-MgBetaDriveItemLink -DriveId $driveId -DriveItemId $driveItemId -BodyParameter $params
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph_beta import GraphServiceClient
from msgraph_beta.generated.drives.item.items.item.create_link.create_link_post_request_body import CreateLinkPostRequestBody
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = CreateLinkPostRequestBody(
type = "edit",
scope = "organization",
)
result = await graph_client.drives.by_drive_id('drive-id').items.by_drive_item_id('driveItem-id').create_link.post(request_body)
Отклик
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"
},
}
}
Пример 3. Создание внедренных ссылок
При использовании типа ссылки embed
возвращаемое значение webUrl можно внедрять в элемент HTML <iframe>
.
При создании webHtml
ссылки внедрения свойство содержит HTML-код для <iframe>
размещения содержимого.
Примечание. Внедрение ссылок поддерживается только в личных учетных записях OneDrive.
Запрос
Ниже показан пример запроса.
POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/createLink
Content-Type: application/json
{
"type": "embed"
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Drives.Item.Items.Item.CreateLink;
var requestBody = new CreateLinkPostRequestBody
{
Type = "embed",
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Drives["{drive-id}"].Items["{driveItem-id}"].CreateLink.PostAsync(requestBody);
mgc-beta drives items create-link post --drive-id {drive-id} --drive-item-id {driveItem-id} --body '{\
"type": "embed"\
}\
'
// Code snippets are only available for the latest major version. Current major version is $v0.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphdrives "github.com/microsoftgraph/msgraph-beta-sdk-go/drives"
//other-imports
)
requestBody := graphdrives.NewCreateLinkPostRequestBody()
type := "embed"
requestBody.SetType(&type)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
createLink, err := graphClient.Drives().ByDriveId("drive-id").Items().ByDriveItemId("driveItem-id").CreateLink().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.beta.drives.item.items.item.createlink.CreateLinkPostRequestBody createLinkPostRequestBody = new com.microsoft.graph.beta.drives.item.items.item.createlink.CreateLinkPostRequestBody();
createLinkPostRequestBody.setType("embed");
var result = graphClient.drives().byDriveId("{drive-id}").items().byDriveItemId("{driveItem-id}").createLink().post(createLinkPostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const permission = {
type: 'embed'
};
await client.api('/me/drive/items/{item-id}/createLink')
.version('beta')
.post(permission);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\Drives\Item\Items\Item\CreateLink\CreateLinkPostRequestBody;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new CreateLinkPostRequestBody();
$requestBody->setType('embed');
$result = $graphServiceClient->drives()->byDriveId('drive-id')->items()->byDriveItemId('driveItem-id')->createLink()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.Files
$params = @{
type = "embed"
}
New-MgBetaDriveItemLink -DriveId $driveId -DriveItemId $driveItemId -BodyParameter $params
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph_beta import GraphServiceClient
from msgraph_beta.generated.drives.item.items.item.create_link.create_link_post_request_body import CreateLinkPostRequestBody
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = CreateLinkPostRequestBody(
type = "embed",
)
result = await graph_client.drives.by_drive_id('drive-id').items.by_drive_item_id('driveItem-id').create_link.post(request_body)
Отклик
Ниже показан пример запроса.
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"
},
}
}
- Чтобы создать ссылку на основе политики организации по умолчанию и разрешений вызывающего объекта на driveItem, опустите параметры область и type.
- Срок действия ссылок, созданных с помощью этого действия, не истекает, если для организации не применяется политика истечения срока действия по умолчанию.
- Ссылки отображаются в разрешениях общего доступа для driveItem и могут быть удалены владельцем driveItem.
- Ссылки всегда указывают на текущую версию driveItem , если только он не извлечен (только SharePoint).