Um redirecionamento de página envia os leitores que acessam um caminho antigo na sua central de ajuda para um artigo ou uma coleção. A API Notiondesk permite listar, criar, atualizar e excluir redirecionamentos de página, possibilitando a importação de centenas de URLs antigas após uma migração, em vez de adicioná-las uma a uma no painel de controle. Os favoritos, links compartilhados e resultados de mecanismos de busca continuam funcionando.
Para gerenciar redirecionamentos no painel de controle, consulte Como gerenciar redirecionamentos de página na sua central de ajuda .
| Método | Caminho | Escopo | Faz |
|---|---|---|---|
GET | /sites/{site_id}/page-redirects | read | Redirecionamentos de listas, do mais recente para o mais antigo |
POST | /sites/{site_id}/page-redirects | write | Cria um redirecionamento |
PATCH | /sites/{site_id}/page-redirects/{redirect_id} | write | Atualiza um redirecionamento |
DELETE | /sites/{site_id}/page-redirects/{redirect_id} | admin | Exclui um redirecionamento. |
Criar e atualizar redirecionamentos exige um plano que inclua redirecionamentos de página.
Redirecionamentos da página de lista
A lista abrange todos os idiomas, do mais recente para o mais antigo. Ela inclui os redirecionamentos que você cria e aqueles que o Notiondesk cria automaticamente após uma alteração 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
}| Campo | Significado |
|---|---|
id | O identificador de redirecionamento, usado como redirect_id |
locale | O idioma do alvo |
type | article ou category (uma coleção) |
origin | manual para um redirecionamento criado por alguém, system para um Notiondesk criado quando um slug foi alterado. |
source_path | O caminho que redireciona |
target_id | Os id do artigo ou coleção alvo |
| __PRESERVADO_61__, __PRESERVADO_60__ | O título e o segmento de caminho do alvo em locale |
target_status | O status do alvo, como published ou draft |
A lista atinge, no máximo, os 10.000 redirecionamentos mais recentes. Se a sua integração excluir redirecionamentos enquanto os lista, recomece a partir da primeira página em seguida: uma exclusão desloca os itens seguintes, permitindo que a próxima página pule um. Consulte Paginate e solicitações de API de versão Notiondesk .
Criar um redirecionamento de página
Todos os campos são obrigatórios:
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"}'| Campo | Tipo | Notas |
|---|---|---|
type | corda | __PRESERVADO_54__ ou __PRESERVADO_53__ |
source_path | corda | O caminho para redirecionamento, com até 512 caracteres, por exemplo, /legacy/getting-started. Nenhum outro redirecionamento da central de ajuda pode utilizá-lo. |
target_id | corda | Os id do artigo ou coleção alvo, da lista de artigos ou coleções . Até 255 caracteres. |
locale | corda | O idioma de destino. O idioma de destino deve ter uma tradução. |
A rota responde 201 Created com o novo redirecionamento, nos mesmos campos da lista.
- Um redirecionamento
source_pathjá usa respostas 409conflict_error, e a mensagem nomeia o caminho.
- Um
target_idsem tradução emlocaleresponde 404not_found, e a mensagem nomeia o id.
Envie um Idempotency-Key com cada criação. Uma nova tentativa com a mesma chave e corpo retorna o mesmo 201 sem criar um segundo redirecionamento. Consulte Lidar com erros de API Notiondesk, limites de taxa e novas tentativas .
Atualizar redirecionamento de página
Envie apenas os campos que devem ser alterados. Todos os campos que você omitir manterão seus valores atuais.
Os campos seguem as regras de criação. A rota responde com 200 OK com o redirecionamento atualizado.
O redirecionamento ainda deve apontar para um destino que exista em seu locale após a alteração. Para direcionar um redirecionamento de artigo para uma coleção, envie type e target_id juntos.
Excluir redirecionamento de página
A exclusão é irreversível, portanto a rota precisa de duas salvaguardas:
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}'- o escopo
admin;
- o corpo
{"confirm": true}, com o booleano JSONtrue.
A rota responde com 204 No Content. Os leitores que abrirem o caminho antigo param de ser redirecionados. Excluir o mesmo redirecionamento novamente retorna 404 not_found, a menos que você tente novamente com o mesmo Idempotency-Key.
adminRedirecionamentos de importação após uma migração
Migrando de outra ferramenta de central de ajuda? Mapeie cada caminho antigo para o seu novo artigo e, em seguida, crie um redirecionamento por linha. Este script lê um arquivo CSV com as colunas 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);
}- A chave é derivada da linha, portanto, executar o script duas vezes não cria nada duas vezes. Uma linha que você corrige recebe uma nova chave.
- Um caminho que já possui um redirecionamento registra
conflict_error. Atualize-o ou deixe-o como está.
- As gravações são limitadas a 20 solicitações por minuto por chave, portanto, 500 redirecionamentos levam cerca de 25 minutos. O script aguarda quando atinge o limite de taxa e, em seguida, tenta novamente a linha.
- Use uma chave somente com os escopos
readewrite.
Erros
| Status | Quando | code |
|---|---|---|
| 400 | Um campo está ausente ou vazio, type ou locale não são aceitos, um valor é muito longo, confirm não é true, ou o corpo da requisição contém um campo desconhecido. | validation_error |
| 403 | A chave não possui read, write ou admin, dependendo da rota. | insufficient_scope |
| 403 | Seu plano não inclui redirecionamentos de página, ou o criador da chave não pode alterar esta central de ajuda. | permission_denied |
| 404 | A central de ajuda ou o redirecionamento não existem no seu espaço de trabalho, ou o destino não tem tradução em locale | not_found |
| 409 | Outro redirecionamento da central de ajuda já utiliza source_path | conflict_error |
Consulte a seção sobre erros da API Handle Notiondesk, limites de taxa e novas tentativas para obter informações sobre o envelope do erro e os demais códigos.
Perguntas frequentes
Preciso criar redirecionamentos quando altero um slug?
Geralmente não. O Notiondesk cria o redirecionamento automaticamente quando você altera um slug definido manualmente em um artigo ou coleção publicada, os redirecionamentos automáticos estão ativados para a central de ajuda e seu plano inclui redirecionamentos de página. Esses redirecionamentos são exibidos como origin: "system" na lista. Em qualquer outro caso, crie o redirecionamento manualmente. Saiba mais sobre slugs em Como criar URLs amigáveis para artigos e coleções .
Um redirecionamento pode apontar para um URL externo?
Não. Um redirecionamento de página aponta para um artigo ou uma coleção da mesma central de ajuda.
Por que minha chave consegue criar redirecionamentos, mas não consegue excluí-los?
A exclusão requer o escopo admin, o que não ocorre com a criação e a atualização. Adicione admin à chave e verifique se o criador é o proprietário do espaço de trabalho ou um administrador.