Wiki.js s’appuie sur une API GraphQL plutôt qu’une interface REST traditionnelle. Ce choix permet une grande flexibilité en permettant de requêter précisément les données souhaitées. Pour un administrateur système, c’est l’outil idéal pour automatiser les tâches répétitives ou synchroniser du contenu.
Pour interagir avec l’API, vous devez disposer d’un jeton d’accès (Token) :
read:pages, write:pages) selon vos besoins.https://wiki.exemple.com/graphql.L’utilisation de la bibliothèque requests est la méthode la plus simple pour envoyer des requêtes GraphQL.
import requests
# Remplacez par vos informations réelles
WIKI_URL = "https://wiki.exemple.com/graphql"
WIKI_TOKEN = "votre_token_secret_ici"
def query_graphql(query, variables=None):
headers = {"Authorization": f"Bearer {WIKI_TOKEN}"}
response = requests.post(WIKI_URL, json={'query': query, 'variables': variables}, headers=headers)
return response.json()
Utile pour obtenir les ID nécessaires à d’autres manipulations.
query = "{ pages { list { id path title } } }"
resultat = query_graphql(query)
Voici comment récupérer le Markdown brut d’une page via son identifiant unique.
query = """
query($id: Int!) {
pages {
single(id: $id) {
content
title
description
}
}
}
"""
# Remplacez l'ID par celui de votre page
resultat = query_graphql(query, {"id": 123})
En GraphQL, les actions d’écriture sont appelées des mutations.
mutation = """
mutation($id: Int!, $content: String!, $title: String!) {
pages {
update(id: $id, content: $content, title: $title) {
responseResult { succeeded, message }
}
}
}
"""
variables = {
"id": 123,
"content": "Mon nouveau contenu mis à jour via script.",
"title": "Titre mis à jour"
}
resultat = query_graphql(mutation, variables)