Gérez les redirections de pages avec l'API Notiondesk

Créez, listez, mettez à jour et supprimez les redirections de la page du centre d'aide Notiondesk via l'API REST. Importez en masse les anciennes URL après une migration.

7 minutes de lecture

Une redirection de page redirige les lecteurs qui ouvrent une ancienne URL de votre centre d'aide vers un article ou une collection. L'API Notiondesk vous permet de lister, créer, mettre à jour et supprimer des redirections de page. Vous pouvez ainsi importer des centaines d'anciennes URL après une migration au lieu de les ajouter une par une dans le tableau de bord. Les favoris, les liens partagés et les résultats des moteurs de recherche restent fonctionnels.

Pour gérer les redirections dans le tableau de bord, consultez la section « Comment gérer les redirections de page dans votre centre d’aide » .

Méthode Chemin Portée Fait
GET/sites/{site_id}/page-redirectsreadLes listes redirigent, les plus récentes en premier.
POST/sites/{site_id}/page-redirectswriteCrée une redirection
PATCH/sites/{site_id}/page-redirects/{redirect_id}writeMise à jour d'une redirection
DELETE/sites/{site_id}/page-redirects/{redirect_id}adminSupprime une redirection

La création et la mise à jour des redirections nécessitent un plan qui inclut les redirections de pages.

Redirections de la page de liste

Cette liste couvre toutes les langues, de la plus récente à la plus ancienne. Elle inclut les redirections que vous créez et celles que Notiondesk crée automatiquement après un changement de 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
}
Champ Signification
idL'identifiant de redirection, utilisé comme redirect_id
localeLa langue de la cible
typearticle ou category (une collection)
originmanual pour une redirection créée par un utilisateur, system pour une redirection Notiondesk créée lors d'un changement de slug.
source_pathLe chemin qui redirige
target_idLe id de l'article ou de la collection cible
target_title, target_slug Le titre et le segment de chemin de la cible dans locale
target_statusLe statut de la cible, tel que published ou draft
Remarque : Une redirection ne redirige les lecteurs que tant que la page cible est publiée. Une redirection vers un brouillon attend la publication de la page cible.

La liste ne contient que les 10 000 redirections les plus récentes. Si votre intégration supprime des redirections pendant l'affichage, veuillez recommencer à partir de la première page : une suppression décale l'ordre des éléments, la page suivante peut donc en ignorer un. Voir Pagination et requêtes API de version Notiondesk .

Créer une redirection de page

Tous les champs sont obligatoires :

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"}'
Champ Taper Notes
typechaîne article ou category
source_pathchaîne Le chemin de redirection, jusqu'à 512 caractères, par exemple /legacy/getting-started. Aucune autre redirection du centre d'aide ne peut l'utiliser.
target_idchaîne Le id de l'article ou de la collection cible, extrait de la liste des articles ou collections . Jusqu'à 255 caractères.
localechaîne La langue cible. La cible doit avoir une traduction dans cette langue.

La route répond 201 Created avec la nouvelle redirection, dans les mêmes champs que la liste.

  • Une autre redirection source_path utilise déjà les réponses 409 conflict_error, et le message nomme le chemin.
  • Un target_id sans traduction dans locale répond 404 not_found, et le message nomme l'identifiant.

Envoyez une réponse Idempotency-Key à chaque création. Une nouvelle tentative avec la même clé et le même corps renvoie la même réponse 201 sans créer de seconde redirection. Voir Gestion des erreurs d'API, des limites de débit et des nouvelles tentatives Notiondesk .

Mettre à jour une redirection de page

N'indiquez que les champs à modifier. Les champs non renseignés conservent leur valeur actuelle.

Les champs respectent les règles de création. La route répond 200 OK avec la redirection mise à jour.

La redirection doit toujours pointer vers une cible existant dans son locale après la modification. Pour rediriger un article vers une collection, envoyez type et target_id ensemble.

Supprimer une redirection de page

La suppression est irréversible, le chemin d'accès nécessite donc deux protections :

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}'
  • le champ d'application admin;
  • le corps {"confirm": true}, avec le booléen JSON true.

La route renvoie 204 No Content. Les lecteurs qui ouvrent l'ancien chemin ne sont plus redirigés. Supprimer à nouveau la même redirection renvoie une erreur 404 not_found, sauf si vous réessayez avec la même Idempotency-Key.

Cette fonctionnalité est limitée aux clés créées par le propriétaire de l'espace de travail ou un administrateur. Un éditeur peut supprimer une redirection depuis le tableau de bord, mais pas à l'aide d'une clé API.admin

Redirections d'importation après une migration

Vous utilisez un autre outil de centre d'aide ? Associez chaque ancien chemin à son nouvel article, puis créez une redirection par ligne. Ce script lit un fichier CSV contenant les colonnes 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);
}
  • La clé est dérivée de la ligne ; exécuter le script deux fois ne produit donc rien en double. Une ligne corrigée reçoit une nouvelle clé.
  • Un chemin qui possède déjà une redirection est consigné dans conflict_error. Mettez-le à jour ou laissez-le tel quel.
  • Les écritures sont limitées à 20 requêtes par minute et par clé ; 500 redirections prennent donc environ 25 minutes. Le script attend lorsqu'il atteint cette limite, puis réessaie d'accéder à la ligne.
  • Utilisez une clé avec les étendues read et write uniquement.

Erreurs

Statut Quandcode
400 Un champ est manquant ou vide, type ou locale n'est pas accepté, une valeur est trop longue, confirm n'est pas true, ou le corps contient un champ inconnuvalidation_error
403 La clé ne contient pas read, write ou admin, selon l'itinéraire.insufficient_scope
403 Votre forfait n'inclut pas les redirections de pages, ou le créateur de la clé ne peut pas modifier ce centre d'aide.permission_denied
404 Le centre d'aide ou la redirection n'existe pas dans votre espace de travail, ou la cible n'a pas de traduction dans localenot_found
409 Une autre redirection du centre d'aide utilise déjà source_pathconflict_error

Consultez la section « Gérer les erreurs d’API Notiondesk, les limites de débit et les nouvelles tentatives » pour connaître l’enveloppe d’erreur et les autres codes.

Questions fréquentes

Dois-je créer des redirections lorsque je modifie un slug ?

Généralement non. Notiondesk crée automatiquement la redirection lorsque vous modifiez manuellement l'URL d'un article ou d'une collection publié(e), que les redirections automatiques sont activées pour le centre d'aide et que votre abonnement inclut les redirections de pages. Ces redirections affichent origin: "system" dans la liste. Dans tous les autres cas, créez la redirection vous-même. Pour en savoir plus sur les URL, consultez la section « Comment créer des URL conviviales pour les articles et les collections » .

Une redirection peut-elle pointer vers une URL externe ?

Non. Une redirection de page pointe vers un article ou une collection du même centre d'aide.

Pourquoi ma clé peut-elle créer des redirections mais pas les supprimer ?

La suppression nécessite l'autorisation admin, contrairement à la création et à la mise à jour. Ajoutez admin à la clé et vérifiez que son créateur est propriétaire de l'espace de travail ou administrateur.

Et ensuite ?

Articles associés

Cette page a-t-elle été utile ?

Encore besoin d'aide ? Écrivez-nous