ניהול הפניות של דפים באמצעות ממשק ה-API Notiondesk

צור, רשום, עדכן ומחק הפניות של Notiondesk לדפי מרכז העזרה דרך ממשק ה-API של REST. ייבוא ​​בכמות גדולה של כתובות URL ישנות לאחר הגירה.

3 דקות קריאה

הפניה מחדש של דף שולחת קוראים שפותחים נתיב ישן במרכז העזרה שלך למאמר או לאוסף. ממשק ה-API Notiondesk מאפשר לך לפרט, ליצור, לעדכן ולמחוק הפניות מחדש של דף, כך שתוכל לייבא מאות כתובות URL ישנות לאחר העברה במקום להוסיף אותן אחת אחת בלוח המחוונים. סימניות, קישורים משותפים ותוצאות מנועי חיפוש ממשיכים לעבוד.

כדי לנהל הפניות מחדש בלוח המחוונים במקום זאת, ראה כיצד לנהל הפניות מחדש של דפים במרכז העזרה שלך .

שִׁיטָה נָתִיב תְחוּם האם
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 יוצר אוטומטית לאחר שינוי slug.

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 של המאמר או האוסף היעד
__נשמר_61__, __נשמר_60__ קטע הכותרת והנתיב של היעד ב-locale
target_statusסטטוס היעד, כגון published או draft
הערה: הפניה שולחת קוראים רק כאשר היעד שלה מתפרסם. הפניה לטיוטה ממתינה עד שתפרסם את היעד.

הרשימה מגיעה לכל היותר ל-10,000 הפניות החדשות ביותר. אם האינטגרציה שלך מוחקת הפניות בזמן שהיא מפרטת אותן, התחל שוב מהעמוד הראשון לאחר מכן: מחיקה מזיזה את הפריטים הבאים, כך שהעמוד הבא יוכל לדלג על אחד. ראה דפדוף ובקשות API לגרסה Notiondesk .

צור הפניה מחדש של דף

כל שדה הוא חובה:

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 עם ההפניה החדשה, באותם שדות כמו ברשימה.

  • הפניה אחרת source_path כבר משתמשת בתשובות 409 conflict_error, וההודעה מציינת את הנתיב.
  • target_id ללא תרגום ב-locale עונה על 404 not_found, וההודעה מציינת את המזהה.

שלח Idempotency-Key עם כל יצירה. ניסיון חוזר עם אותו מפתח וגוף עונה על אותה 201 מבלי ליצור הפניה שנייה. ראה טיפול בשגיאות Notiondesk של API, מגבלות קצב וניסיונות חוזרים .

עדכון הפניה מחדש של דף

שלח רק את השדות לשינוי. כל שדה שאתה משמיט שומר על ערכו הנוכחי.

השדות פועלים לפי כללי היצירה. הנתיב עונה על 200 OK עם ההפניה המעודכנת.

ההפניה חייבת עדיין להפנות אל יעד שקיים ב-locale לאחר השינוי. כדי להפנות הפניה של מאמר אל אוסף, יש לשלוח את type ו-target_id יחד.

מחיקת הפניה מחדש של דף

לא ניתן לבטל את המחיקה, לכן המסלול זקוק לשני אמצעי הגנה:

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. קוראים שפותחים את הנתיב הישן מפסיקים להיות מופנים מחדש. מחיקת אותה הפניה חוזרת עונה על 404 not_found, אלא אם כן תנסה שוב עם אותו Idempotency-Key.

ההיקף פועל רק על מפתח שנוצר על ידי בעל סביבת עבודה או מנהל. עורך יכול למחוק הפניה בלוח המחוונים, אך לא באמצעות מפתח API.admin

ייבוא ​​הפניות לאחר הגירה

עוברים מכלי אחר במרכז העזרה? מפים כל נתיב ישן למאמר החדש שלו, ולאחר מכן צור הפניה אחת בכל שורה. סקריפט זה קורא קובץ CSV עם העמודות source_path,target_id,locale:

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);
}
  • המפתח נגזר מהשורה, כך שהפעלת הסקריפט פעמיים לא יוצרת דבר פעמיים. שורה שתתקן מקבלת מפתח חדש.
  • נתיב שכבר מכיל הפניה יומני conflict_error. עדכן אותו במקום זאת, או השאר אותו.
  • כתיבות מוגבלות ל-20 בקשות לדקה לכל מפתח, כך ש-500 הפניות אורכות כ-25 דקות. הסקריפט ממתין כאשר הוא מוגבל בקצב, ואז מנסה שוב את השורה.
  • השתמש במפתח עם הטווחים read ו-write בלבד.

שגיאות

סטָטוּס כַּאֲשֵׁרcode
400 שדה חסר או ריק, type או locale לא מתקבלים, ערך ארוך מדי, confirm אינו true, או שהגוף מכיל שדה לא ידוע.validation_error
403 המפתח חסר read, write או admin, תלוי בנתיב.insufficient_scope
403 התוכנית שלך אינה כוללת הפניות מחדש של דפים, או שיוצר המפתח אינו יכול לשנות את מרכז העזרה הזה.permission_denied
404 מרכז העזרה או ההפניה אינם קיימים בסביבת העבודה שלך, או שלמטרה אין תרגום ב-localenot_found
409 הפניה נוספת של מרכז העזרה כבר משתמשת ב-source_pathconflict_error

ראה טיפול בשגיאות API Notiondesk, מגבלות קצב וניסיונות חוזרים עבור מעטפת השגיאה והקודים האחרים.

שאלות נפוצות

האם אני צריך ליצור הפניות כשאני משנה קוד?

בדרך כלל לא. Notiondesk יוצר את ההפניה עצמה כשמשנים קוד פתוח שהגדרתם ידנית במאמר או אוסף שפורסם, הפניות אוטומטיות מופעלות במרכז העזרה, והתוכנית שלכם כוללת הפניות של דפים. הפניות אלו מציגות את origin: "system" ברשימה. בכל מקרה אחר, צרו את ההפניה בעצמכם. למדו עוד על קוד פתוח ב כיצד ליצור כתובות URL יפות עבור מאמרים ואוספים .

האם הפניה יכולה להפנות לכתובת URL חיצונית?

לא. הפניה של דף מפנה למאמר או לקובץ של אותו מרכז עזרה.

למה המפתח שלי יכול ליצור הפניות אבל לא למחוק אותן?

מחיקה דורשת את הסקופ admin, יצירה ועדכון אינם דורשים זאת. הוסף admin למפתח, וודא שהיוצר שלו הוא בעל סביבת עבודה או מנהל מערכת.

מה הלאה

מאמרים קשורים

האם הדף הזה היה מועיל?

Still need help? Ask us