Ответ 1
Мое подозрение в том, что вы не используете новую версию Confluence. API REST для создания новой страницы был представлен в Confluence 5.5 (который вышел 8 дней назад). Документация API версирована, и вы всегда должны использовать версию, соответствующую выпуску Confluence. В документах 5.5 API есть API-интерфейс создания страницы, который вам нужен, но более старые версии этого не делают. Вы можете изменить версию в указанном выше URL-адресе, чтобы получить версию API, соответствующую выпуску Confluence.
Confluence 5.4 и ранее также использовали другой корневой префикс для REST API (/rest/ prototype/1/content), который является одной из возможных причин получения ошибки страницы.
Пример на сайте Atlassian также запутан, потому что он включает дополнительное "/слияние" в 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 на "/rest/api/content" будет извлекать существующую страницу (с учетом соответствующих параметров запроса), а при выполнении POST будет создана новая страница.
ИЗМЕНИТЬ ДОБАВИТЬ:
См. также мой комментарий ниже о том, как создать страницу в качестве дочернего элемента другой существующей страницы, а не только на верхнем уровне пространства.