Notiondesk API を使用してページのリダイレクトを管理します。

REST API を介して、ヘルプセンターページのリダイレクトを作成、一覧表示、更新、削除します。移行後に古い URL を一括インポートします。

3 分で読めます

ページリダイレクトは、ヘルプセンターで古いパスを開いたユーザーを記事またはコレクションに誘導します。Notiondesk APIを使用すると、ページリダイレクトの一覧表示、作成、更新、削除ができるため、移行後に数百もの古いURLをダッシュ​​ボードに1つずつ追加する代わりにインポートできます。ブックマーク、共有リンク、検索エンジンの結果は引き続き機能します。

ダッシュボードでリダイレクトを管理するには、 ヘルプセンターの「ページリダイレクトの管理方法」を参照してください。

方法パス範囲する
GET/sites/{site_id}/page-redirectsreadリストのリダイレクト、新しい順
POST/sites/{site_id}/page-redirectswriteリダイレクトを作成します
PATCH/sites/{site_id}/page-redirects/{redirect_id}writeリダイレクトを更新します
DELETE/sites/{site_id}/page-redirects/{redirect_id}adminリダイレクトを削除します

リダイレクトの作成と更新には、ページリダイレクトを含む計画が必要です。

一覧ページのリダイレクト

このリストにはすべての言語が網羅されており、新しい順に掲載されています。ユーザーが作成したリダイレクトと、スラッグ変更後にNotiondeskが自動的に作成するリダイレクトの両方が含まれています。

curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/page-redirects?page_size=100" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16"
{
  "object": "list",
  "data": [
    {
      "id": "3f1c2a9e-8b7d-4c6e-9a5f-1e2d3c4b5a69",
      "locale": "en",
      "type": "article",
      "origin": "manual",
      "source_path": "/legacy/getting-started",
      "target_id": "1761580412",
      "target_title": "Getting started",
      "target_slug": "getting-started",
      "target_status": "published"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
分野意味
idリダイレクト識別子はredirect_idとして使用されます。
locale対象言語
typearticle または category (コレクション)
originmanual は誰かが作成したリダイレクト用、system はスラッグが変更されたときに作成された Notiondesk 用です。
source_pathリダイレクトするパス
target_id対象のアイテムまたはコレクションのid
target_title、target_slug locale 内のターゲットのタイトルとパスセグメント
target_status対象のステータス(例:published または draft)
注:リダイレクトは、リダイレクト先が公開されている間のみ読者を誘導します。下書きへのリダイレクトは、リダイレクト先が公開されるまで待機します。

リストには最大で最新のリダイレクト 10,000 件が表示されます。統合処理でリダイレクトが削除された場合は、その後最初のページからやり直してください。削除によって後続の項目がずれるため、次のページで 1 件をスキップできます。ページネーションとバージョン Notiondesk API リクエストを参照してください。

ページのリダイレクトを作成する

すべての項目が必須です。

curl -X POST "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/page-redirects" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 6f0d6b1e-create-getting-started" \
  -d '{"type": "article", "source_path": "/legacy/getting-started", "target_id": "1761580412", "locale": "en"}'
分野タイプ注記
type弦article または category
source_path弦リダイレクト先のパスは最大512文字です(例:/legacy/getting-started)。ヘルプセンターの他のリダイレクトではこのパスを使用しないでください。
target_id弦対象の記事またはコレクションのid (記事またはコレクション一覧から選択)。最大255文字。
locale弦対象言語。対象言語には翻訳が存在する必要があります。

ルートは、リストと同じフィールドで新しいリダイレクトを使用して 201 Created に応答します。

  • 別のリダイレクトでは既に 409 conflict_error という応答が使用されており、メッセージにはパス名が記載されています。
  • locale に翻訳がない target_id は 404 not_found に応答し、メッセージには ID が示されます。

作成ごとに Idempotency-Key を送信します。同じキーと本文で再試行すると、2 回目のリダイレクトを作成することなく、同じ 201 が返されます。 Notiondesk API エラー、レート制限、および再試行の処理を参照してください。

ページのリダイレクトを更新する

変更するフィールドのみを送信してください。送信しなかったフィールドは、現在の値を保持します。

フィールドは作成ルールに従います。ルートは更新されたリダイレクトで200 OKに応答します。

変更後も、リダイレクト先はlocaleに存在するターゲットを指している必要があります。記事のリダイレクト先をコレクションに指定するには、typeとtarget_idを一緒に送信します。

ページのリダイレクトを削除する

削除は取り消せないため、このルートには2つの安全対策が必要です。

curl -X PATCH "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/page-redirects/3f1c2a9e-8b7d-4c6e-9a5f-1e2d3c4b5a69" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16" \
  -H "Content-Type: application/json" \
  -d '{"source_path": "/legacy/start"}'
curl -i -X DELETE "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/page-redirects/3f1c2a9e-8b7d-4c6e-9a5f-1e2d3c4b5a69" \
  -H "Authorization: Bearer $NOTIONDESK_API_KEY" \
  -H "nd-version: 2026-10-16" \
  -H "Content-Type: application/json" \
  -d '{"confirm": true}'
  • admin スコープ。
  • 本体{"confirm": true}、JSONブール値trueを含む。

ルートは204 No Contentを返します。古いパスを開いた読者はリダイレクトされなくなります。同じリダイレクトを再度削除すると、同じIdempotency-Keyで再試行しない限り、404 not_foundが返されます。

このスコープは、ワークスペースの所有者または管理者によって作成されたキーでのみ機能します。エディターはダッシュボードでリダイレクトを削除できますが、APIキーを使用して削除することはできません。admin

移行後にインポートのリダイレクトが発生する

別のヘルプセンターツールから移行する場合、各古いパスを新しい記事にマッピングし、行ごとにリダイレクトを作成します。このスクリプトは、列 source_path,target_id,locale を含む CSV ファイルを読み取ります。

import { readFileSync } from "node:fs";
import { createHash } from "node:crypto";

const siteId = "c74781f6-1aea-4e17-ab23-bbb8b4d174b6";
const rows = readFileSync("redirects.csv", "utf8").trim().split(/\r?\n/).slice(1);

for (const row of rows) {
  const [source_path, target_id, locale] = row.split(",");
  const idempotencyKey = createHash("sha256").update(`${source_path}|${target_id}|${locale}`).digest("hex");

  const response = await fetch(`https://api.notiondesk.so/sites/${siteId}/page-redirects`, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.NOTIONDESK_API_KEY}`,
      "nd-version": "2026-10-16",
      "Content-Type": "application/json",
      "Idempotency-Key": idempotencyKey,
    },
    body: JSON.stringify({ type: "article", source_path, target_id, locale }),
  });

  if (response.status === 429) {
    const seconds = Number(response.headers.get("Retry-After")) || 5;
    console.log(`Rate limited, waiting ${seconds}s`);
    await new Promise((resolve) => setTimeout(resolve, seconds * 1000));
    rows.push(row);
    continue;
  }

  const result = await response.json();
  console.log(response.status, source_path, response.ok ? result.id : result.code);
}
  • キーは行から生成されるため、スクリプトを2回実行しても何も重複して生成されません。修正した行には新しいキーが割り当てられます。
  • 既にリダイレクトが設定されているパスには、conflict_error というログが出力されます。代わりに更新するか、そのままにしておいてください。
  • 書き込みはキーごとに1分あたり20リクエストに制限されているため、500件のリダイレクトには約25分かかります。スクリプトはレート制限に達すると待機し、その後、該当行への書き込みを再試行します。
  • read および write スコープでのみキーを使用してください。

エラー

状態いつcode
400フィールドが欠落しているか空です。type または locale は受け入れられません。値が長すぎます。confirm は true ではありません。または、本文に不明なフィールドがあります。validation_error
403ルートによっては、キーにread、write、またはadminが欠落している。insufficient_scope
403ご利用のプランにはページリダイレクトが含まれていません。または、キーの作成者はこのヘルプセンターを変更できません。permission_denied
404ヘルプセンターまたはリダイレクト先がワークスペースに存在しないか、ターゲットにlocaleの翻訳がありません。not_found
409ヘルプセンターの別のリダイレクトでは既にsource_pathが使用されています。conflict_error

エラーエンベロープおよびその他のコードについては、 「Notiondesk API エラー、レート制限、および再試行の処理」を参照してください。

よくある質問

スラッグを変更した場合、リダイレクトを作成する必要がありますか?

通常はそうではありません。公開済みの記事やコレクションで手動で設定したスラッグを変更した場合、ヘルプセンターで自動リダイレクトが有効になっている場合、およびプランにページリダイレクトが含まれている場合は、Notiondesk が自動的にリダイレクトを作成します。これらのリダイレクトはリストに origin: "system" と表示されます。それ以外の場合は、リダイレクトを自分で作成してください。スラッグの詳細については、「記事とコレクションのきれいな URL を作成する方法」を参照してください。

リダイレクト先を外部URLにすることは可能ですか?

いいえ。ページリダイレクトは、同じヘルプセンター内の記事または関連コンテンツへのリンクです。

なぜ私のキーはリダイレクトを作成できるのに、削除できないのでしょうか?

削除には admin スコープが必要ですが、作成と更新には必要ありません。キーに admin を追加し、作成者がワークスペースの所有者または管理者であることを確認してください。

次は?

関連する記事

このページは役に立ちましたか?

Still need help? Ask us