如何在Confluence - REST API中将页面作为另一页面的子项附加

时间:2015-02-12 01:59:46

标签: rest confluence

我正在尝试使用Confluence REST API来更正Confluence站点上页面的树结构。我可以手动执行此操作,但是有很多页面,我已经在另一个XML文件中有树结构。

目前,我可以使用confluence REST API上传页面和图像。定义位于here

我试图使用/rest/api/content/{id} PUT命令。这要求内容位于请求正文中。附上我从之前的GET请求收到的内容,我发现我必须更新版本计数。

以上都是有效的。但是,似乎没有添加到祖先列表。如果我将父页面添加到祖先列表中,我会收到报告的格式错误。

如果我手动将页面附加到另一个页面并请求其内容,我会发现父级在祖先列表中出现两次。此外,历史记录计数也不会增加。

从页面的GET请求返回结果JSON:

http://someconfluencesite.com/rest/api/content/10031361?expand=ancestors (200)

{
    "id" : "10031361",
    "type" : "page",
    "title" : "Automatic Action Usage Updates",
    "ancestors" : [{
            "id" : "10031327",
            "type" : "page",
            "title" : "Action Lists"
        }, {
            "id" : "10031327",
            "type" : "page",
            "title" : "Action Lists"
        }, {
            "id" : "10031328",
            "type" : "page",
            "title" : "Actions Tab"
        }, {
            "id" : "10031327",
            "type" : "page",
            "title" : "Action Lists"
        }, {
            "id" : "10031327",
            "type" : "page",
            "title" : "Action Lists"
        }, {
            "id" : "10031328",
            "type" : "page",
            "title" : "Actions Tab"
        }
    ]
}

这是用于以下内容的树:

  • 空间
    • 动作列表
      • 操作标签
        • 自动操作使用更新

这让我相信我使用了错误的命令。

我曾尝试联系Confluence支持,但他们的授权电子邮件未到达我的收件箱。所以我来到这里:)

所以我的问题是在汇合中创建页面树的REST调用是什么?之后,请求体的格式是什么?

编辑: 以下PUT请求获得成功的返回码。然而,返回的对象没有附加祖先(并不像在所有GET请求中那样扩展以获得它)。版本号不会更新。这两页也没有互相挂钩。

{
     "id":"10552520",
     "type":"page",
     "title":"Correct Page Title",
     "ancestor":[
     {
         "id":"10552522",
         "type":"page"
     }],
     "version":
     {
          "number":"2"
     }
}

以上所做的好处是删除页面的所有内容。

以下POST调用导致页面被创建但没有祖先。祖先以提供的id存在。奇怪的是,这也是在页面中没有任何内容的情况下创建的。

{
    "type":"page",
    "title":"Correct Title",
    "space":{"key":"SpaceKey"},
    "ancestor":[{"id":"10553655","type":"page"}],
    "body":{"storage":{"value":"<p>New Page </p>","representation":"storage"}}
}

将上述内容放入REST API浏览器中也会导致子项未附加到父项。

3 个答案:

答案 0 :(得分:1)

所以看来我的问题的答案就在于问题本身。

JSON需要将“祖先”而非“祖先”作为祖先数组的数组名称。一旦改变它,它都适用于POST请求。

因此,如果您阅读此内容并遇到类似问题,请确保您传递的JSON中的所有元素名称都是正确的。如果不是,他们就会被忽略。

答案 1 :(得分:1)

{
    "id":"10552520",
    "type":"page",
    "title":"Correct Page Title",
    "ancestors":[
        {
            "id":"10552522",
            "type":"page"
        }
    ],
    "version":
        {
            "number":"2"
        }
    }

它是“祖先”,而不是“祖先”。

答案 2 :(得分:0)

首先移动现有页面,获取它的版本,空间等。 然后用版本+ 1,空格,祖先,标题调用PUT。

pageaschild = { "type":"page",
      "title":name,
      "space":{"key":space},
      "ancestors":[{"id":ancestorid,"type":"page"}],
      "version":{"number":version}};

$.ajax({type:'PUT', url:baseURL + pageId, contentType:"application/json;charset=utf-8", data:JSON.stringify(pageaschild)});