Contents
開発者アカウント作成とサンドボックス環境取得
DocuSign の API を利用開始するには、まず 無料の開発者アカウント と デモ(Sandbox)環境 を用意します。
このセクションでは、アカウント登録からデモエンドポイント取得までの一連の流れを解説し、実装に必要な情報(Integration Key、Secret、エンドポイント URL)を確実に手元に残す方法を示します。
開発者アカウントの登録手順
- 公式開発者ポータル(DocuSign Developer Center)へアクセスし、Free Developer Account をクリック。
- 氏名・会社情報・メールアドレスを入力し、利用規約に同意して送信。
- 受信した認証メールのリンクからアカウントを有効化すると、ダッシュボードに Integration Key(クライアント ID) と Secret が表示されます。
重要:この Integration Key と Secret は サンドボックス専用 です。本番環境では別途 Production 用のキーとシークレットを取得してください。
サンドボックス(デモ)環境の有効化方法
- ダッシュボード左メニューの Environments → Demo を選択。
- 「Create Demo Account」ボタンを押すと、
https://demo.docusign.netが自動的に割り当てられます。 - 同画面で表示される accountId(デモアカウント ID) をメモし、以降の API 呼び出し URL に組み込みます。
まとめ:開発者アカウントとサンドボックスは数分で取得完了です。取得した Integration Key と Secret は安全な場所(環境変数やシークレットマネージャ)に保管し、次章の認証設定へ進みましょう。
OAuth 2.0 認証フローの設定
DocuSign API はすべて OAuth 2.0 によるアクセス制御が必須です。
本節では、ユーザー操作が必要な Authorization Code Grant と、サーバー間で自動的にトークンを取得できる JWT Grant の両方の設定手順と注意点をまとめます。
Authorization Code Grant の実装ステップ
-
リダイレクト URI の登録
ダッシュボードの OAuth → Redirect URIs に、システム側で受け取るコールバック URL(例:https://example.com/docusign/callback)を追加します。 -
認可リクエスト送信(デモ環境)
text
GET https://account-d.docusign.com/oauth/auth?
response_type=code&
scope=signature%20impersonation&
client_id={INTEGRATION_KEY}&
redirect_uri={REDIRECT_URI} -
ユーザーが同意画面で 許可 をクリックすると、
codeパラメータが付与された状態でredirect_uriに戻ります。 -
アクセストークン取得(サーバ側)
bash
curl -X POST https://account-d.docusign.com/oauth/token \
-d "grant_type=authorization_code" \
-d "code={CODE}" \
-d "redirect_uri={REDIRECT_URI}" \
-u "{INTEGRATION_KEY}:{SECRET}" -
返却された
access_tokenを API 呼び出しの Authorization: Bearer {TOKEN} ヘッダーに設定します。
ポイント:
signatureとimpersonationの2スコープが最低要件です。日本語 UI は自動でローカライズされます。
JWT Grant を用いたサーバー間認証(デモ環境)
-
RSA キーペアの作成
ダッシュボードの OAuth → Add RSA Keypair から公開鍵・秘密鍵を生成し、PRIVATE_KEYは安全に保管します。 -
管理者同意取得(Consent)
JWT を利用するには、対象ユーザー(API ユーザー)の代理権限を一度だけ管理者が承認する必要があります。正しい同意 URL は以下です(デモ環境)。
text
https://account-d.docusign.com/oauth/auth?
response_type=code&
scope=signature%20impersonation&
client_id={INTEGRATION_KEY}&
redirect_uri={REDIRECT_URI}
この URL に管理者がアクセスし、許可 をクリックすれば同意が完了します。以降は JWT だけでトークンを取得できます。
- JWT 作成(Node.js の例)
scopeクレームは不要です(公式ドキュメントでは記載されていません)。必要なのはiss,sub,aud,iat,expだけです。
javascript
const jwt = require('jsonwebtoken');
const token = jwt.sign(
{
iss: INTEGRATION_KEY, // クライアント ID
sub: USER_ID, // API ユーザーの GUID
aud: "account-d.docusign.com", // デモ環境の認可サーバ
iat: Math.floor(Date.now() / 1000),
exp: Math.floor(Date.now() / 1000) + 3600 // 有効期限は最大1時間
},
PRIVATE_KEY,
{ algorithm: 'RS256' }
);
-
アクセストークン取得
bash
curl -X POST https://account-d.docusign.com/oauth/token \
-d "grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer" \
-d "assertion=${token}" -
取得したトークンは Authorization ヘッダーで使用し、以降の API 呼び出しに流用します。
まとめ:ユーザー操作が不要なバックエンド処理には JWT が最適です。管理者同意 URL を正しく利用し、
scopeクレームを除外したシンプルな JWT を作成してください。
eSignature API 基本操作とサンプルコード
eSignature は DocuSign の中核機能であり、Envelope(封筒) の作成・送信・ステータス取得が主なフローです。
このセクションでは、デモ環境向けのエンドポイント例と Node.js での実装サンプルを示し、最小構成でも署名依頼が完了する手順を解説します。
Envelope の作成(デモ環境)
|
1 2 3 4 |
POST https://demo.docusign.net/restapi/v2.1/accounts/{accountId}/envelopes Content-Type: application/json Authorization: Bearer {ACCESS_TOKEN} |
JSON ペイロード例(Node.js)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
const envelopeDefinition = { emailSubject: "【重要】契約書のご署名をお願いします", documents: [ { documentBase64: Buffer.from(fs.readFileSync("contract.pdf")).toString('base64'), name: "契約書", fileExtension: "pdf", documentId: "1" } ], recipients: { signers: [ { email: "taro@example.com", name: "山田太郎", recipientId: "1", routingOrder: "1", tabs: { signHereTabs: [{ xPosition: "150", yPosition: "300", documentId: "1", pageNumber: "1" }] } } ] }, status: "sent" }; await axios.post( `https://demo.docusign.net/restapi/v2.1/accounts/${ACCOUNT_ID}/envelopes`, envelopeDefinition, { headers: { Authorization: `Bearer ${ACCESS_TOKEN}` } } ); |
status: "sent" を指定すると、作成直後に署名者へメールが送信されます。
Envelope のステータス取得(デモ環境)
|
1 2 3 |
GET https://demo.docusign.net/restapi/v2.1/accounts/{accountId}/envelopes/{envelopeId} Authorization: Bearer {ACCESS_TOKEN} |
| status | 説明 |
|---|---|
sent |
署名依頼が送信済み |
delivered |
受領(閲覧)された |
completed |
全署名完了、PDF が生成 |
voided |
キャンセルまたは無効化 |
ポイント:ポーリングでステータスを確認する代わりに、後述の Connect Webhook を利用するとリアルタイム通知が可能です。
Click API と Connect Webhook の活用シーンと設定手順
DocuSign は署名だけでなく、クリック同意(Clickwrap) と イベント通知(Connect) も提供します。
ここでは、簡易的な利用規約同意画面の作成方法と、署名・クリック合意が完了した際に自社システムへ即時に情報をプッシュする手順を解説します。
Clickwrap の作成(デモ環境)
-
Clickwrap 定義作成リクエスト
http
POST https://demo.docusign.net/restapi/v2.1/accounts/{accountId}/clickwraps
Content-Type: application/json
Authorization: Bearer {ACCESS_TOKEN} -
リクエストボディ例
json
{
"name": "利用規約同意",
"requireReacceptance": true,
"displaySettings": {
"consentButtonText": "同意する",
"declineButtonText": "同意しない"
},
"documents": [
{
"documentBase64": "...", // PDF/HTML の Base64
"name": "利用規約",
"fileExtension": "pdf",
"order": 1
}
]
}
- ユーザー向け同意 URL
API 応答で取得したclickwrapIdとversionNumberを組み合わせ、以下の URL にリダイレクトさせます。
text
https://demo.docusign.net/click/{accountId}/accept?clickwrap_id={clickwrapId}&version_number={versionNumber}
Connect Webhook の登録と受信ハンドラ(デモ環境)
-
Webhook 設定画面へ
ダッシュボードの Connect → Add Configuration で新規設定を作成します。 -
エンドポイント情報
- URL:
https://example.com/docusign/webhook(TLS 1.2+ 必須) -
認証方式: ヘッダー
X-DocuSign-Signatureに HMAC‑SHA256 で計算したシークレットを付与 -
通知対象イベント
envelopes/completed(署名完了)-
clickwraps/agreements(クリック同意取得) -
テスト送信
「Send Test Notification」ボタンでサンドボックスからサンプルペイロードが届くことを確認します。
Python Flask での受信ハンドラ例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
from flask import Flask, request, abort import hmac, hashlib, json app = Flask(__name__) SECRET = b'YOUR_CONNECT_SECRET' def verify_signature(payload, signature): mac = hmac.new(SECRET, payload, hashlib.sha256) return hmac.compare_digest(mac.hexdigest(), signature) @app.route('/docusign/webhook', methods=['POST']) def webhook(): sig = request.headers.get('X-DocuSign-Signature') if not sig or not verify_signature(request.data, sig): abort(400) data = json.loads(request.data) # 例: 完了した Envelope の ID を DB に保存 envelope_id = data.get('envelopeId') # 必要なビジネスロジックを実装 … return '', 200 |
まとめ:Click API は UI が不要な合意取得に、Connect は署名・クリックの結果を即時取得する手段として有効です。TLS と HMAC による通信保護は必ず設定してください。
日本向け法規制対応と本番移行チェックリスト
DocuSign を日本企業の業務システムに組み込む際は、電子署名法 および 個人情報保護法(APPI) の要件を満たす必要があります。
この章では、法規制上重要なポイントと、サンドボックスから本番環境へ安全に切り替えるためのチェックリストを提示します。
法規制対応の主要ポイント
| 要件 | DocuSign での実装例 |
|---|---|
| 保存期間(電子契約書は原則10年) | 完了 Envelope の PDF を Connect で受信し、社内ストレージに暗号化保存。自動削除ジョブを10年後に実行。 |
| 改ざん防止(タイムスタンプ・ハッシュ) | X-DocuSign-DocumentHash ヘッダーの値と PDF の SHA‑256 ハッシュを DB に記録し、定期的に照合。 |
| 本人確認(メール認証+IP ログ) | 署名者メールアドレスは必須項目とし、Connect ペイロードに含まれる clientUserId とリクエスト元 IP をログ保存。 |
| 個人情報取得同意 | Clickwrap に APPI 用プライバシーポリシーへのチェックボックスを必須化し、同意履歴を永続化。 |
ポイント:DocuSign の UI は日本語ローカライズ済みですので、署名者側の操作は自然に行えますが、内部で取得したメタデータ(ハッシュ・IP など)を適切に保存する設計が不可欠です。
本番環境への移行手順
-
Production 用 Integration Key の作成
ダッシュボードの OAuth → Add Integration Key から本番用キーを生成し、シークレットも別途取得します。サンドボックスのものは使用できません。 -
エンドポイント URL の切替
- デモ環境:
https://account-d.docusign.com(認可) /https://demo.docusign.net(REST) -
本番環境:
https://account.docusign.com(認可) /https://www.docusign.net(REST) -
IP ホワイトリスト登録
本番サーバーの外部 IP アドレスを DocuSign 管理画面 Security Settings → IP Allow List に追加し、不要なアクセスを遮断します。 -
TLS 設定確認
openssl s_client -connect www.docusign.net:443 -tls1_2で TLS 1.2 以上が有効か検証し、推奨暗号スイート(例:ECDHE‑RSA‑AES256‑GCM)を使用できることを確認します。 -
レートリミット測定
本番では 1 時間あたり 1000 リクエストが上限です。バッチ処理はRetry-Afterヘッダーに従い指数バックオフで再送する実装を推奨します。 -
最終総合テスト
以下の項目をすべてパスしたら本番切替完了です。
| チェック項目 | 合格基準 |
|---|---|
| API キー・シークレットが Production 用に置き換わっているか | 環境変数/シークレットマネージャで暗号化保存、コードリポジトリに露出なし |
| Webhook エンドポイントの TLS 証明書有効期限 | 90 日以上更新されていること |
| レートリミットエラー(429)なし | 平均リクエスト数が 1 時間あたり 800 以下 |
| 法規制チェックリスト全項目完了 | 法務部門のサインオフ取得済み |
エラーハンドリング・ベストプラクティス
- 400 Bad Request:入力データのバリデーションは SDK/ライブラリで事前に実施。
- 401 Unauthorized:トークン期限切れ時は自動的に JWT もしくは Authorization Code フローで再取得。
- 429 Too Many Requests:
Retry-Afterヘッダーを読み取り、指数バックオフ(例:1 s → 2 s → 4 s)でリトライ。
推奨するセキュリティ対策
| 項目 | 内容 |
|---|---|
| 機密情報管理 | Integration Key・Secret は環境変数、AWS Secrets Manager、Azure Key Vault 等で保管し、コードベースにハードコーディングしない。 |
| IP 制限 | 社内からのアクセスのみ許可する IP Allow List を設定。 |
| TLS 設定 | TLS 1.2 以上・推奨暗号スイートを使用し、証明書は自動更新(ACME 等)で管理。 |
| 監査ログ | API 呼び出し、Webhook 受信、認可同意取得のすべてを時系列で保存し、定期的にレビュー。 |
まとめ:法規制対応と本番移行は「キー・エンドポイントの切替」「セキュリティ設定」「テスト実施」の三段階で体系化できます。チェックリストに沿って確実に作業を進めれば、安定かつコンプライアンス遵守した DocuSign 連携が実現します。