Ferndesk

Artículos

Actualizar un artículo

Actualiza un artículo. El comportamiento varía según el campo:

  • Metadatos y ubicación (slug, keywords, meta_description, og_image, collection, section, listed, noindex) se aplican inmediatamente.
  • Ediciones de contenido (título, cuerpo mediante content/markdown) se guardan provisionalmente en un borrador abierto propiedad de esta clave — no se publican. La respuesta contiene published: false y un draft_id. Publica por separado con POST /articles/:id/publish.

Los artículos externos gestionados por integraciones no se pueden actualizar. Requiere el alcance content:write.

Alcance requerido: content:write

PATCH /articles/{id}

Actualizar un artículo

curl --request PATCH \
  --url 'https://api.ferndesk.com/v1/articles/{ID}' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "key": "value"
}'
{
  "id": "<string>",
  "title": "<string>",
  "slug": "<string>",
  "contentHtml": "<string>",
  "contentMarkdown": "<string>",
  "contentJson": "<string>",
  "url": "<url>",
  "sectionId": "<string>",
  "collectionId": "<string>",
  "status": "<string>",
  "publishedAt": "<string>",
  "createdAt": "<string>"
}

Artículo actualizado (guardado provisionalmente o aplicado)

Authorizations

  • Authorization string obligatorio header

    Todas las solicitudes requieren un token Bearer en el encabezado Authorization. Las claves de API llevan el prefijo fdsk_ y deben mantenerse en secreto. Puedes generar y gestionar claves desde la página Configuración de desarrolladores.

    Las claves pueden restringirse a cualquier subconjunto de estos alcances (cada endpoint indica el alcance que requiere mediante x-required-scopes):

    • content:read: Leer y buscar artículos, colecciones, secciones y traducciones del centro de ayuda
    • content:write: Crear y editar borradores de artículos, usuarios y tareas; mover artículos y colecciones
    • content:publish: Publicar, despublicar, restaurar y enviar contenido a la papelera (hacer que los cambios sean visibles)
    • analytics:read: Leer informes, análisis y comentarios sobre artículos del centro de ayuda
    • conversations:read: Leer conversaciones y transcripciones del asistente de IA
    • webhooks:manage: Crear y gestionar suscripciones a webhooks salientes

    Conceder content:write o content:publish implica content:read. Las claves creadas antes de la definición de alcances tienen alcances nulos = acceso total (modo heredado).

Path Parameters

  • id string obligatorio

    ID del recurso de la entidad solicitada. Ejemplo: art_01JXY9AZK4KV

Request Body

application/json
  • title string

    Título actualizado del artículo. Edición de contenido: se guarda provisionalmente en un borrador abierto, no se publica.

  • content any

    Cuerpo actualizado del artículo (JSON de Tiptap). Edición de contenido: se guarda provisionalmente en un borrador abierto, no se publica. Es mutuamente excluyente con markdown.

  • markdown string

    Cuerpo actualizado del artículo en Markdown. Edición de contenido: se guarda provisionalmente en un borrador abierto, no se publica. Es mutuamente excluyente con content.

  • collectionId string | null

    Asignación de colección actualizada (ubicación, se aplica inmediatamente).

  • sectionId string

    Asignación de sección actualizada (ubicación, se aplica inmediatamente).

  • keywords string

    Palabras clave SEO actualizadas.

  • metaDescription string

    Meta descripción SEO actualizada.

  • ogImage string

    URL de la imagen de Open Graph actualizada.

  • listed string enum enum

    Visibilidad del listado: everywhere (predeterminado), unlisted (accesible solo mediante enlace), hidden o assistant_only. Allowed values: everywhere, unlisted, hidden, assistant_only.

  • noindex boolean

    Indica si los motores de búsqueda deben omitir este artículo.

  • slug string

    Slug personalizado actualizado. Si cambia respecto al slug existente, se activa el modo de slug personalizado.

Response

application/json
  • id string

    ID del artículo de Ferndesk (art_...).

  • title string

    Título principal del artículo.

  • slug string | null

    Slug de URL del artículo.

  • contentHtml string

    Contenido del artículo representado como HTML. Presente cuando format=html (predeterminado).

  • contentMarkdown string

    Contenido del artículo representado como Markdown. Presente cuando format=markdown.

  • contentJson any | null

    Documento ProseMirror/Tiptap sin procesar almacenado. Presente cuando format=json. Utiliza el esquema ProseMirror de Ferndesk (nodos personalizados como callout, steps, cards) y es la representación sin pérdida.

  • url string (uri) | null

    URL pública canónica de este artículo.

  • sectionId string | null

    ID de la sección que contiene el artículo.

  • collectionId string | null

    ID opcional de agrupación de la colección del artículo.

  • status string | null

    Estado de publicación del artículo.

  • publishedAt string | null

    Marca de tiempo de publicación del artículo.

  • createdAt string

    Marca de tiempo ISO 8601 en UTC.

  • updatedAt string

    Marca de tiempo ISO 8601 en UTC.

  • published boolean

    Indica si el cambio está activo. Las ediciones de contenido se guardan provisionalmente en un borrador abierto (published: false); los cambios de metadatos y ubicación se aplican inmediatamente.

  • draft_id string | null

    El borrador abierto que contiene las ediciones de contenido guardadas provisionalmente, si existe.

  • message string

    Nota legible sobre los cambios guardados provisionalmente frente a los aplicados.