Atlassian Confluence: обновление родительского контейнера вложения

Я хочу переместить вложение в другое пространство (т. е. обновить родительский контейнер вложения на странице Confluence) с помощью Cloud REST API и команды «curl». Я просмотрел URL-адрес конечной точки REST API и нашел это:

PUT /rest/api/content/{id}/child/attachment/{attachmentId}

Может ли кто-нибудь привести пример правильно построенного ввода JSON для достижения этой цели? Я попытался с помощью приведенного ниже переместить вложение с именем «test.jpeg» с идентификатором «att000» и текущей версией 5 в родительский элемент с идентификатором 1234, но это не удается:

curl -v -u 'admin:password' -X PUT -H 'Content-Type:application/json' -d '{"id":"att000","type":"attachment","title":"test.jpeg","version":{"number":5,"minorEdit":false},"ancestors":[{"id":1234}]' -H ‘X-Atlassian-Token:access-token' https://test.atlassian.net/wiki/rest/api/content/170234/child/attachment | python -m json.tool

Ниже приведено сообщение об ошибке

< HTTP/1.1 415 Unsupported Media Type
.
.
.
No JSON object could be decoded

Спасибо за ваше время!


person Supreetha Upadhya    schedule 07.04.2017    source источник


Ответы (2)


Я считаю, что в вашем curl примере вы загружаете его в пространстве, что невозможно. Вложения в Confluence должны находиться под содержимым. Взгляните на следующий пример:

curl -v -S -u admin:admin -X POST -H "X-Atlassian-Token: no-check" -F "[email protected]" -F "comment=this is my file" "http://localhost:8080/confluence/rest/api/content/3604482/child/attachment" | python -mjson.tool
person Saleh Parsa    schedule 08.04.2017
comment
Спасибо за ответ, Салех. Я исправил ввод JSON, но по-прежнему не могу получить ответ. Я получаю 415 Неподдерживаемый тип носителя, и объект JSON не может быть декодирован. - person Supreetha Upadhya; 11.04.2017
comment
Ах поймал. Пара вопросов, почему вы не используете post, а используете put? Как и я не вижу -F file=@locationoffile в вашем завитке. - person Saleh Parsa; 11.04.2017
comment
Спасибо за ваш ответ! Мне нужно будет использовать file=@locationoffile для обновления двоичных данных вложения. Однако я пытаюсь обновить только недвоичные данные вложения (PUT вместо POST). Ссылка: docs.atlassian.com/atlassian-confluence/REST/latest/ #content{id}/child/attachment-update - person Supreetha Upadhya; 11.04.2017

Вы должны установить свойство container в объекте запроса.

Укажите "container":{"id":"123456","type":"attachment"}

curl -v -u 'admin:password' -X PUT -H 'Content-Type:application/json' -d '{"id":"att000","type":"attachment","title":"test.jpeg","version":{"number":5,"minorEdit":false},"container":{"id":"123456","type":"attachment"}, "ancestors":[{"id":1234}]' -H ‘X-Atlassian-Token:access-token' https://test.atlassian.net/wiki/rest/api/content/170234/child/attachment | python -m json.tool

id => id страницы, на которую перемещается вложение.

person Faisal Ghaffar    schedule 06.06.2017