更改应用的访问权限

aki发表于:2016年12月02日 15:38:23更新于:2021年08月09日 15:49:37

更改应用的访问权限。

URI

更新正式环境的应用时所使用的URI跟更新测试环境时不一样。

更新正式环境的应用时

https://(子域名).cybozu.cn/k/v1/app/acl.json

来宾空间内的应用:https://(子域名).cybozu.cn/k/guest/(空间ID)/v1/app/acl.json

执行该API时,不单应用的访问权限,连测试环境的应用内的所有设置都会应用到正式环境中。

更新测试环境的应用时

https://(子域名).cybozu.cn/k/v1/preview/app/acl.json

来宾空间内的应用:https://(子域名).cybozu.cn/k/guest/(空间的ID)/v1/preview/app/acl.json

HTTP 方法

PUT

必要的访问权限

应用的管理权限

※从2020年3月版开始可以使用API令牌来执行该API。

请求参数

以下是要指定的参数一览。要指定的访问权限,需要满足以下依存关系:

  • 如果允许编辑或删除记录,也必须允许查看记录。

  • 如果允许导入文件,也必须允许添加记录。

参数名称要指定的值必须说明
app数值或字符串必须指定应用的ID。
rights数组必须用于存放访问权限设置对象的数组。从优先度高到低排列。但是,不管这里如何指定,对“Everyone”(所有用户)的设置的优先度一直都是最低的。
rights[].entity对象必须该对象用于存放访问权限的设置对象。
rights[].entity.type字符串必须指定访问权限的设置对象的种类。
  • 用户时:USER

  • 组时:GROUP

  • 组织时:ORGANIZATION

  • 应用的创建人:CREATOR

rights[].entity.code字符串条件必须指定访问权限的设置对象的代码。「rights[].entity.type」参数指定为“CREATOR”时,此参数不需要。
如果访问权限的设置对象没有指定“Everyone”(所有用户),“Everyone”不可执行任何操作。
如果要指定来宾用户,登录名称前面加“guest/”。
rights[].includeSubs布尔值或字符串
是否将设置继承给其下级组织。
  • 继承:true

  • 不继承(初始设置):false

仅当rights[].entity.type为ORGANIZATION时有效。
如果省略,则为false。

rights[].appEditable布尔值或字符串
设置是否可管理应用。
  • 允许管理应用时:true

  • 不允许管理应用时(初始设置):false

如果省略,则为false。

rights[].recordViewable布尔值或字符串
设置是否可查看记录。
  • 允许查看记录时:true

  • 不允许查看记录时(初始设置):false

如果省略,则为false。

rights[].recordAddable布尔值或字符串
设置是否可添加记录。
  • 允许添加记录:true

  • 不允许添加记录(默认设置):false

如果省略,则为false。

rights[].recordEditable布尔值或字符串
设置是否可编辑记录。
  • 允许编辑记录时:true

  • 不允许编辑记录时(初始设置):false

如果省略,则为false。

rights[].recordDeletable布尔值或字符串
设置是否可删除记录。
  • 允许删除记录时:true

  • 不允许删除记录时(初始设置):false

如果省略,则为false。

rights[].recordImportable布尔值或字符串
设置是否可导入文件。
  • 允许导入文件时:true

  • 不允许导入文件时(初始设置):false

如果省略,则为false。

rights[].recordExportable布尔值或字符串
设置是否可导出到文件。
  • 允许导出到文件时:true

  • 不允许导出到文件时(初始设置):false

如果省略,则为false。

revision数值或字符串

指定应用的设置更改之前的修订号。只有在测试环境才会验证指定的修订号。

如指定的修订号不是最新的,请求将报错。

如果省略或指定“-1”,将不对修订号进行验证。

请求的范例

头部

PUT /k/v1/app/acl.json HTTP/1.1
Host: example.cybozu.cn:443
X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU=
Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=
Content-Type: application/json

正文

{
  "app": 1,
  "rights": [
    {
      "entity": {
        "type": "USER",
        "code": "user1"
      },
      "appEditable": true,
      "recordViewable": true,
      "recordAddable": true,
      "recordEditable": true,
      "recordDeletable": true,
      "recordImportable": true,
      "recordExportable": true
    },
    {
      "entity": {
        "type": "GROUP",
        "code": "group1"
      },
      "appEditable": false,
      "recordViewable": false,
      "recordAddable": false,
      "recordEditable": false,
      "recordDeletable": false,
      "recordImportable": false,
      "recordExportable": false
    },
    {
      "entity": {
        "type": "ORGANIZATION",
        "code": "org1"
      },
      "includeSubs": true,
      "appEditable": false,
      "recordViewable": true,
      "recordAddable": true,
      "recordEditable": true,
      "recordDeletable": true,
      "recordImportable": true,
      "recordExportable": true
    },
    {
      "entity": {
        "type": "CREATOR"
      },
      "appEditable": true,
      "recordViewable": true,
      "recordAddable": true,
      "recordEditable": true,
      "recordDeletable": true,
      "recordImportable": true,
      "recordExportable": true
    }
  ],
  "revision": 2
}

应答参数

参数名称值的类型说明
revision字符串应用的设置更改之后的修订号。

应答的范例

{
  "revision": "3"
}

JavaScript 范例

使用API请求发送 kintone REST API 请求

var body = {
    "app": 1,
    "rights": [
        {
            "entity": {
                "type": "USER",
                "code": "user1"
            },
            "appEditable": true,
            "recordViewable": true,
            "recordAddable": true,
            "recordEditable": true,
            "recordDeletable": true,
            "recordImportable": true,
            "recordExportable": true
        },{
            "entity": {
                "type": "GROUP",
                "code": "everyone"
            },
            "includeSubs": true,
            "appEditable": true,
            "recordViewable": true,
            "recordAddable": true,
            "recordEditable": true,
            "recordDeletable": true,
            "recordImportable": false,
            "recordExportable": false
        },{
            "entity": {
                "type": "CREATOR"
            },
            "appEditable": true,
            "recordViewable": true,
            "recordAddable": true,
            "recordEditable": true,
            "recordDeletable": true,
            "recordImportable": true,
            "recordExportable": true
        }
    ]
};
kintone.api(kintone.api.url('/k/v1/app/acl', true), 'PUT', body, function(resp) {
    // success
    console.log(resp);
}, function(error) {
    // error
    console.log(error);
});

使用 XMLHttpRequest 请求

var body = {
    "app": 1,
    "rights": [
        {
            "entity": {
                "type": "USER",
                "code": "user1"
            },
            "appEditable": true,
            "recordViewable": true,
            "recordAddable": true,
            "recordEditable": true,
            "recordDeletable": true,
            "recordImportable": true,
            "recordExportable": true
        },{
            "entity": {
                "type": "GROUP",
                "code": "everyone"
            },
            "includeSubs": true,
            "appEditable": true,
            "recordViewable": true,
            "recordAddable": true,
            "recordEditable": true,
            "recordDeletable": true,
            "recordImportable": false,
            "recordExportable": false
        },{
            "entity": {
                "type": "CREATOR"
            },
            "appEditable": true,
            "recordViewable": true,
            "recordAddable": true,
            "recordEditable": true,
            "recordDeletable": true,
            "recordImportable": true,
            "recordExportable": true
        }
    ],
    // CSRF TOKEN: 在kintone中执行API(POST, PUT, DELETE)时需要设置
    "__REQUEST_TOKEN__": kintone.getRequestToken()
};
var url = 'https://{subdomain}.cybozu.cn/k/v1/app/acl.json';
var xhr = new XMLHttpRequest();
xhr.open('PUT', url);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = function() {
    if (xhr.status === 200) {
        // success
        console.log(JSON.parse(xhr.responseText));
    } else {
        // error
        console.log(JSON.parse(xhr.responseText));
    }
};
xhr.send(JSON.stringify(body));