クイックスタート

通知を送り、承認を求めて、結果を受け取るまでを順に説明します。

1. 送信キーを用意する

アプリでサインインし、チャンネルを作ると送信キーが発行されます。手順はマニュアルをご覧ください。キーは 1 回しか表示しないので、環境変数に入れておきます。

export NODD_KEY="nodd_live_s_..."

2. 通知を送る

curl https://api.nodd.blipdrop.net/v1/messages \
  -H "Authorization: Bearer $NODD_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"notice","title":"デプロイが完了しました"}'

受け付けると 202 を返します。これは受け付けたという意味で、端末への到達は保証しません。

{
  "id": "msg_01JBX7Q2M4N8R5T6V9W0Y1Z2A3",
  "status": "queued",
  "reply_token": "rt_...",
  "sent_at": "2026-11-02T04:12:09Z"
}

3. 承認を求める

kind を approval にすると、承認と却下のボタンが付き、応答に Face ID を求めます。

curl https://api.nodd.blipdrop.net/v1/messages \
  -H "Authorization: Bearer $NODD_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: deploy-482" \
  -d '{
    "kind": "approval",
    "level": "high",
    "title": "本番デプロイの承認",
    "body": "api v2.4.1 を本番へ反映します",
    "fields": [{"label": "環境", "value": "production"}],
    "expires_in": 3600
  }'

4. 結果を受け取る

id で状態を取得します。応答がまだのあいだは Retry-After が付くので、その秒数を空けて取り直します。

curl https://api.nodd.blipdrop.net/v1/messages/msg_01JBX7Q2M4N8R5T6V9W0Y1Z2A3 \
  -H "Authorization: Bearer $NODD_KEY"
{
  "id": "msg_01JBX7Q2M4N8R5T6V9W0Y1Z2A3",
  "kind": "approval",
  "source": "api",
  "sent_at": "2026-11-02T04:12:09Z",
  "expires_at": "2026-11-02T05:12:09Z",
  "action_state": "claimed",
  "approvals_required": 1,
  "response": {
    "option_id": "reject",
    "actor": {"id": "usr_...", "display_name": "佐藤"},
    "assurance": "biometric",
    "responded_at": "2026-11-02T04:13:40Z",
    "note": "ステージングで確認してから",
    "signature": {"alg": "ES256", "key_id": "dev_...", "value": "...", "nonce": "..."}
  },
  "delivery": {"confirmed": 1, "delayed": 0, "unconfirmed": 0, "failed": 0}
}

ポーリングの代わりに callback やイベント API も使えます。処理が終わったら POST /v1/messages/{id}/result で結果を報告すると、カードが完了に変わります。

CLI で同じことをする

CLI は承認を待ち、結果を終了コードで返します。

brew install blipdrop/tap/nodd
nodd login
nodd ask "本番へ反映しますか" && ./deploy.sh

nodd login の QR はアプリで読み取ります。詳しくは CLI をご覧ください。