2017-04-07 2 views
0

Je souhaite déplacer une pièce jointe vers un espace différent (par exemple, mettre à jour le conteneur parent d'une pièce jointe dans une page Confluence) en utilisant Cloud REST API et la commande "curl". Je levais les yeux URL du noeud final API REST et trouvé ceci:Atlassian Confluence: mise à jour du conteneur parent d'une pièce jointe

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

quelqu'un pourrait-elle fournir un exemple pour une entrée JSON construit correctement pour y parvenir? J'ai essayé celui ci-dessous pour déplacer une pièce jointe appelée « test.jpeg » avec ID « att000 » et la version actuelle de 5 à parent avec l'ID 1234, mais il échoue:

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 

Ci-dessous est le message d'erreur

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

Nous vous remercions de votre temps!

Répondre

0

Je crois en votre exemple curl que vous téléchargez dans l'espace ce qui n'est pas possible. Les pièces jointes dans Confluence doivent être sous contenu. Jetez un oeil à exemple suivant:

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 
+0

Merci pour votre réponse, Saleh. J'ai corrigé mon entrée JSON, mais je suis toujours incapable de recevoir une réponse. Je reçois les erreurs "415 Unsupported Media Type" et "No JSON object could be decoded". –

+0

Ah gotcha. Couple de questions, pourquoi vous n'utilisez pas poste et vous utilisez put? Aussi bien que je ne vois pas -F "file = @ locationoffile" dans votre boucle. –

+0

Merci pour votre réponse! J'aurais besoin d'utiliser "file = @ locationoffile" pour mettre à jour les données binaires de la pièce jointe. Cependant, j'essaye de mettre à jour seulement les données non-binaires d'une pièce jointe (PUT au lieu de POST). Référence: https://docs.atlassian.com/atlassian-confluence/REST/latest/#content/{id}/child/attachment-update –

0

Vous devez définir la propriété container dans l'objet de la demande.

Spécifier "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 de la page où l'attachement est déplacé.