Skip to content
言語: 日本語

開発者向けAPI

手順:APIでページを更新する

2026年11月1日更新 約4分で読めます

APIキーから公開済みのバージョンまで:リンクの追加、先頭への移動、デザインの変更、下書きの検証、公開をcurlとjqで行います。

この例では、既存のページをすべてAPIで更新します。リンクを追加し、先頭に移動し、ボタンのスタイルを変更し、下書きを検証して公開します。コマンドはcurlとjqがあれば、どのシェルでも実行できます。

1. APIキーを作成する

  1. ダッシュボードで「コールバック&API」を開きます
  2. 「+ 新しいキーを作成」をクリックします
  3. 「ページ」と「リンク」の両方で「書き込み」を選びます(読み取りも含まれます)
  4. 「キーを作成」をクリックし、キーシークレットをコピーします
  5. 一覧からキーIDをコピーします

両方の値は、スクリプトの中ではなく環境変数に保存してください。

認証情報を設定する
export LH_KEY_ID="6F668EA6598B0692"
export LH_KEY_SECRET="lt_…"
export API="https://dock.at-harbor.com"

2. アクセストークンを取得する

POST /v1/token
LH_TOKEN=$(curl -sS -X POST "$API/v1/token" \
  -H "Content-Type: application/json" \
  -d "{\"key_id\":\"$LH_KEY_ID\",\"key_secret\":\"$LH_KEY_SECRET\"}" \
  | jq -r .token)

トークンの有効期間は15分です。スクリプトがそれより長く動く場合は、途中で新しいトークンを取得してください。

3. ページを探す

GET /v1/pages
curl -sS "$API/v1/pages" -H "Authorization: Bearer $LH_TOKEN" \
  | jq '.items[] | {id, handle, title, status, current_version}'

ページのidを控えておきます。この例では42です。

bash
PAGE_ID=42

4. リンクを追加する

POST /v1/pages/{id}/links
LINK_ID=$(curl -sS -X POST "$API/v1/pages/$PAGE_ID/links" \
  -H "Authorization: Bearer $LH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"Autumn sale","target_url_template":"https://shop.example.com/autumn","enabled":true}' \
  | jq -r .id)
echo "New link: $LINK_ID"

APIはHTTP 201と新しいIDを返します。新しいリンクは一覧の末尾に追加されます。プランのリンクの上限に達している場合は、409 link_limit_reachedが返されます。

5. リンクを先頭に移動する

POST /v1/pages/{id}/links/reorder
curl -sS -X POST "$API/v1/pages/$PAGE_ID/links/reorder" \
  -H "Authorization: Bearer $LH_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"order\":[$LINK_ID]}"

先頭に移動するIDだけを送れば十分です。その他のリンクは、その後ろで順序を保ちます。

6. 下書きでデザインを変更する

theme_configはPATCHで完全に置き換えられます。そのため、まず下書きを読み取り、変更したい値だけを変えて、オブジェクト全体を送り返します。

GETとPATCH /v1/pages/{id}/draft
THEME=$(curl -sS "$API/v1/pages/$PAGE_ID/draft" -H "Authorization: Bearer $LH_TOKEN" \
  | jq -c '(.theme_config // {}) | .button_style = "pill"')

curl -sS -X PATCH "$API/v1/pages/$PAGE_ID/draft" \
  -H "Authorization: Bearer $LH_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"theme_config\":$THEME}"

button_styleにはrounded、pill、squareを指定できます。theme_configのその他のフィールドには、bg_color、text_color、button_color、button_text_color、backgroundなどがあります。

7. 下書きを検証する

GET /v1/pages/{id}/draft/validate
curl -sS "$API/v1/pages/$PAGE_ID/draft/validate" -H "Authorization: Bearer $LH_TOKEN"
# → {"ok":true,"valid":true,"issues":[]}

validがfalseの場合、issuesに問題が一覧表示されます。公開する前に修正してください。そもそも下書きが公開中のバージョンと異なるかどうかは、GET /v1/pages/$PAGE_IDのhas_unpublished_changesフィールドで分かります。falseなら公開は省略できます。

8. 公開する

POST /v1/pages/{id}/publish
curl -sS -X POST "$API/v1/pages/$PAGE_ID/publish" -H "Authorization: Bearer $LH_TOKEN"
# → {"ok":true,"version":8,"checksum":"…"}

これで訪問者には、新しいリンク、順序、デザインを含む新しいバージョンが表示されます。page.publishedのWebhookがある場合は、ここで配信を受け取ります。下書きを公開できない場合、APIは409 draft_not_publishableとdetails.issuesの一覧を返します。

9. 元に戻す

結果が気に入らない場合は、前のバージョンを下書きに戻して、もう一度公開します。

バージョン7を復元する
curl -sS -X POST "$API/v1/pages/$PAGE_ID/versions/7/restore" -H "Authorization: Bearer $LH_TOKEN"
curl -sS -X POST "$API/v1/pages/$PAGE_ID/publish" -H "Authorization: Bearer $LH_TOKEN"

バージョン番号の代わりにcurrentを渡すこともでき、その場合は最後の公開以降の下書きの変更がすべて破棄されます。復元では、デザイン、テンプレート、カスタムCSS、SEO、ブロック、リンクが戻ります。タイトル、ハンドル、公開設定はバージョン管理されません。

よくあるエラー

400 bad_request
Content-Type: application/jsonヘッダーがありません。これがないと、curl -dは別の形式を送信します。
401 invalid_token
トークンが15分で期限切れになりました。新しいトークンを取得してください。
403 insufficient_scope
キーにスコープが足りません(例:リンクの「書き込み」)。
デザインが突然リセットされた
theme_configを1つのフィールドだけで送信し、テーマ全体が置き換えられました。テーマ全体をもう一度送信するか、restore currentで最後の公開以降の下書きの変更をすべて破棄してください。

すべてのコードはAPIのエラー形式とエラーコードで説明し、すべてのエンドポイントは分野別のAPIエンドポイントに一覧があります。

答えが見つかりませんか?

お困りのことをお知らせください。サポートチームが個別にお手伝いします。

サポートに問い合わせる