名前空間: microsoft.graph
重要
Microsoft Graph の /beta バージョンの API は変更される可能性があります。 実稼働アプリケーションでこれらの API を使用することは、サポートされていません。 v1.0 で API を使用できるかどうかを確認するには、Version セレクターを使用します。
driveItem で表されるファイルで排他的ロックを取得するか、既に保持している既存のロックを拡張します。 ロックが保持されている間、他のユーザーが同じファイルでロックを取得することはできません。 要求で指定された期間が経過すると、ロックは自動的に期限切れになります。
注:
この API は、ファイルを表す driveItems にのみ適用されます。 フォルダーやその他のファイル以外の driveItems にはロックを適用できません。 ファイル以外の driveItem を対象とする要求は、 400 Bad Request で拒否されます。
1 つのエンドポイントが最初の取得と更新の両方を処理します。 サーバーは、ファイルの現在のロック状態と呼び出し元の ID に基づいて適用される動作を決定します。 呼び出し元は、以前にファイルをロックしたかどうかを追跡する必要はなく、ロック識別子を管理する必要もありません。
現在は排他的ロックのみがサポートされています。
この API は、次の国内クラウド展開で使用できます。
| グローバル サービス |
米国政府機関 L4 |
米国政府機関 L5 (DOD) |
21Vianet が運営する中国 |
| ✅ |
❌ |
❌ |
❌ |
アクセス許可
この API の最小特権としてマークされているアクセス許可またはアクセス許可を選択します。
アプリで必要な場合にのみ、より高い特権のアクセス許可またはアクセス許可を使用します。 委任されたアクセス許可とアプリケーションのアクセス許可の詳細については、「アクセス許可の種類」を参照してください。 これらのアクセス許可の詳細については、「アクセス許可のリファレンス」を参照してください。
| アクセス許可の種類 |
最小特権アクセス許可 |
より高い特権のアクセス許可 |
| 委任 (職場または学校のアカウント) |
Files.ReadWrite |
Files.ReadWrite.All、Sites.ReadWrite.All |
| 委任 (個人用 Microsoft アカウント) |
サポートされていません。 |
サポートされていません。 |
| アプリケーション |
Files.ReadWrite.All |
Sites.ReadWrite.All |
注:
SharePoint Embedded では、コンテナーのコンテンツにアクセスするための FileStorageContainer.Selected アクセス許可が必要です。 このアクセス許可は、前述のアクセス許可とは異なります。 Microsoft Graph のアクセス許可に加えて、アプリにはこの API を呼び出すために必要な コンテナーの種類のアクセス許可 が必要です。 詳細については、「 SharePoint Embedded の認証と承認」を参照してください。
HTTP 要求
POST /drives/{drive-id}/items/{item-id}/lock
| 名前 |
説明 |
| Authorization |
ベアラー {token}。 必須です。
認証と認可についての詳細をご覧ください。 |
| Content-Type |
application/json. 必須です。 |
要求本文
要求本文では、ロック パラメーターの JSON 表現を指定します。
| プロパティ |
型 |
必須 |
説明 |
| durationMinutes |
Int32 |
はい |
ロック期間 (分単位)。 1 分から 30 分の間である必要があります。 ロックは、要求時にこの値を加えた時点で期限切れになります。 |
ロック識別子とロックの種類はサーバーによって決定され、呼び出し元が指定することはできません。
応答
サーバーは、ファイルの現在のロック状態と呼び出し元の ID に基づいて、この要求が新しいロックを取得するか、既存のロックを更新するかを判断します。
| 現在の状態 |
発信者 ID |
アクション |
| ファイルがロックされていないか、既存のロックの有効期限が切れています。 |
アクセス許可を持つすべての呼び出し元。 |
新しいロックを取得します。 |
| ファイルはロックされており、呼び出し元はロックを保持しています。 |
ロックの所有者と同じ呼び出し元。 |
既存のロックを更新します。 expirationDateTime が更新されます。 |
| ファイルが別のユーザーによってロックされています。 |
別の発信者。 |
409 Conflictを返します。 呼び出し元は、既存のロックが解放されるか、有効期限が切れるまでロックを取得できません。 |
成功した場合、このメソッドは応答本文で 200 OK 応答コードと lockInfo リソースを返します。
このメソッドは、次のエラー応答コードを返します。
| HTTP コード |
説明 |
| 400 |
要求が正しくありません。
durationMinutes が欠落しているか、正ではないか、または最大 30 分を超えています。 対象の driveItem がファイル (フォルダーなど) でない場合にも返されます。 |
| 401 |
要求に有効な認証資格情報がありません。 |
| 403 |
呼び出し元には、このファイルをロックするアクセス許可がありません。 |
| 404 |
driveItem が指定したパスで見つかりませんでした。 |
| 409 |
ファイルが別のユーザーによってロックされています。 呼び出し元は、既存のロックが解放されるか、有効期限が切れるまで待ってから、新しいロックを取得する必要があります。 |
エラーが返される方法の詳細については、 Microsoft アカウントの Microsoft Graph と職場または学校アカウントの Microsoft Graph の違いについては、「エラー応答とリソースの種類」を参照してください。
例
例 1:ロック解除されたファイルのロックを取得する
要求
次の例は要求を示しています。
POST https://graph.microsoft.com/beta/drives/{drive-id}/items/{item-id}/lock
Content-Type: application/json
{
"durationMinutes": 30
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Drives.Item.Items.Item.Lock;
var requestBody = new LockPostRequestBody
{
DurationMinutes = 30,
};
// 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}"].Lock.PostAsync(requestBody);
// 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.NewLockPostRequestBody()
durationMinutes := int32(30)
requestBody.SetDurationMinutes(&durationMinutes)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
lock, err := graphClient.Drives().ByDriveId("drive-id").Items().ByDriveItemId("driveItem-id").Lock().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.lock.LockPostRequestBody lockPostRequestBody = new com.microsoft.graph.beta.drives.item.items.item.lock.LockPostRequestBody();
lockPostRequestBody.setDurationMinutes(30);
var result = graphClient.drives().byDriveId("{drive-id}").items().byDriveItemId("{driveItem-id}").lock().post(lockPostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const lockInfo = {
durationMinutes: 30
};
await client.api('/drives/{drive-id}/items/{item-id}/lock')
.version('beta')
.post(lockInfo);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\Drives\Item\Items\Item\Lock\LockPostRequestBody;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new LockPostRequestBody();
$requestBody->setDurationMinutes(30);
$result = $graphServiceClient->drives()->byDriveId('drive-id')->items()->byDriveItemId('driveItem-id')->lock()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.Files
$params = @{
durationMinutes = 30
}
Lock-MgBetaDriveItem -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.lock.lock_post_request_body import LockPostRequestBody
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = LockPostRequestBody(
duration_minutes = 30,
)
result = await graph_client.drives.by_drive_id('drive-id').items.by_drive_item_id('driveItem-id').lock.post(request_body)
応答
次の例は応答を示しています。
HTTP/1.1 200 OK
Content-Type: application/json
{
"lockType": "exclusive",
"expirationDateTime": "2026-05-13T14:30:00Z",
"createdDateTime": "2026-05-13T14:00:00Z"
}
例 2: 呼び出し元が既に保持している既存のロックを更新する
要求本文は取得ケースと同じです。ファイルの現在の状態のみが異なります。
要求
次の例は要求を示しています。
POST https://graph.microsoft.com/beta/drives/{drive-id}/items/{item-id}/lock
Content-Type: application/json
{
"durationMinutes": 10
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Drives.Item.Items.Item.Lock;
var requestBody = new LockPostRequestBody
{
DurationMinutes = 10,
};
// 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}"].Lock.PostAsync(requestBody);
// 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.NewLockPostRequestBody()
durationMinutes := int32(10)
requestBody.SetDurationMinutes(&durationMinutes)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
lock, err := graphClient.Drives().ByDriveId("drive-id").Items().ByDriveItemId("driveItem-id").Lock().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.lock.LockPostRequestBody lockPostRequestBody = new com.microsoft.graph.beta.drives.item.items.item.lock.LockPostRequestBody();
lockPostRequestBody.setDurationMinutes(10);
var result = graphClient.drives().byDriveId("{drive-id}").items().byDriveItemId("{driveItem-id}").lock().post(lockPostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const lockInfo = {
durationMinutes: 10
};
await client.api('/drives/{drive-id}/items/{item-id}/lock')
.version('beta')
.post(lockInfo);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\Drives\Item\Items\Item\Lock\LockPostRequestBody;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new LockPostRequestBody();
$requestBody->setDurationMinutes(10);
$result = $graphServiceClient->drives()->byDriveId('drive-id')->items()->byDriveItemId('driveItem-id')->lock()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.Files
$params = @{
durationMinutes = 10
}
Lock-MgBetaDriveItem -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.lock.lock_post_request_body import LockPostRequestBody
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = LockPostRequestBody(
duration_minutes = 10,
)
result = await graph_client.drives.by_drive_id('drive-id').items.by_drive_item_id('driveItem-id').lock.post(request_body)
応答
次の例は応答を示しています。
expirationDateTime が更新されます。
HTTP/1.1 200 OK
Content-Type: application/json
{
"lockType": "exclusive",
"expirationDateTime": "2026-05-13T14:39:00Z",
"createdDateTime": "2026-05-13T14:00:00Z"
}
- 現在は排他的ロックのみがサポートされています。 応答の lockType は常に
exclusive です。
- ロック期間は、要求あたり 30 分に制限されています。 より長い保留の場合は、既存のロックの有効期限が切れる前に、この API を再度呼び出します。呼び出しは自動的に更新として処理されます。
- 新しい expirationDateTime は、要求時間に durationMinutes を加えたものとして計算されます。前の有効期限を延長するのではなく、置き換えます。 残り時間よりも短い時間で呼び出すと、ロック期間が効果的に短縮されます。
-
createdDateTime と expirationDateTime は UTC で返されます。
- この API はべき等であり、再試行セーフです。ネットワーク障害により、呼び出し元がロックが成功したかどうかが不明な場合、再試行すると、当然ながら更新 (最初の呼び出しが成功した場合) または新しい取得 (成功しなかった場合) が実行されます。