概要
この2つのエンドポイントは ドメインの紐付け(アクティベーション)管理 を行います。
/licenses/activate
→ 新しいサイト(ドメイン)にライセンスを 登録 する
/licenses/deactivate
→ 既存のサイト(ドメイン)の紐付けを 解除 する
配布プラグイン側では、次のようなケースで使用されます:
- 初回インストール時 →
activate
- サイト移行 / URL 変更時 →
deactivate → 再度 activate
共通事項
API エンドポイント(POST)
/wp-json/appcotton/v1/licenses/activate
/wp-json/appcotton/v1/licenses/deactivate
認証
- 基本は ライセンスキー + product_slug + domain で認証。
- WordPress ログイン、APIキーは不要。
レスポンスは /licenses/validate と同じ形式
/licenses/activate
リクエストパラメータ
| パラメータ | 必須 | 説明 |
|---|
license_key | ✅ | 認証対象 |
product_slug | ✅ | 紐付け対象プロダクト |
domain | ✅ | アクティベーションしたいサイト |
site_url | | 任意のURL表示用 |
instance_id | | 複数クライアント識別用(PC/サーバなど) |
動作ロジック
if ライセンス無効 → error: license_invalid
if プロダクト不一致 → error: product_mismatch
if 上限到達 (usage.used >= usage.limit) → error: activation_limit_reached
if domain が既に active → そのまま success(冪等性)
else → wp_appcotton_license_activations に追加・保存 → success
成功レスポンス例
{
"valid": true,
"message": "Activation successful.",
"is_activated": true,
"usage": {
"used": 1,
"limit": 3,
"remaining": 2
}
}
代表的なエラー
| エラー | 説明 | 解決策 |
|---|
activation_limit_reached | 利用可能サイト数を超えた | 既存ドメインを deactivate |
license_invalid | キー誤り / 期限切れ | ライセンス更新が必要 |
product_mismatch | 付与されたプロダクトが異なる | 対象プロダクトのキーか確認 |
/licenses/deactivate
リクエストパラメータ
| パラメータ | 必須 | 説明 |
|---|
license_key | ✅ | 認証対象 |
product_slug | ✅ | 紐付け対象のプロダクト |
domain | ✅ | 解除したいドメイン |
instance_id | | 任意。指定された場合はそれをキーに解除 |
動作ロジック
if 該当 domain が active でない → success(冪等性)
else → status を deactivated に更新 + deactivated_at を記録 → success
成功レスポンス例
{
"valid": true,
"message": "Deactivation successful.",
"is_activated": false,
"usage": {
"used": 0,
"limit": 3,
"remaining": 3
}
}
使用例
JavaScript(配布プラグイン UI 内)
await fetch('/wp-json/appcotton/v1/licenses/activate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
license_key: license,
product_slug: 'combpass_premium',
domain: window.location.origin,
})
});
await fetch('/wp-json/appcotton/v1/licenses/deactivate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
license_key: license,
product_slug: 'combpass_premium',
domain: window.location.origin,
})
});
推奨 UI フロー(人が操作する画面)
[ライセンス入力] → Validate
↓ valid & not activated
[このサイトでライセンスを有効化する] → Activate
↓
[成功] → Premium 機能開放
[現在の利用状況一覧]
example.com (解除)
foo.bar (解除)
[解除] → Deactivate → 成功 → 残り利用数 +1
簡易まとめ
| 目的 | エンドポイント | 特徴 |
|---|
| このサイトを有効化 | /licenses/activate | 利用数 +1(上限管理あり) |
| このサイトを解除 | /licenses/deactivate | 利用数 -1(ただし冪等性) |
| 有効か判定 | /licenses/validate | is_activated が最終判定フラグ |