/licenses/activate /licenses/deactivate

概要

この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/validateis_activated が最終判定フラグ