如何在Confluence-RESTAPI中将一个页面附加为另一个页面的子页面

如何在Confluence-RESTAPI中将一个页面附加为另一个页面的子页面,rest,confluence,Rest,Confluence,我试图使用Confluence REST API来纠正Confluence站点上页面的树结构。我可以手动执行此操作,但是有相当多的页面,并且我已经在另一个XML文件中拥有了树结构 目前,我能够使用confluence REST API上传页面和图像。定义位于 我试图使用/rest/api/content/{id}PUT命令。这要求内容位于请求主体中。附加我从以前的GET请求中收到的内容,我发现我必须更新版本计数 以上所有工作。然而,添加到祖先列表似乎没有什么效果。如果我将父页面添加到祖先列表中,

我试图使用Confluence REST API来纠正Confluence站点上页面的树结构。我可以手动执行此操作,但是有相当多的页面,并且我已经在另一个XML文件中拥有了树结构

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

我试图使用
/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支持部门,但他们的授权电子邮件未到达我的收件箱。所以我来到这里:)

所以我的问题是,在confluence中创建页面树的其余调用是什么?之后,请求主体的格式是什么

编辑: 下面的PUT请求获得一个成功的返回代码。然而,返回的对象没有附加祖先(与所有GET请求一样,这并不罕见,您必须扩展才能获得它)。版本号不更新。这两页也没有互相钩住

{
     "id":"10552520",
     "type":"page",
     "title":"Correct Page Title",
     "ancestor":[
     {
         "id":"10552522",
         "type":"page"
     }],
     "version":
     {
          "number":"2"
     }
}
不过,上面所做的一件好事是删除页面的所有内容

{
    "type":"page",
    "title":"Correct Title",
    "space":{"key":"SpaceKey"},
    "ancestor":[{"id":"10553655","type":"page"}],
    "body":{"storage":{"value":"<p>New Page </p>","representation":"storage"}}
}
以下POST调用将导致创建页面,但没有祖先。存在提供id的祖先。奇怪的是,页面中也没有任何内容

{
    "type":"page",
    "title":"Correct Title",
    "space":{"key":"SpaceKey"},
    "ancestor":[{"id":"10553655","type":"page"}],
    "body":{"storage":{"value":"<p>New Page </p>","representation":"storage"}}
}
{
“类型”:“页面”,
“标题”:“正确的标题”,
“空格”:{“键”:“空格键”},
“祖先”:[{“id”:“10553655”,“type”:“page”}],
“正文”:{“存储”:{“值”:“newpage

”,“表示”:“存储”} }

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

看来我的问题的答案就在问题本身

JSON需要使用“祖先”而不是“祖先”作为祖先数组的数组名。一旦这一点被改变,所有的工作后的要求

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

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

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

首先移动现有页面以获取其版本、空间等。 然后使用版本+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)});

可能相关:和。我知道您的问题是关于修复现有页面的层次结构,但在将来,首先可能更容易解决::-)根据汇流源,PUT命令应该能够将页面移动到另一个父级。您得到的“格式错误”到底是什么?据我所知,为了移动页面,祖先列表应该包含一个对所需父页面的pageId的引用。@ScottDudley最初上传正确的树结构最好。我只是不明白如何正确地获取祖先列表。我已经附加了从已经构建的树返回给我的JSON(为了简洁起见,我减少了它)。我看不出它和我的树有什么关系。我列出的树的JSON是什么?在正确的位置执行[link]()创建它们会导致树只有一个深度。为了得到巢穴,所有的祖先似乎都需要在那里。@ScottDudley我还要对链接表示感谢,非常感谢。我现在更了解祖先领域了。但似乎仍然无法正确格式化rest请求。在我的例子中,必须在“body”属性之前指定“祖先”属性。如果我把“祖先”放在最后,它就被忽略了。