Comment créer une nouvelle page dans Confluence en utilisant leur API REST?

j'ai besoin d'un exemple de travail pour créer une nouvelle page wiki dans confluence en utilisant l'api rest. Je préfère que la nouvelle page soit créée sous espace spécifique et page spécifique. J'ai lu la documentation de leur api et j'ai regardé quelques exemples qu'ils avaient et qui leur manquaient encore.

voici un exemple qu'ils avaient sur leur site""

curl -u admin:admin -X POST -H 'Content-Type: application/json' -d'{"type":"page","title":"new page","space":{"key":"TST"},"body":{"storage":{"value":"<p>This is a new page</p>","representation":"storage"}}}' http://localhost:8080/confluence/rest/api/content/ | python -mjson.tool

j'ai essayé ci-dessus avec mon nom d'espace, nouveau titre et changé l'url en mysite / rest / api / content et le contenu retourné était essentiellement page html disant que la page n'existe pas ou que la page existe mais que vous n'avez pas la permission. J'ai confirmé que j'ai accès au wiki confluence et que je peux créer un nouveau wiki en utilisant mes justificatifs d'identité.

ce qui n'est pas clair non plus est dans l'exemple ci-dessus Comment appelle-t-il l'api spécifique qui crée la page? Il ne fait pas de sens.

question similaire a été posée sur leur forum, mais aucune réponse raisonnable https://answers.atlassian.com/questions/149561/simple-confluence-rest-api-usage-what-am-i-missing

(je suppose que mon objectif final est de pouvoir créer automatiquement une nouvelle page wiki sur confluence) je suis d'accord pour abandonner L'API confluence REST à une autre solution si nécessaire.

24
demandé sur Mike Pennington 2014-05-07 20:49:57

2 réponses

je soupçonne que vous n'utilisez pas une nouvelle version de Confluence. L'API REST pour créer une nouvelle page a été introduite dans Confluence 5.5 (sortie il y a 8 jours). La documentation de L'API est suivie en versions, et vous devez toujours utiliser la version correspondant à votre version de Confluence. Les 5.5 API docs comprennent l'API de création de page dont vous avez besoin , mais pas les versions plus anciennes. Vous pouvez modifier la version dans L'URL ci-dessus pour obtenir la version de L'API correspondant à votre Confluence la libération.

Confluence 5.4 and prior utilise également un préfixe racine différent pour L'API REST (/rest/ prototype/1 /content) ce qui est une raison possible pour obtenir une page non trouvée erreur.

l'exemple sur le site Atlassien est également déroutant car il inclut un" /confluence " supplémentaire dans L'URL, dont vous n'auriez besoin que si Confluence étaient configurés avec un chemin de contexte. Cela pourrait également entraîner une page introuvable erreur si vous utilisiez Confluence 5.5+ (bien que votre post suggère que vous avez déjà corrigé pour cela).

de plus, vous devez dire à Confluence que vous utilisez la méthode d'authentification de base par en ajoutant un paramètre spécial de requête os_authType .

l'exemple suivant fonctionne pour moi sur Confluence 5.5 (n'oubliez pas de changer le port et la touche espace selon le cas).

pour la sécurité, j'ai également ajouté le type de contenu approprié à l'en-tête Accept , bien que cela ne semble pas nécessaire dans la pratique.

curl -v -u admin:admin -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d'{"type":"page","title":"new page","space":{"key":"ATTACH"},"body":{"storage":{"value":"<p>This is a new page</p>","representation":"storage"}}}' "http://localhost:8090/rest/api/content/?os_authType=basic"

pour répondre à votre dernière question, l'API spécifique qui crée la page est déterminée par L'URL elle-même et la méthode de requête. Par exemple, l'exécution d'un GET sur "/rest/api/content" récupérera une page existante (étant donné les paramètres de requête appropriés), tandis que l'exécution d'un POST créera une nouvelle page.

MODIFIÉ POUR AJOUTER:

Voir aussi mon commentaire ci-dessous pour savoir comment créer une page comme un enfant à une autre page, plutôt que de simplement au niveau supérieur d'un espace.

27
répondu Scott Dudley 2014-07-02 16:00:48

pas de repos api, mais un travail autour de je mis en place. Essayez ceci:

pour déplacer une page en tant que Page enfant

curl -X GET \
'<your-confluence-URL>/pages/movepage.action?pageId=<page-to-be-moved-pageId>&spaceKey=<target-space-key>&targetTitle=<target-title-of-parent-page>&position=append' \
-H 'authorization: Basic <encoded-username-password>' \ 
-H 'x-atlassian-token: no-check'

pour déplacer une page comme page de haut niveau dans l'espace

curl -X GET \
'<your-confluence-base-URL>/pages/movepage.action?pageId=<page-to-be-moved-pageId>&spaceKey=<target-space-key>&position=topLevel' \...
0
répondu Arjun Shukla 2017-05-19 22:02:19