Как создать новую страницу в Confluence, используя их REST API?

Мне нужен рабочий пример создания новой вики-страницы в слиянии с помощью REST api. Я предпочитаю, чтобы новая страница создавалась под определенным пространством и конкретной страницей. Я прочитал их документацию api и посмотрел на несколько примеров, которые у них были, и все еще не хватает.

вот пример, который они имели на своем сайте

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

Я пробовал выше с моим именем пространства, новым заголовком и изменил url на mysite / rest / api / content и возвращенный контент был в основном html-страницей, говорящей на странице не существует или существует, но у вас нет разрешения. Я подтвердил, что у меня есть доступ к Confluence wiki и могу создать новую Вики, используя свои учетные данные.

что также не ясно в приведенном выше примере, как он вызывает конкретный api, который создает страницу? Это не имеет смысла.

аналогичный вопрос был задан на форуме, но не разумные ответ https://answers.atlassian.com/questions/149561/simple-confluence-rest-api-usage-what-am-i-missing

(Я думаю, что моя конечная цель-иметь возможность автоматически создавать новую страницу wiki на слиянии) я в порядке, чтобы отказаться от confluence REST API для другого решения, если это необходимо.

2 ответов


Я подозреваю, что вы не используете достаточно новую версию слияния. API REST для создания новой страницы был представлен в Confluence 5.5 (который вышел 8 дней назад). Документация API является версионной, и вы всегда должны использовать версию, соответствующую вашему выпуску Confluence. The 5.5 API docs включают API создания страницы, который вам нужен, но более старые версии этого не делают. Вы можете изменить версию в приведенном выше URL, чтобы получить версию API, соответствующую вашему слиянию освобождать.

Confluence 5.4 и prior также использовали другой корневой префикс для REST API (/rest/прототип/1 / content), что является одной из возможных причин получения страницы не найдена ошибка.

пример на сайте Atlassian также сбивает с толку, потому что он включает дополнительный "/confluence" в URL-адресе, который вам понадобится только в том случае, если Confluence был настроен с контекстным путем. Это также может привести к ошибке страницы не найден, если вы используете Confluence 5.5+ (хотя ваш пост предполагает, что вы уже исправили это).

кроме того, вам нужно сообщить Confluence, что вы используете основной метод аутентификации по добавление специального параметра запроса os_authType.

следующий пример работает для меня на Confluence 5.5 (не забудьте изменить ключ порта и пробела по мере необходимости).

для безопасности я также добавил соответствующий тип контента в Accept заголовок, хотя это кажется не нужно на практике.

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"

чтобы ответить на ваш последний вопрос, конкретный API, который создает страницу, определяется самим URL-адресом и методом запроса. Например, выполнение GET on "/rest / api / content" приведет к извлечению существующей страницы (с учетом соответствующих параметров запроса), а выполнение POST создаст новую страницу.

ОТРЕДАКТИРОВАНО, ЧТОБЫ ДОБАВИТЬ:

см. Также мой комментарий ниже о том, как создать страницу, как ребенок из другой существующей страница, в отличие от только на верхнем уровне пространства.


не REST api,но работа вокруг я собрал. Попробуйте это:

переместить страницу как дочернюю страницу

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'

для перемещения страницы в качестве страницы верхнего уровня в пространстве

curl -X GET \
'<your-confluence-base-URL>/pages/movepage.action?pageId=<page-to-be-moved-pageId>&spaceKey=<target-space-key>&position=topLevel' \...