/apiv2/webhooks/doc
/apiv2/webhooks/doc API エンドポイントを使用すると、Docwize にプログラムから新しいドキュメントを作成できます。メタデータの登録、ファイルの添付、オプションで workflow の開始に使用できます。
概要
エンドポイント: POST /apiv2/webhooks/doc
/apiv2/webhooks/doc エンドポイントの設計目的:
- システムに新しいドキュメントレコードを登録する。
- ドキュメントファイルを即時アップロード、または後で使用するためのアップロード URL を取得する。
- 作成時にオプションで workflow またはカスタムフィールドを関連付ける。
認証
すべてのリクエストに有効な Bearer トークンが必要です。
Authorization: Bearer <ACCESS_TOKEN>
トークンは発行会社に対して検証され、アクティブで取り消されていない必要があります。
リクエスト形式
メソッド: POST
コンテンツタイプ: multipart/form-data
フォームフィールド
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
payload | JSON 文字列 | ✅ | ドキュメントのすべてのメタデータとオプションが含まれます。 |
file | バイナリ | ❌ | 即時アップロードするオプションのファイル。 |
ペイロード構造
例:
{
"document": {
"DocumentDetails": {
"Description": "Monthly Financial Report",
"Date": "2025-01-31T00:00:00",
"Reference_Number": "INV-2025-001"
},
"FolderIds": ["Finance->Reports->2025"],
"CCs": ["finance-team@example.com"],
"deduplicate": true
},
"file_extension": ".pdf",
"workflow": {
"PortalWorkflowTemplateID": 42,
"Subject": "Approve Financial Report"
},
"user_id": 12
}
主要フィールド
DocumentDetails
以下のようなコアドキュメントプロパティ:
- Description — ドキュメント名またはタイトル。
- Date — ドキュメントに関連付けられた日付。
- Reference_Number — 外部または内部の一意識別子。
FolderIds
Docwize の送信先フォルダパスのリスト(例: Projects->Alpha->Design)。
deduplicate
指定したフォルダ内に同じ説明のドキュメントがすでに存在する場合に、重複したドキュメントの作成を防ぎます。
workflow
(オプション)ドキュメント作成直後に workflow を開始します。
ファイルの取り扱い
ファイルを即時アップロードするか、後で使用するためのアップロードリンクをリクエストするかを選択できます。
オプション 1 — 即時アップロード
リクエストと共にファイルを直接送信します:
curl -X POST https://portal.docwize.com/apiv2/webhooks/doc \
-H "Authorization: Bearer <TOKEN>" \
-F 'payload={"document": {...}}' \
-F 'file=@document.pdf'
レスポンス:
{"document_id": 1201}
オプション 2 — 遅延アップロード
file を省略すると、エンドポイントは事前署名済みアップロード URL を返します:
{
"document_id": 1202,
"upload_url": "https://s3.amazonaws.com/...",
"image_name": "1202_report.pdf"
}
標準の HTTP PUT リクエストを使用してファイルをアップロードできます:
curl -X PUT "<upload_url>" --upload-file ./document.pdf
ファイルのアップロードが完了したら、以下を呼び出します:
POST /doc/upload-complete/{doc_id}/{image_name}
これによりアップロードが完了したことが確認され、ドキュメントが確定されます。
/apiv2/webhooks/doc/upload-complete/{doc_id}/{image_name}
目的: 事前署名済み URL を通じてアップロードした後、ドキュメントを確定します。
リクエスト例
POST /apiv2/webhooks/doc/upload-complete/1202/1202_report.pdf
Authorization: Bearer <TOKEN>
POST /apiv2/webhooks/doc/upload-complete/1202/1202_report.pdf
Authorization: Bearer <TOKEN>
レスポンス
{"status": "success"}
最小限のコード例
Python (requests を使用)
import requests
url = "https://portal.docwize.com/apiv2/webhooks/doc"
headers = {"Authorization": "Bearer YOUR_TOKEN"}
payload = {"document": {"DocumentDetails": {"Description": "Test Doc"}, "FolderIds": ["General"]}, "file_extension": ".pdf"}
files = {"payload": (None, str(payload)), "file": open("document.pdf", "rb")}
r = requests.post(url, headers=headers, files=files)
print(r.text)
C# (HttpClient を使用)
using System.Net.Http;
using System.Net.Http.Headers;
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "YOUR_TOKEN");
var form = new MultipartFormDataContent();
form.Add(new StringContent("{\"document\":{\"DocumentDetails\":{\"Description\":\"Test Doc\"},\"FolderIds\":[\"General\"]}}"), "payload");
form.Add(new ByteArrayContent(System.IO.File.ReadAllBytes("document.pdf")), "file", "document.pdf");
var response = await client.PostAsync("https://portal.docwize.com/apiv2/webhooks/doc", form);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
典型的なレスポンス
| ステータス | 意味 |
|---|---|
200 OK | ドキュメントが正常に作成されました。 |
400 | 無効な入力またはトークンです。 |
401 | 認証情報が不足しているか無効です。 |
500 | 予期しないサーバーエラーです。 |
エラーの例
無効なトークン
{"error": "invalid token"}
重複ドキュメント
{
"document_id": 1189,
"message": "Document already exists, no new document created."
}
フローのまとめ
| 手順 | アクション | エンドポイント |
|---|---|---|
| 1 | ドキュメントとメタデータの作成 | POST /apiv2/webhooks/doc |
| 2 | (遅延の場合)返された URL にファイルをアップロード | PUT <upload_url> |
| 3 | アップロード完了を確認 | POST /apiv2/webhooks/doc/upload-complete/{doc_id}/{image_name} |
ベストプラクティス
- 説明とフォルダ名には必ず UTF-8 対応のテキストを使用してください。
- 追跡のために
Reference_Numberには一貫した識別子を使用してください。 - 重複エントリを避けるために
deduplicateを使用してください。 - 一時的なネットワーク障害に備えてリトライロジックを実装してください。