# レコードの作成と更新

## record-addコマンド

本ページには、Keeperコマンダーにおける `record-add` コマンドを使用したレコードの作成方法について、包括的な例を記載しています。このコマンドでは、フィールド指定にドット記法を、複雑なフィールドには `$JSON:` 構文をサポートしています。

{% hint style="info" %}
Keeperコマンダーでは、行末にバックスラッシュ (`\`) を使用することで、長いコマンドを複数行に分割して記述でき、可読性が向上します。
{% endhint %}

{% hint style="warning" %}
バックスラッシュ (`\`) の後にスペースを入れないでください。行は必ず **`\` で終わる**必要があります。スペースがあると空の引数が渡され、解析エラーの原因となります。
{% endhint %}

***

### コマンド構文

```bash
record-add --title "Record Title" --record-type "RECORD_TYPE" [OPTIONS] [FIELDS...]
```

#### 主な引数

<table><thead><tr><th width="268.39453125">引数</th><th>説明</th></tr></thead><tbody><tr><td><code>--title</code> / <code>-t</code></td><td>レコードのタイトル (必須)</td></tr><tr><td><code>--record-type</code> / <code>-rt</code></td><td>レコードタイプ (必須)</td></tr><tr><td><code>--notes</code> / <code>-n</code></td><td>レコードのメモ (任意)</td></tr><tr><td><code>--folder</code></td><td>レコードを保存するフォルダのパスまたはUID (任意)</td></tr><tr><td><code>--force</code> / <code>-f</code></td><td>警告を無視して実行 (任意)</td></tr><tr><td><code>--syntax-help</code></td><td>フィールド構文のヘルプを表示</td></tr></tbody></table>

***

#### フィールド構文の概要

ドット記法の形式

```bash
[FIELD_SET.][FIELD_TYPE][.FIELD_LABEL]=FIELD_VALUE
```

各要素の説明

<table><thead><tr><th width="226.73828125">要素名</th><th>説明</th></tr></thead><tbody><tr><td><code>FIELD_SET</code></td><td>任意。<code>f</code> (標準フィールド) または<code>c</code> (カスタムフィールド) を指定可能</td></tr><tr><td><code>FIELD_TYPE</code></td><td>フィールドタイプ (例: <code>login</code>、 <code>password</code>、<code>url</code>など)</td></tr><tr><td><code>FIELD_LABEL</code></td><td>任意。フィールドにラベルを付ける場合に使用</td></tr><tr><td><code>FIELD_VALUE</code></td><td>フィールドに設定する値</td></tr></tbody></table>

***

#### 特殊な値の構文

<table><thead><tr><th width="242.12890625">構文</th><th>説明</th></tr></thead><tbody><tr><td><code>$JSON:{"key": "value"}</code></td><td>複雑なオブジェクト型フィールドに使用</td></tr><tr><td><code>$GEN</code></td><td>パスワード、TOTPコード、鍵ペアなどを自動生成</td></tr><tr><td><code>$BASE64:&#x3C;base64_string></code></td><td>任意の文字列フィールド向けにBase64デコードした値を展開</td></tr><tr><td><code>file=@filename</code></td><td>ファイルの添付。<code>@</code>のあとにファイルパスを指定</td></tr></tbody></table>

***

### レコードタイプ

Keeperコマンダーでは、以下の2種類のレコードタイプがサポートされています。

* **タイプ付きレコード**\
  あらかじめ定義されたスキーマに基づく構造化レコード (例: ログイン、銀行口座、連絡先など）
* **レガシーレコード**\
  一般的なレコード形式。使用時は`-rt legacy`または`-rt general`を指定します。

***

### フィールドタイプと例

#### 単純フィールドタイプ

<table><thead><tr><th width="250.70703125">フィールドタイプ</th><th>説明</th></tr></thead><tbody><tr><td><code>login</code></td><td>ユーザー名/ログインID</td></tr><tr><td><code>password</code></td><td>パスワード (マスク表示)</td></tr><tr><td><code>url</code></td><td>ウェブサイトのURL</td></tr><tr><td><code>email</code></td><td>メールアドレス</td></tr><tr><td><code>text</code></td><td>プレーンテキスト</td></tr><tr><td><code>multiline</code></td><td>複数行のテキスト</td></tr><tr><td><code>secret</code></td><td>マスクされたテキストフィールド</td></tr><tr><td><code>note</code></td><td>マスクされた複数行のテキスト</td></tr><tr><td><code>oneTimeCode</code></td><td>TOTP/2要素認証コード (2FA)</td></tr><tr><td><code>date</code></td><td>Unixエポックタイムまたは日付文字列</td></tr></tbody></table>

***

#### 複雑フィールドタイプ

※ `$JSON:` 構文で指定する必要があります。

<table><thead><tr><th width="235.515625">フィールドタイプ</th><th>説明</th></tr></thead><tbody><tr><td><code>phone</code></td><td>電話番号 (地域情報や種別を含む)</td></tr><tr><td><code>name</code></td><td>氏名 (名、ミドルネーム、姓)</td></tr><tr><td><code>address</code></td><td>住所 (郵便番号、都道府県、市区町村、番地など)</td></tr><tr><td><code>paymentCard</code></td><td>クレジットカード情報</td></tr><tr><td><code>bankAccount</code></td><td>銀行口座情報</td></tr><tr><td><code>securityQuestion</code></td><td>セキュリティ質問と回答のペア</td></tr><tr><td><code>host</code></td><td>ホスト名とポート番号の組み合わせ</td></tr><tr><td><code>keyPair</code></td><td>SSH鍵ペア</td></tr></tbody></table>

### クイックスタート例

#### 基本的なログインレコード

**1行版 (コピー＆ペースト向け・推奨)**

```bash
record-add -t "Gmail Account" -rt login login=john.doe@gmail.com password=SecurePass123 url=https://accounts.google.com
```

**複数行版 (手入力向け。コピー＆ペーストは非推奨)**

```bash
record-add -t "Gmail Account" -rt login \
  login=john.doe@gmail.com \
  password=SecurePass123 \
  url=https://accounts.google.com
```

***

#### 電話番号付きの基本的な連絡先レコード

```bash
record-add -t "John Smith" -rt contact \
  name='$JSON:{"first": "John", "middle": "Michael", "last": "Smith"}' \
  email=john.smith@email.com \
  phone.Mobile='$JSON:{"number": "(555) 555-1234", "type": "Mobile"}'
```

***

#### 複数レコードのスクリプト実行

Keeperコマンダーでは、`run-batch` または `run` の[コマンド](/keeperpam/jp/commander-cli/command-reference/misc-commands.md#run-batch-command)でスクリプト化できます。複雑なオブジェクト用の正しいJSON形式を得る手順は、ウェブボルトでレコードを1件作成し、コマンダーで `get UID --format=json` を実行すると、`$JSON:{"key": "value"}` の形で確認できる点が簡単です。その内容をもとにバッチを組み立てて実行します。

```bash
# my_script.txt
record-add -t "Gmail Account" -rt login login=john.doe@gmail.com
record-add -t "Yahoo Account" -rt login login=john.doe@yahoo.com
# run batch
keeper shell run-batch my_script.txt
```

## レコードタイプ別の詳細な使用例

#### 1. ログイン情報レコード

```bash
# 基本的なログイン情報レコード
record-add -t "Gmail Account" -rt login \
  login=john.doe@gmail.com \
  password=SecurePass123 \
  url=https://accounts.google.com

# 自動生成されたパスワードでのログイン
record-add -t "Work Account" -rt login \
  login=john.doe \
  password='$GEN:rand,16' \
  url=https://company.com
  
# Base64でエンコードしたパスワードを使用したログイン
record-add -t "Admin Portal" -rt login \
  login=administrator \
  password='$BASE64:QWRtIW5AMjAyNCNTdHIwbmck' \
  url=https://admin.company.com

# TOTP付きログイン
record-add -t "Banking Login" -rt login \
  login=john.doe \
  password=MySecurePassword \
  url=https://mybank.com \
  oneTimeCode='$GEN'

# セキュリティ質問付きログイン
record-add -t "Investment Account" -rt login \
  login=john.doe \
  password=InvestPass123 \
  url=https://investment.com \
  securityQuestion.Mother='$JSON:[{"question": "What is your mother'\''s maiden name?", "answer": "Smith"}]'

# カスタムフィールド付きログイン
record-add -t "Work VPN" -rt login \
  login=john.doe \
  password=VpnPass123 \
  url=https://vpn.company.com \
  c.text.Department="IT Security" \
  c.text.Employee_ID="EMP001"
```

#### 2. 銀行口座レコード

```bash
# 基本的な銀行口座レコード
record-add -t "Chase Checking" -rt bankAccount \
  bankAccount='$JSON:{"accountType": "Checking", "routingNumber": "021000021", "accountNumber": "123456789"}' \
  name='$JSON:{"first": "John", "last": "Doe"}' \
  login=john.doe \
  password=BankPass123

# オンラインバンキング付き銀行口座
record-add -t "Wells Fargo Savings" -rt bankAccount \
  bankAccount='$JSON:{"accountType": "Savings", "routingNumber": "121042882", "accountNumber": "987654321"}' \
  name='$JSON:{"first": "Jane", "last": "Smith"}' \
  login=jane.smith \
  password=SavePass456 \
  url=https://wellsfargo.com \
  --notes "金利の高い普通預金口座"
```

#### 3. クレジットカードレコード

```bash
# クレジットカード
record-add -t "Chase Sapphire Preferred" -rt bankCard \
  paymentCard='$JSON:{"cardNumber": "4111111111111111", "cardExpirationDate": "12/2025", "cardSecurityCode": "123"}' \
  text.cardholderName="John Doe" \
  pinCode=1234 \
  login=john.doe \
  password=CardPass123

# デビットカード
record-add -t "Bank of America Debit" -rt bankCard \
  paymentCard='$JSON:{"cardNumber": "5555555555554444", "cardExpirationDate": "08/2026", "cardSecurityCode": "456"}' \
  text.cardholderName="Jane Smith" \
  pinCode=5678
```

#### 4. 連絡先レコード

```bash
# 個人の連絡先
record-add -t "John Smith" -rt contact \
  name='$JSON:{"first": "John", "middle": "Michael", "last": "Smith"}' \
  email=john.smith@email.com \
  phone.Mobile='$JSON:{"number": "(555) 555-1234", "type": "Mobile"}' \
  text.company="ABC Corporation"

# 複数の電話番号を持つビジネス連絡先
record-add -t "Dr. Sarah Johnson" -rt contact \
  name='$JSON:{"first": "Sarah", "last": "Johnson"}' \
  email=sarah.johnson@medical.com \
  phone.Work='$JSON:{"number": "(555) 987-6543", "type": "Work"}' \
  phone.Mobile='$JSON:{"number": "(555) 123-4567", "type": "Mobile"}' \
  text.company="Medical Associates" \
  c.text.Title="Chief Medical Officer"
```

#### 5. 住所レコード

```bash
# 自宅の住所
record-add -t "Home Address" -rt address \
  address='$JSON:{"street1": "123 Main St", "street2": "Apt 4B", "city": "New York", "state": "NY", "zip": "10001", "country": "US"}'

# 勤務先の住所
record-add -t "Office Address" -rt address \
  address='$JSON:{"street1": "456 Business Ave", "city": "San Francisco", "state": "CA", "zip": "94105", "country": "US"}' \
  --notes "本社所在地"
```

#### 6. サーバーの認証情報

```bash
# Webサーバー
record-add -t "Production Web Server" -rt serverCredentials \
  host='$JSON:{"hostName": "web.company.com", "port": "22"}' \
  login=admin \
  password='$GEN:rand,20' \
  c.text.Environment="Production" \
  c.text.Purpose="Web Server"

# データベースサーバー
record-add -t "MySQL Database" -rt databaseCredentials \
  host='$JSON:{"hostName": "db.company.com", "port": "3306"}' \
  login=dbadmin \
  password=DbSecure123 \
  text.database="production_db"
```

#### 7. SSHキー

```bash
# SSH鍵ペアの生成
record-add -t "Production SSH Key" -rt sshKeys \
  keyPair='$GEN:ed25519,enc' \
  host='$JSON:{"hostName": "prod.company.com", "port": "22"}' \
  login=deploy \
  c.text.Purpose="Production deployment"

# 既存のSSH鍵を使用
record-add -t "GitHub SSH Key" -rt sshKeys \
  keyPair='$JSON:{"privateKey": "-----BEGIN OPENSSH PRIVATE KEY-----\n...", "publicKey": "ssh-ed25519 AAAAC3..."}' \
  host='$JSON:{"hostName": "github.com", "port": "22"}' \
  login=git
```

#### 8. ソフトウェアライセンス

```bash
# ソフトウェアライセンス
record-add -t "Microsoft Office" -rt softwareLicense \
  licenseNumber="XXXXX-XXXXX-XXXXX-XXXXX-XXXXX" \
  c.text.Product_Version="Office 365" \
  c.text.Licensed_To="John Doe" \
  c.date.Purchase_Date="2023-01-15" \
  c.date.Expiration_Date="2024-01-15"
```

#### 9. WiFiパスワード

```bash
# WiFiネットワーク
record-add -t "Home WiFi" -rt wifiCredentials \
  text.ssid="MyHomeNetwork" \
  password=WiFiPassword123 \
  c.text.Security_Type="WPA2" \
  c.text.Frequency="5GHz"
```

#### 10. メモ

```bash
# 基本的なメモ
record-add -t "Important Information" -rt encryptedNotes \
  note="This is confidential information that needs to be encrypted." \
  date="2024-01-15"

# カスタムフィールド付きメモ
record-add -t "Recovery Codes" -rt encryptedNotes \
  note="Backup codes for two-factor authentication" \
  c.text.Service="Google Authenticator" \
  c.multiline.Codes="123456\n789012\n345678"
```

#### 11. データベース認証情報

```bash
# PostgreSQLデータベース
record-add -t "Production PostgreSQL" -rt databaseCredentials \
  host='$JSON:{"hostName": "db.company.com", "port": "5432"}' \
  login=postgres \
  password='$GEN:rand,24' \
  text.database="production_db" \
  c.text.Environment="Production" \
  c.text.SSL_Mode="require"

# MongoDBデータベース
record-add -t "Analytics MongoDB" -rt databaseCredentials \
  host='$JSON:{"hostName": "mongo.company.com", "port": "27017"}' \
  login=admin \
  password=MongoPass456 \
  text.database="analytics" \
  c.text.Replica_Set="rs0"
```

#### 12. 運転免許証

```bash
# 運転免許証
record-add -t "Driver's License" -rt driverLicense \
  accountNumber=DL123456789 \
  name='$JSON:{"first": "John", "last": "Doe"}' \
  birthDate="1990-01-15" \
  expirationDate="2025-01-15" \
  address='$JSON:{"street1": "123 Main St", "city": "New York", "state": "NY", "zip": "10001", "country": "US"}' \
  c.text.License_Class="Class C"

# 商用運転免許証
record-add -t "CDL License" -rt driverLicense \
  accountNumber=CDL987654321 \
  name='$JSON:{"first": "Jane", "last": "Smith"}' \
  birthDate="1985-05-20" \
  expirationDate="2024-05-20" \
  c.text.License_Class="Class A" \
  c.text.Endorsements="Hazmat, Passenger"
```

#### 13. パスポート

```bash
# 米国パスポート
record-add -t "US Passport" -rt passport \
  accountNumber=123456789 \
  name='$JSON:{"first": "John", "last": "Doe"}' \
  birthDate="1990-01-15" \
  expirationDate="2030-01-15" \
  date="2020-01-15" \
  address='$JSON:{"street1": "123 Main St", "city": "New York", "state": "NY", "zip": "10001", "country": "US"}' \
  c.text.Place_of_Birth="New York, NY" \
  c.text.Nationality="US"
```

#### 14. 健康保険

```bash
# 健康保険
record-add -t "Blue Cross Blue Shield" -rt healthInsurance \
  accountNumber=12345678901 \
  name='$JSON:{"first": "John", "last": "Doe"}' \
  login=john.doe \
  password=HealthPass123 \
  url=https://bcbs.com \
  c.text.Plan_Type="PPO" \
  c.text.Group_Number="12345" \
  c.text.Deductible="$2000"
```

#### 15. メンバーシップ

```bash
# ジムメンバーシップ
record-add -t "Gold's Gym" -rt membership \
  accountNumber=GYM123456 \
  name='$JSON:{"first": "John", "last": "Doe"}' \
  password=GymPass123 \
  c.text.Membership_Type="Premium" \
  c.date.Expiration_Date="2024-12-31"

# プロフェッショナルメンバーシップ
record-add -t "IEEE Membership" -rt membership \
  accountNumber=IEEE987654 \
  name='$JSON:{"first": "Jane", "last": "Smith"}' \
  password=IEEEPass456 \
  c.text.Membership_Grade="Senior Member" \
  c.text.Specialization="Computer Science"
```

#### 16. 出生証明書

```bash
# 出生証明書
record-add -t "Birth Certificate" -rt birthCertificate \
  name='$JSON:{"first": "John", "middle": "Michael", "last": "Doe"}' \
  birthDate="1990-01-15" \
  address='$JSON:{"street1": "Hospital Address", "city": "New York", "state": "NY", "country": "US"}' \
  c.text.Certificate_Number="BC123456789" \
  c.text.Place_of_Birth="New York General Hospital" \
  c.text.Parents_Names="Jane Doe, Robert Doe"
```

#### 17. ソーシャルセキュリティカード

```bash
# SSNカード
record-add -t "Social Security Card" -rt ssnCard \
  accountNumber=123-45-6789 \
  name='$JSON:{"first": "John", "middle": "Michael", "last": "Doe"}' \
  c.text.Issue_Date="2008-01-15" \
  c.text.Issue_State="New York"
```

#### 18. 写真レコード

```bash
# 写真レコード
record-add -t "Profile Photo" -rt photo \
  file='@/path/to/profile.jpg' \
  c.text.Description="Professional headshot" \
  c.date.Date_Taken="2024-01-15"
```

#### 19. 添付ファイル

```bash
# 添付ファイル付きレコード
record-add -t "Important Document" -rt file \
  file='@/path/to/document.pdf' \
  --notes "Legal documents"

# 複数の添付ファイル
record-add -t "Project Files" -rt file \
  file='@/path/to/project.zip' \
  file='@/path/to/readme.txt' \
  c.text.Project_Name="Alpha Release"
```

### PAM (特権アクセス管理) レコードタイプ <a href="#pam-privileged-access-management-record-types" id="pam-privileged-access-management-record-types"></a>

{% hint style="warning" %}
PAMレコードでは、ローテーション、接続、トンネリングなどを利用するために、追加のコマンドによる設定が必要です。詳細は、本セクションの後に示す例をご参照ください。
{% endhint %}

{% hint style="warning" %}
PAM構成タイプは、[pam config](/keeperpam/jp/commander-cli/command-reference/keeperpam-commands.md#sub-command-config)コマンドを使用して作成します。
{% endhint %}

#### 20. PAMデータベース

```bash
# PAMデータベース構成
record-add -t "Production Oracle DB" -rt pamDatabase \
  pamHostname='$JSON:{"hostName": "oracle.company.com", "port": "1521"}' \
  login=system \
  password='$GEN:rand,20' \
  text.database="PROD" \
  c.text.Instance_Name="ORCL" \
  c.text.Service_Name="prod.company.com"
```

#### 21. PAMディレクトリ

```bash
# Active Directory PAM
record-add -t "Corporate Active Directory" -rt pamDirectory \
  pamHostname='$JSON:{"hostName": "dc.company.com", "port": "389"}' \
  login=administrator \
  password='$GEN:rand,24' \
  c.text.Domain="company.com" \
  c.text.Base_DN="dc=company,dc=com" \
  c.text.Security_Protocol="LDAPS"
```

#### 22. PAMマシン

```bash
# プロダクションサーバーPAM
record-add -t "Production Web Server" -rt pamMachine \
  pamHostname='$JSON:{"hostName": "web01.company.com", "port": "22"}' \
  login=root \
  password='$GEN:rand,20' \
  c.text.OS="Ubuntu 20.04" \
  c.text.Environment="Production" \
  c.text.Purpose="Web Application Server"
```

#### 23. PAMユーザー

```bash
# 特権ユーザーアカウント
record-add -t "Database Admin User" -rt pamUser \
  login=dbadmin \
  password='$GEN:rand,24' \
  name='$JSON:{"first": "Database", "last": "Administrator"}' \
  c.text.Department="IT Operations" \
  c.text.Access_Level="Full Database Admin" \
  c.date.Account_Expiry="2024-12-31"
```

#### 24. PAMリモートブラウザ

```bash
# リモートブラウザセッション
record-add -t "Salesforce Admin Session" -rt pamRemoteBrowser \
  url=https://company.salesforce.com \
  login=admin@company.com \
  password='$GEN:rand,16' \
  c.text.Session_Type="Administrative" \
  c.text.Browser_Profile="Chrome Enterprise"
```

### PAM環境の例

各PAMレコードは、Keeperゲートウェイを参照するPAM構成に紐付けられています。このゲートウェイは通常、ローカルネットワーク内またはPAMリソースへのアクセスが可能な場所にインストールされます。以下は、新しいPAM環境を構成する際の基本的な出発点となる例です。

```bash
# 共有フォルダを作成
mkdir gwapp -sf -a
# Secrets Managerアプリケーションを作成
secrets-manager app create gwapp1
# 作成した共有フォルダを新しいアプリに追加
secrets-manager share add --app=gwapp1 --secret=SHARED_FOLDER_UID --editable

# 新しいPAMゲートウェイを作成 - 出力：Docker用のbase64構成
pam gateway new --name=gateway1 --application=gwapp1 --config-init=b64 --return_value
# 新しいゲートウェイを使ってPAM構成を作成
pam config new --environment=local \
  --title=config1 \
  --gateway=gateway1 \
  -sf=SHARED_FOLDER_UID \
  --connections=on --tunneling=on --rotation=on --remote-browser-isolation=on

# PAMリソースレコードとユーザーを作成：管理者とローテーションユーザーを持つマシン1台
record-add --folder=SHARED_FOLDER_UID --title=admin1 -rt=pamUser \
  login=admin1 password="$GEN:rand,16"
record-add --folder=SHARED_FOLDER_UID --title=user1  -rt=pamUser \
  login=user1  password="$GEN:rand,16"
record-add --folder=SHARED_FOLDER_UID --title=machine1 -rt=pamMachine \
  pamHostname="$JSON:{\"hostName\": \"127.0.0.1\", \"port\": \"22\"}"

# 接続とトンネリング用にPAMマシンを設定
pam tunnel edit PAM_MACHINE_UID --configuration=PAM_CONFIG_UID --enable-tunneling
pam connection edit PAM_MACHINE_UID --configuration=PAM_CONFIG_UID \
  --connections=on \
  --protocol=ssh \
  --admin-user=ADMIN_USER_UID

# PAMユーザーをマシン（リソース）のローテーション用に設定
# --force は非対話モードに切り替える
pam rotation edit --config=PAM_CONFIG_UID \
  --record=PAM_USER_UID \
  --resource=PAM_MACHINE_UID \
  --admin-user=ADMIN_USER_UID \
  --on-demand --enable --force

# ゲートウェイインストール後にセットアップをテスト可能
pam tunnel start PAM_MACHINE_UID
# pam tunnel stop ENDPOINT_UID
pam action rotate --record-uid=PAM_USER_UID
```

### 高度な機能

#### パスワード生成

```bash
# ランダムパスワード（既定）
password='$GEN'
password='$GEN:rand,16'  # 16文字

# Dicewareパスワード
password='$GEN:dice,5'   # 語数 5

# 暗号ベースのパスワード
password='$GEN:crypto'
```

#### TOTP/2FAの生成

```bash
# TOTPシークレットを生成
oneTimeCode='$GEN'

# 既存のTOTP URL
oneTimeCode='otpauth://totp/Example:user@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example'
```

#### SSHキーの生成

```bash
# RSA鍵ペアを生成
keyPair='$GEN:rsa'

# EC鍵ペアを生成
keyPair='$GEN:ec'

# Ed25519鍵ペアを生成（推奨）
keyPair='$GEN:ed25519'

# 暗号化された鍵ペアを生成
keyPair='$GEN:ed25519,enc'
```

#### カスタムフィールド <a href="#custom-field" id="custom-field"></a>

```bash
# カスタムテキストフィールド
c.text.Department="Engineering"

# カスタム複数行フィールド
c.multiline.Notes="Line 1\nLine 2\nLine 3"

# カスタムシークレットフィールド（マスク）
c.secret.API_Key="secret-api-key-here"

# カスタム日付フィールド
c.date.Expiration="2024-12-31"
```

### 一般フィールドのリファレンス

#### データ形式

```bash
# Unixタイムスタンプ
date=1668639533

# ISO形式
date="2022-11-16T10:58:53Z"

# 単純な日付
date="2022-11-16"
```

#### 電話番号形式

```bash
phone.Work='$JSON:{"region": "US", "number": "(555) 555-1234", "ext": "123", "type": "Work"}'
phone.Mobile='$JSON:{"number": "(555) 555-1234", "type": "Mobile"}'
```

#### 名前の形式

```bash
name='$JSON:{"first": "John", "middle": "Michael", "last": "Doe"}'
name='$JSON:{"first": "Jane", "last": "Smith"}'
```

#### 住所の形式

```bash
address='$JSON:{"street1": "123 Main St", "street2": "Apt 4B", "city": "New York", "state": "NY", "zip": "10001", "country": "US"}'
```

#### 秘密の質問の形式

```
securityQuestion.Mother='$JSON:[{"question": "What is your mother'\''s maiden name?", "answer": "Smith"}]'
securityQuestion.Pet='$JSON:[{"question": "What was your first pet'\''s name?", "answer": "Fluffy"}]'
```

### 自動消滅型レコード (ワンタイム共有) <a href="#self-destructing-records-one-time-shares" id="self-destructing-records-one-time-shares"></a>

`--self-destruct` オプションを使用すると、一度開くと自動的に削除される一時的なレコードを作成できます。この機能は、一度しか閲覧してほしくない機密情報の共有に最適です。

#### 自動消滅の仕組み

* 指定した時間後に**有効期限が切れる一時的な共有URL**を作成します
* レコードは、共有URLが初めて開かれるまで自分のボルト内に残ります
* URLが開かれてから**5分後に自動的に削除**されます
* 有効期限の最長期間は**6か月**です

#### 構文

```bash
--self-destruct <NUMBER>[(m)inutes|(h)ours|(d)ays]
```

#### 時間単位

自己破壊型レコードや一時的な共有リンクの有効期限には、以下の単位を使用できます。

* `m` または `minutes`: 分 (※単位を省略した場合はデフォルトで分扱い)
* `h` または `hours`: 時間
* `d` または `days`: 日数

#### 使用例

一時的パスワードの共有 (1時間後に失効)

```bash
record-add -t "Temporary Server Access" -rt login \
  login=admin \
  password='$GEN:rand,16' \
  url=https://server.company.com \
  --self-destruct 1h \
  --notes "Emergency access for John Doe"
```

一時的Wi-Fiパスワードの共有 (30分後に失効)

```bash
record-add -t "Guest WiFi Access" -rt wifiCredentials \
  text.ssid="Company-Guest" \
  password=TempPass123 \
  --self-destruct 30m \
  --notes "Visitor access for meeting"
```

一時的なファイル共有 (24時間後に失効)

```bash
record-add -t "Confidential Document" -rt file \
  file='@/path/to/sensitive-doc.pdf' \
  --self-destruct 1d \
  --notes "Contract for review - auto-deletes after viewing"
```

緊急連絡先情報の共有 (2時間後に失効)

```bash
record-add -t "Emergency Contact" -rt contact \
  name='$JSON:{"first": "Emergency", "last": "Contact"}' \
  phone.Mobile='$JSON:{"number": "(555) 911-0000", "type": "Emergency"}' \
  --self-destruct 2h
```

#### 戻り値

`--self-destruct`を使用すると、レコードUIDではなく**共有可能なURL**を返します。

```bash
$ record-add -t "Temp Password" -rt login login=user password=pass123 --self-destruct 1h
https://keepersecurity.com/vault/share/AbCdEf123456...
```

***

## 重要な注意事項

### ⚠️ セキュリティに関する注意点

* URLが鍵です ― URLを知っている人は誰でもレコードにアクセスできます
* 認証不要 ― 共有URLはログイン認証をバイパスします
* 一度きりのアクセス ― レコードは最初の表示から5分後に自動削除されます
* 復元不可 ― 一度削除されるとレコードは元に戻せません

### ⚠️ 制限事項

* 有効期限は最大6か月
* 自動削除レコードは更新不可
* プレビュー不可 ― 作成後にレコードを再確認することはできません
* 即時共有 ― URLは作成直後から有効になります

***

## ベストプラクティス

* URLはすぐにコピーしてください ― 後から取得することはできません
* セキュリティ強化のため、短い有効期限 (数分～数時間) を設定しましょう
* レコードの目的や背景を「ノート」に記録しておきましょう
* URLは安全な方法（暗号化メッセージ、対面など）で共有しましょう
* 一時的なアクセスには `$GEN` を使って強力なパスワードを生成しましょう
* URLの有効期限前に受信者が受け取ったことを確認しましょう

## 活用事例

* システム管理者向けの緊急アクセス認証情報
* 外部委託先やコンサルタント用の一時パスワード
* 機密ファイルの一度きりの文書共有
* 来客用ネットワークのWi-Fi情報共有
* チームメンバー間での安全な情報受け渡し
* 自動化システム間での期限付きシークレット共有

***

## ヒントとベストプラクティス

* コピー＆ペーストには1行のコマンドを使用し、行末のスペースによるエラーを防ぎましょう
* シェルによる解釈を避けるため、JSONの値には引用符を使いましょう
* パスワードをハードコードせず、`$GEN` を使用して安全に生成しましょう
* `$`、`!`、`"`、`'` などシェルで解釈されやすい文字を含むパスワードには、`$BASE64:` を使うとエスケープの手間を減らせます
* 複雑なレコードを作成する前に、まずはシンプルなレコードでテストしましょう
* 標準でないデータにはカスタムフィールド (`c.`) を活用しましょう
* `--folder` パラメータでフォルダ整理を行い、レコードを体系化しましょう
* `--notes` を使ってレコードの背景や目的を記録し、管理しやすくしましょう

### トラブルシューティング (よくある問題と対処法)

**「Expected: =, got: ; Missing =」エラー**

* 複数行コマンドのバックスラッシュの後にスペースを入れないようにしてください
* コピー＆ペーストする際は、1行形式を使用してください

**「Field type not supported」 (対応していないフィールドタイプ)**

* 使用可能なフィールドタイプは `record-add --syntax-help` で確認できます
* 標準外のフィールドには`c.`接頭辞付きのカスタムフィールドを使ってください

**JSON解析エラー**

* JSONが正しく引用されていることを確認してください
* JSON内のシングルクォートは `'\''` のようにエスケープしてください
* JSONオブジェクト内ではダブルクォート ( `"` ) を使用してください

**ファイル添付のエラー**

* ファイルパスの前に `@` を付けてください (例: `file=@/path/to/file.txt`)
* ファイルパスが正しくアクセス可能なことを確認してください
* 相対パスではなく絶対パスの使用を推奨します

### `record-add` と `record-update` の違い

`record-add` は新しいレコードを作成するためのコマンドであり、`record-update` は既存のレコードを編集するために使用します。以下は主な違いの比較です。

|          | record-add   | record-update                 |
| -------- | ------------ | ----------------------------- |
| 目的       | 新規レコードの作成    | 既存レコードの編集                     |
| レコード識別子  | 不要           | **必須** (`-r`または`--record`を指定) |
| レコードタイプ  | 必須 (`-rt`)   | 任意 (変更も可能)                    |
| フィールドの動作 | すべてのフィールドを設定 | 指定したフィールドのみ更新                 |
| メモの動作    | 新規に設定        | `+`接頭辞付きで追記、接頭辞なしで上書き         |

### record-updateの構文

```
record-update --record "RECORD_TITLE_OR_UID" [OPTIONS] [FIELDS...]
```

主な引数

* `--record` / `-r`: レコードのタイトルまたは UID (必須)
* `--title` / `-t`: レコードのタイトルを更新
* `--record-type` / `-rt`: レコードタイプを変更
* `--notes` / `-n`: メモを更新 (先頭に`+`を付けると追記、それ以外は上書き)
* `--force` / `-f`: 警告を無視して実行

### 使用例

#### パスワードとURLを更新

```bash
record-update -r "Gmail Account" \
  password='$GEN:rand,20' \
  url=https://accounts.google.com/new-login
```

#### 既存の連絡先に電話番号を追加

```bash
record-update -r "John Smith" \
  phone.Work='$JSON:{"number": "(555) 987-6543", "type": "Work"}'
```

#### メモに追記 (先頭の + に注意)

```bash
record-update -r "Server Credentials" \
  --notes "+Updated password on 2024-01-15"
```

#### タイトルを変更し、カスタムフィールドを追加

```bash
record-update -r "Old Server Name" \
  --title "Production Web Server" \
  c.text.Environment="Production" \
  c.text.Last_Updated="2024-01-15"
```

#### レコードタイプの変更 (構造を変換)

```bash
record-update -r "Simple Login" \
  --record-type contact \
  name='$JSON:{"first": "John", "last": "Doe"}' \
  email=john.doe@example.com
```

#### 各コマンドの用途

`record-add`

* 新しいレコードを作成するとき
* すべてのフィールドを一から指定したいとき
* 初期のレコード構造を設定するとき

`record-update`

* 既存のレコードを編集したいとき
* 既存のレコードに新しいフィールドを追加するとき
* パスワードや認証情報を更新したいとき
* メモに情報を追記したいとき
* レコードタイプを変換したいとき

#### 重要な注意点

* `record-update` は指定したフィールドのみを変更します
* 指定していない既存のフィールドはそのまま保持されます
* `field=` のように値を空にすると、そのフィールドを消去できます
* メモに `+` を付けると追記、付けない場合は上書きになります

### ヘルプ表示

```bash
# 利用可能なすべてのレコードタイプを表示
record-type-info

# 特定のレコードタイプ (例: login) のフィールドを表示
record-type-info --list-record login

# 特定のフィールドタイプ (例: phone) の情報を表示
record-type-info --list-field phone

# record-add コマンドのフィールド構文ヘルプを表示
record-add --syntax-help

# record-update コマンドのヘルプを表示
record-update --help
```


---

# 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-cli/command-reference/record-commands/creating-and-updating-records.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.
