Как создать новую страницу в 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' \...