API (v2) 認証

コマンド 対応状況 備考
AUTH ユーザー名/パスワード認証 - localhost のみ
AUTHKEY セッション検証 - localhost のみ
LOGIN Token/Secret 認証 - リモート専用
WHOAMI セッションからユーザー OID を取得
BYE CCEd から即時切断
ENDKEY セッション終了と無効化

AUTH (localhost のみ)

AUTH は有効なユーザー名とパスワードで実行します。成功すると、以後はパスワードの代わりに AUTHKEY 認証で使える sessionId が返されます。この sessionId は、一定時間の経過や無操作による期限切れ、または ENDKEY の送信まで有効です。

curl -sk \
  -X POST https://127.0.0.1:9092/v2/cce \
  -d '
        {
            "cmd": "AUTH",
            "user": "admin",
            "password": "PASSWORD"
        }
      ' \
  | jq

レスポンス(成功):

{
    "status": 201,
    "message": "GOODBYE",
    "data": {
        "sessionid": "tK46aZ885HA1QxEiti1dlq.....VpQM3cfavn1yxfF8vFEBeoH3"
    }
}

レスポンス(失敗):

{
    "status": 401,
    "message": "GOODBYE",
    "data": {
        "errors": [
            {
                "code": 401,
                "message": "FAIL"
            }
        ]
    }
}

AUTHKEY (localhost のみ)

有効なユーザー名と、まだ期限切れになっていない既存の sessionId を使って認証できます。パスワードは不要です。この方法で開始したセッションも、無操作による期限切れまたは ENDKEY の送信まで有効です。

curl -k -s \
  -X POST https://127.0.0.1:9092/v2/cce \
  -d '
        {
            "cmd": "AUTHKEY",
            "user": "admin",
            "sessionid": "SESSIONID"
        }
      ' \
  | jq

レスポンス(成功):

{
    "status": 201,
    "message": "GOODBYE",
    "data": {
        "sessionid": "tK46aZ885HA1QxEiti1dlq.....VpQM3cfavn1yxfF8vFEBeoH3"
    }
}

レスポンス(失敗):

{
    "status": 401,
    "message": "GOODBYE",
    "data": {
        "errors": [
            {
                "code": 401,
                "message": "FAIL"
            }
        ]
    }
}

LOGIN (remote only):

LOGIN 認証方式は、許可された IP からのリモートアクセスでのみ利用できます。有効な Client-Secret が必要であり、その Client-Secret は API 呼び出し元のホワイトリスト済み IP アドレスに紐付いていなければなりません。LOGIN に成功すると、API に対する 'serverAdministrator' 権限が与えられます。返されるのは Token と、そのトークンの有効期限日時です。以後のリモートトランザクションでは、このトークンを必ず送る必要があります。トークンは期限切れになるか ENDKEY を送信すると無効になります。

curl -sk \
  -X POST https://API_IP:9092/v2/cce \
  -H "Content-Type: application/json" \
  -H "X-Client-Secret: YOUR-CLIENT-SECRET" \
  -d '
        {
            "cmd": "LOGIN"
        }
      ' \
  | jq

レスポンス(成功):

{
    "status": 201,
    "message": "TOKEN ISSUED",
    "data": {
        "expires": "2025-05-17T23:49:24-05:00",
        "token": "IaKCHhrATt7rp8enHNKC5jyuY8AripmELHXXVheAAKj5CfQD30SKAAAowHHLpSVW"
    }
}

レスポンス(失敗):

Unauthorized: invalid client secret

WHOAMI (local usage):

WHOAMI コマンドは、成功するとログイン中ユーザーの CODB Object ID (OID) を返します。失敗時は '-1' を返します。ユーザー名と sessionId の指定が必要です。

curl -k -s \
  -X POST https://127.0.0.1:9092/v2/cce \
  -d '
        {
            "cmd": "WHOAMI",
            "user": "admin",
            "sessionId": "SESSION-ID"
        }
      ' \
  | jq

レスポンス(成功):

{
    "status": 201,
    "message": "GOODBYE",
    "data": {
        "oid": "6"
    }
}

レスポンス(失敗):

{
    "status": 201,
    "message": "GOODBYE",
    "data": {
        "errors": [
            {
                "code": 401,
                "message": "FAIL"
            }
        ],
        "oid": "-1"
    }
}

WHOAMI (remote usage):

リモート利用時の WHOAMI では、Client-Secret に加え、LOGIN 実行時に発行された有効な未期限切れトークンが必要です。成功すると、ログイン中ユーザーの CODB Object ID (OID) を返します。

curl -sk \
  -X POST https://API_IP:9092/v2/cce \
  -H "Content-Type: application/json" \
  -H "X-Client-Secret: CLIENT-SECRET" \
  -d '
        {
            "cmd": "WHOAMI",
            "token": "IaKCHhrATt7rp8enHNKC5jyuY8AripmELHXXVheAAKj5CfQD30SKAAAowHHLpSVW"
        }
      ' \
  | jq

レスポンス(成功):

{
    "status": 201,
    "message": "GOODBYE",
    "data": {
        "oid": "60"
    }
}

レスポンス(失敗):

Invalid or expired token

BYE (local usage):

API との接続を終了しますが、sessionId 自体は引き続き有効のままです。

curl -k -s \
  -X POST https://127.0.0.1:9092/v2/cce \
  -d '
        {
            "cmd": "BYE",
            "user": "admin",
            "sessionId": "P07BbypRtaseyjXxSdhIGliNWIUcEhQi6LJ77WMqW2vibgDRkKpQWwtG4bIwhmE"
        }
      ' \
  | jq

レスポンス(成功):

{
    "status": 201,
    "message": "GOODBYE",
    "data": {
        "DATA": []
    }
}

BYE (remote usage):

API との接続を終了しますが、トークン自体は引き続き有効です。

curl -sk \
  -X POST https://API-IP:9092/v2/cce \
  -H "Content-Type: application/json" \
  -H "X-Client-Secret: CLIENT-SECRET" \
  -d '
        {
            "cmd": "BYE"
        }
      ' \
  | jq

レスポンス(成功):

{
    "status": 202,
    "message": "GOODBYE",
    "data": {
        "DATA": []
    }
}

ENDKEY (local usage):

API との接続を終了し、現在の sessionId を失効させます。

curl -k -s \
  -X POST https://127.0.0.1:9092/v2/cce \
  -d '
        {
            "cmd": "ENDKEY",
            "user": "admin",
            "sessionId": "P07BbypRtaseyjXxSdhIGliNWIUcEhQi6LJ77WMqW2vibgDRkKpQWwtG4bIwhmE"
        }
      ' \
  | jq

レスポンス(成功):

{
    "status": 201,
    "message": "GOODBYE",
    "data": {
        "DATA": []
    }
}

ENDKEY (remote usage):

API との接続を終了し、現在のトークンを失効させます。

curl -sk \
  -X POST https://API_IP:9092/v2/cce \
  -H "Content-Type: application/json" \
  -H "X-Client-Secret: CLIENT-SECRET" \
  -d '
        {
            "cmd": "ENDKEY",
            "token": "TOKEN"
        }
      ' \
  | jq

レスポンス(成功):

{
    "status": 201,
    "message": "GOODBYE",
    "data": {
        "DATA": []
    }
}