エンドツーエンド
3つの curl コールで行う完全な統合。
BASE_URL="https://api.morphic.com/v1/partner" # a mor_test_ key uses https://api.morphic.today/v1/partner
# 1. what this workflow needs
curl -s "$BASE_URL/workflows/$WORKFLOW_ID/inputs" \
-H "Authorization: Bearer $MORPHIC_API_KEY"
# 2. start the run
curl -s -X POST "$BASE_URL/workflow-runs" \
-H "Authorization: Bearer $MORPHIC_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"org_id": "'"$ORG_ID"'",
"project_id": "'"$PROJECT_ID"'",
"workflow_id": "'"$WORKFLOW_ID"'",
"idempotency_key": "story-48213-v2",
"inputs": {
"story_document": "https://cdn.example.com/stories/48213.pdf",
"tone": "thriller"
}
}'
# 3. follow it to a terminal status
curl -s "$BASE_URL/workflow-runs/$RUN_ID?wait=45" \
-H "Authorization: Bearer $MORPHIC_API_KEY"本番向けの統合では
- 作業単位ごとに1つの
idempotency_keyを自分のレコードとともに保存し、タイムアウト後の再試行で2回目の実行が開始されないようにします。 - 何をするよりも先に、そのレコードに実行IDを保持します — それは、すでに課金対象となっている作業を参照する唯一の手がかりです。
- Webhook を使い、まだ通知を受け取っていない実行のフォールバックとしてポーリングを残します。
- アセットは到着時に自分のストレージへダウンロードします。
urlには有効期限があるためです。 - すべてのレスポンスの
x-morphic-trace-idをログに記録します。