# レコード共有コマンド

### 概要

`share-record` コマンドで次のアクションが利用できます。

1. [grant](#share-record-share-command) - 指定したレコードを指定ユーザーに対して共有し、権限を付与または変更する。
2. [revoke](#share-record-revoke-command) - 現在のレコード共有を取り消す。
3. [transfer-ownership](#share-record-transfer-ownership-command) - 所有権を指定ユーザーに移す。
4. [cancel](#share-cancel-command) - ユーザーとのすべての共有を取り消す。

### レコードの共有 <a href="#share-record-share-command" id="share-record-share-command"></a>

レコードへのアクセスをユーザーに付与するために使います。共有権や編集権を与えられます。一定期間後、または指定日時で自動的に共有を終了するよう制限することもできます。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `share-record`

**操作:**

* `share` : レコードをユーザーと共有する

**フラグ:**

* **`-s, --share`** *(bool、省略可)*
  * 受信者が他者にレコードを再共有できるようにする。
  * 例: `--share true`
* **`-w, --write`** *(bool、省略可)*
  * 受信者がレコードを変更できるようにする。
  * 例: `--write true`
* **`--expire-at`** *(string、省略可)*
  * 共有が期限切れになる日時を指定する。
  * 形式: `YYYY-MM-DD HH:mm:SS` (ISO)。
  * 例: `--expire-at "2025-09-30 23:59:00"`
* **`--expire-in`** *(string、省略可)*
  * 共有の相対的な有効期限を設定する。
  * *形式*: `mi|h|d|mo|y`
    * `mi` = 分
    * `h` = 時間
    * `d` = 日
    * `mo` = 月
    * `y` = 年
  * 例: `--expire-in 7d` (7日後に期限切れ)
* **`-e, --email`** *(string、必須)*
  * 受信者 (ピアアカウント) のメールアドレス。
  * 例: `--email user@example.com`
* **`record`** *(位置引数、必須)*
  * 共有するレコードのパスまたはUID。
  * 例: `MyPasswords/Bank` または `9xL2c6aBc1234`

**例:**

```shell
My Vault> share-record share <uidaaabbcc11221uuuid> --write=true --share=true --expire-at "2025-09-30
 23:59:00" --email="user@email.com"
```

</details>

<details>

<summary>DotNet SDK</summary>

**メソッド:**

```csharp
public async Task ShareRecordWithUser(
    string recordUid, 
    string username, 
    IRecordShareOptions options)
```

**引数:**

* `recordUid` - ユーザーと共有するレコードのUID
* `username` - 共有先ユーザーのメールアドレス
* `IRecordShareOptions` - 共有のオプション/権限
* **IRecordShareOptions**
  * `CanEdit` - ***Boolean*** - 共有先ユーザーが当該レコードを編集できるかどうか
  * `CanShare` - ***Boolean*** - 共有先ユーザーが当該レコードを再共有できるかどうか
  * `Expiration` - ***DateTimeOffset*** - ユーザーがレコードにアクセスできる共有の有効期間。期限に達すると、当該ユーザーへの共有は無効になる。

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Grant-KeeperRecordAccess`

**エイリアス:** `kshr`

**フラグ:**

* `-Record` : 共有するレコードのUID。
* `-User` : 共有先ユーザーのメールアドレス。
* `-CanEdit` : ユーザーに **レコードの管理** 権限を付与する。
* `-CanShare` : ユーザーに **ユーザーの管理** 権限を付与する。
* `-ExpireIn` : 相対的な有効期限 (例: 数値と単位)。
* `-ExpireAt` : 期限切れ日時 (日時オブジェクト)。

**例:**

```powershell
PS > Grant-KeeperRecordAccess -Record record_uid -User "user@example.com" -CanShare -ExpireIn 5
Record "Example Record" was shared with user@example.com
```

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `share-record --action=<> --email=<email>`

**パラメーター:**

* `record` : 共有するレコードの \<RECORD\_UID>
* `-e, --email` : アクセスを付与するユーザーのメールアドレス
* `-a, --action` : grant、revoke、owner、cancel - レコードに対する操作

**オプション:**

* `-s, --share` : ユーザーがレコードを共有できるようにする
* `-w, --write` : ユーザーがレコードを編集できるようにする
* `-R, --recursive` : 共有フォルダ階層にコマンドを適用する
* `--expire-at` : 共有の期限: `"never"` または ISO 日時 `"YYYY-MM-DD hh:mm:ss"`
* `--expire-in` : 共有の期限: `"never"` または期間 \<NUMBER>\[(m)inutes | (h)ours | (d)ays | (y)ears]
* `--dry-run` : 権限の変更内容を表示するだけで適用しない
* `--contact-only` : 既知の連絡先のみと共有し、他ドメインの一致する連絡先をプロンプトで選ぶ
* `-f, --force` : プロンプトを省略する

**例:**

```sh
My Vault> share-record -a='grant' -e='abc@email.com' -s -w --expire-in=30d af9ed1c8_d2b4_43a3_a459
Record "af9ed1c8_d2b4_43a3_a459" access permissions has been granted to user 'abc@email.com'
```

</details>

<details>

<summary>Python SDK</summary>

**コマンド:**

```python
request = shares_management.RecordShares.prep_request(
    vault=vault,
    emails=[user_email],
    action=shares_management.ShareAction.GRANT.value,
    uid_or_name=record_uid,
    share_expiration=share_expiration,
    dry_run=False,
    enterprise=enterprise_data,
    enterprise_access=False,
    recursive=False,
    can_edit=can_edit,
    can_share=can_share,
)

# リクエストを送信
shares_management.RecordShares.send_requests(vault, [request])
```

</details>

### レコード共有の一括解除 <a href="#share-cancel-command" id="share-cancel-command"></a>

指定ユーザーとのすべての共有を解除するために使います。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `share-record`

**操作:**

* `cancel` : ユーザーとのレコード共有をすべて取り消す

**フラグ:**

* **`-e, --email`** *(string、必須)*
  * 受信者 (ピアアカウント) のメールアドレス。
  * 例: `--email user@example.com`

**例:**

```shell
Vault> share-record cancel user@email.com
Do you want to cancel all shares with user "user@email.com"? (Yes/No) : yes
```

</details>

<details>

<summary>DotNet SDK</summary>

**メソッド:**

```csharp
Task CancelSharesWithUser(string username);
```

**引数:**

`username` - すべての共有を解除する相手のユーザー名

**例外:**

```csharp
Authentication.KeeperApiException
```

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Revoke-KeeperSharesWithUser -User [-Confirm]`

**エイリアス:** `kcancelshare`

**パラメーター:**

<table><thead><tr><th width="146.9921875">パラメーター</th><th width="106.076171875">必須</th><th>説明</th></tr></thead><tbody><tr><td><code>User</code></td><td>はい</td><td>すべての共有を解除する相手のユーザーのメールアドレス。</td></tr><tr><td><code>Confirm</code></td><td>いいえ</td><td>既定では PowerShell が確認を求める (影響が大きい操作)。<code>-Confirm:$false</code> で確認を省略する。</td></tr></tbody></table>

**例:**

```powershell
PowerCommander> Revoke-KeeperSharesWithUser -User am@ml.com
Confirm
Are you sure you want to perform this action?
Performing the operation "Cancel" on target "all record shares with user"am@ml.com"".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): y
All record shares with user "am@ml.com" have been cancelled.
```

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `share-record`

**パラメーター:**

* `record` : 共有するレコードの \<RECORD\_UID>
* `-e, --email` : アクセスを付与するユーザーのメールアドレス
* `-a, --action` : grant、revoke、owner、cancel - レコードに対する操作

**例:**

```sh
Vault> share-record --action=cancel --email=user@email.com <record_uid>
```

</details>

<details>

<summary>Python SDK</summary>

**コマンド:**

```python
request = shares_management.RecordShares.prep_request(
    vault=vault,
    emails=[user_email],
    action=shares_management.ShareAction.CANCEL.value,
    uid_or_name=record_uid,
    share_expiration=share_expiration,
    dry_run=False,
    enterprise=enterprise_data,
    enterprise_access=False,
    recursive=False,
    can_edit=can_edit,
    can_share=can_share,
)

# リクエストを送信
shares_management.RecordShares.send_requests(vault, [request])
```

</details>

### レコード共有の取り消し <a href="#share-record-revoke-command" id="share-record-revoke-command"></a>

ユーザーに対するレコードへのアクセスを取り消すために使います。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `share-record`

**操作:**

* `revoke` : ユーザーからレコード共有アクセスを取り消す

**フラグ:**

* **`-e, --email`** *(string、必須)*
  * 受信者 (ピアアカウント) のメールアドレス。
  * 例: `--email user@example.com`
* **`record`** *(位置引数、必須)*
  * 共有するレコードのパスまたはUID。
  * 例: `MyPasswords/Bank` または `9xL2c6aBc1234`

**例:**

```shell
My Vault> share-record revoke uidaabbcc22556tbuid --email="user@email.com"
```

</details>

<details>

<summary>DotNet SDK</summary>

**メソッド:**

```csharp
Task RevokeShareFromUser(string recordUid, string username);
```

**引数:**

* `recordUid` - ユーザーから取り消すレコードのUID
* `username` - 共有を取り消す相手ユーザーのメールアドレス

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Revoke-KeeperRecordAccess`

**フラグ:**

* `-Record` : レコードのUID
* `-User` : 共有先ユーザーのメールアドレス

**例:**

```powershell
PS > Revoke-KeeperRecordAccess adscsvv1314dca -User user@email.com                    
Record "some_record" share has been removed from <user>
```

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `share-record`

**パラメーター:**

* `record` : 共有するレコードの \<RECORD\_UID>
* `-e, --email` : アクセスを付与するユーザーのメールアドレス
* `-a, --action` : grant、revoke、owner、cancel - レコードに対する操作

**オプション:**

* `-s, --share` : ユーザーがレコードを共有できるようにする
* `-w, --write` : ユーザーがレコードを編集できるようにする
* `-R, --recursive` : 共有フォルダ階層にコマンドを適用する
* `--expire-at` : 共有の期限: `"never"` または ISO 日時 `"YYYY-MM-DD hh:mm:ss"`
* `--expire-in` : 共有の期限: `"never"` または期間 \<NUMBER>\[(m)inutes | (h)ours | (d)ays | (y)ears]
* `--dry-run` : 権限の変更内容を表示するだけで適用しない
* `--contact-only` : 既知の連絡先のみと共有し、他ドメインの一致する連絡先をプロンプトで選ぶ
* `-f, --force` : プロンプトを省略する

**例:**

```sh
My Vault> share-record -a='revoke' -e='abc@email.com' <record_uid>
access permissions has been revoked from user 'abc@email.com'
```

</details>

<details>

<summary>Python SDK</summary>

**コマンド:**

```python
request = shares_management.RecordShares.prep_request(
    vault=vault,
    emails=[user_email],
    action=shares_management.ShareAction.REVOKE.value,
    uid_or_name=record_uid,
    share_expiration=share_expiration,
    dry_run=False,
    enterprise=enterprise_data,
    enterprise_access=False,
    recursive=False,
    can_edit=can_edit,
    can_share=can_share,
)

# リクエストを送信
shares_management.RecordShares.send_requests(vault, [request])
```

</details>

### レコード所有権の移転 <a href="#share-record-transfer-ownership-command" id="share-record-transfer-ownership-command"></a>

レコードの所有者権限をユーザーに移すために使います。

<details>

<summary>DotNet CLI</summary>

**コマンド:** `share-record`

**操作:**

* `transfer` : レコードを移す / レコードの所有権を変更する。

**フラグ:**

* **`-e, --email`** *(string、必須)*
  * 受信者 (ピアアカウント) のメールアドレス。
  * 例: `--email user@example.com`
* **`record`** *(位置引数、必須)*
  * 共有するレコードのパスまたはUID。
  * 例: `MyPasswords/Bank` または `9xL2c6aBc1234`

**例:**

```shell
My Vault> share-record transfer aabbcc2266hyy --email="user@email.com"
```

</details>

<details>

<summary>DotNet SDK</summary>

**メソッド:**

```csharp
Task TransferRecordToUser(string recordUid, string username)
```

**引数:**

* `recordUid` - ユーザーと共有するレコードのUID。
* `username` - レコードを共有する相手ユーザーのメールアドレス。

**例外:**

```csharp
KeeperApiException
```

</details>

<details>

<summary>PowerCommander</summary>

**コマンド:** `Move-KeeperRecordOwnership`

**フラグ:**

* `-Record` : 共有するレコードのUID。
* `-User` : 共有先ユーザーのメールアドレス

**例:**

```powershell
PS > Move-KeeperRecordOwnership record_uid -User user@email.com
Record "<some record title>" was transfered to user@email.com
The new record owner can edit or remove your access to this record.
```

</details>

<details>

<summary>Python CLI</summary>

**コマンド:** `share-record`

**パラメーター:**

* `record` : 共有するレコードの \<RECORD\_UID>
* `-e, --email` : アクセスを付与するユーザーのメールアドレス
* `-a, --action` : grant、revoke、owner、cancel - レコードに対する操作

**オプション:**

* `-s, --share` : ユーザーがレコードを共有できるようにする
* `-w, --write` : ユーザーがレコードを編集できるようにする
* `-R, --recursive` : 共有フォルダ階層にコマンドを適用する
* `--expire-at` : 共有の期限: `"never"` または ISO 日時 `"YYYY-MM-DD hh:mm:ss"`
* `--expire-in` : 共有の期限: `"never"` または期間 \<NUMBER>\[(m)inutes | (h)ours | (d)ays | (y)ears]
* `--dry-run` : 権限の変更内容を表示するだけで適用しない
* `--contact-only` : 既知の連絡先のみと共有し、他ドメインの一致する連絡先をプロンプトで選ぶ
* `-f, --force` : プロンプトを省略する

**例:**

```sh
My Vault> share-record -a='owner' -e='abc@email.com' record_uid
```

</details>

<details>

<summary>Python SDK</summary>

**コマンド:**

```python
request = shares_management.RecordShares.prep_request(
    vault=vault,
    emails=[user_email],
    action=shares_management.ShareAction.OWNER.value,
    uid_or_name=record_uid,
    share_expiration=share_expiration,
    dry_run=False,
    enterprise=enterprise_data,
    enterprise_access=False,
    recursive=False,
    can_edit=can_edit,
    can_share=can_share,
)

# リクエストを送信
shares_management.RecordShares.send_requests(vault, [request])
```

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/commander-sdk/keeper-commander-sdks/sdk-command-reference/sharing-commands/record-share-command.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
