更改通知条件(提醒)

betsy_yan发表于:2021年03月03日 13:49:04更新于:2022年05月07日 16:57:00

更改通知条件(提醒)的设置。

此API仅将应用的更改反映到确认应用各动作的测试环境中。
如需反映到正式环境,执行本API后,需要执行将应用的设置反映到正式环境中API

URI

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

来宾空间内的应用

https://(子域名).cybozu.cn/k/guest/(空间ID)/v1/preview/app/notifications/reminder.json

HTTP 方法

PUT

必要的访问权限

应用的管理权限

请求参数

参数名称要指定的值必须说明
app数值或字符串必须指定应用的ID。
notifications数组

用于存放设置通知条件对象的数组。

如果指定了空数组,则删除通知条件的设置。

省略时,则不会更改。

添加或更新通知条件的设置时,必须为所有现有的通知条件的设置指定出它的“notifications”。 如未指定,则将删除此通知条件的设置。

notifications[].timing对象条件必须

设置通知的时间。

指定“notifications”参数时,必须指定此参数。

notifications[].timing.code字符串条件必须

通知时间中被设置为基准时间字段的字段代码。

指定“notifications[].timing”参数时必须指定此参数。

可以指定以下字段的字段代码。

  • 创建时间

  • 更新时间

  • 日期与时间

  • 日期

notifications[].timing.daysLater数值或字符串条件必须基准时间几天后(几天前)发出通知的设置。

指定“notifications[].timing”参数时必须指定此参数。

设置为基准时间前的时间用负整数表示。

可以指定 -10000 ~ 10000 之间的整数。

notifications[].timing.hoursLater数值或字符串条件必须
※ 如已指定 notifications[].timing.time 将无法指定此参数

基准时间加上 notifications[].timing.daysLater 几小时后(几小时前)发出通知的设置。

指定“notifications[].timing”参数时必须指定此参数。

设置为基准时间前的时间用负整数表示。

可以指定 -10000 ~ 10000 之间的整数。

notifications[].timing.time字符串条件必须
※ 如已指定 notifications[].timing.hoursLater 将无法指定此参数

基准时间加上 notifications[].timing.daysLater 后当天的几点发出通知的设置。

指定“notifications[].timing”参数时必须指定此参数。
格式应设置为"HH:mm"(例: 09:20)。

但是,只能以10分钟为单位来进行设置。

notifications[].filterCond字符串

提醒的通知条件。用查询语句格式表示。

关于查询语句的格式请参考以下页面。

批量获取记录(在查询中指定条件)

以下情况,与指定“所有记录”时相同
  • 指定空字符

  • 指定 null

  • 省略参数

如指定了已删除的用户、组织、组时,将发生错误。

在指定条件下包含“order by”,“limit”和“offset”将导致错误。

notifications[].title字符串
设置为通知内容。

可以指定 100 个字符以内的字符串。

省略时,为空字符串。

notifications[].targets数组条件必须

用于设置通知对象的数组。

指定“notifications”参数时,必须指定此参数。

notifications[].targets[].entity对象条件必须

指定通知对象的对象的类型。

指定“notifications[].targets”参数时,必须指定此参数。

notifications[].targets[].entity.type字符串条件必须

指定通知条件对象的类型。

指定“notifications[].targets[].entity”参数时,必须指定此参数。
  • USER: 用户

  • GROUP: 组

  • ORGANIZATION: 组织

  • FIELD_ENTITY: 创建人 / 更新人 / 执行者 / 选择用户 / 选择组织 / 选择组字段

对于来宾空间,指定组织将导致错误。

notifications[].targets[].entity.code字符串条件必须

指定通知条件对象的字段代码。

指定“notifications[].targets[].entity”参数时,必须指定此参数。

当 notifications[].targets[].entity.type 为 FIELD_ENTITY 时,则可以指定以下字段代码:
  • 创建人

  • 更新人

  • 执行者

  • 选择用户

  • 选择组织

  • 选择组

如果是来宾用户,在用户名前加上“guest/”。

notifications[].targets[].includeSubs布尔值或字符串

是否将设置继承给其下属组织。

仅当 notifications[].targets[].entity.type 参数 在 ORGANIZATION 或 FIELD_ENTITY 中指定了选择组织字段时才有效。

  • 继承: true

  • 不继承(初始值): false

省略时为false。
timezone字符串

指定提醒时间的时区ID。

如果从未保存过提醒通知条件,且未指定值,则设置为执行用户的时区。

revision数值或字符串

指定更改应用设定前的修订号。

如指定的修订版本不是最新时,则请求失败。

如省略或指定为"-1"时,则不检查修订。

请求的范例

头部

PUT /k/v1/preview/app/notifications/reminder.json HTTP/1.1
    Host: example.cybozu.cn:443
    X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU=
    Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=


正文

{
  "app": 1,
  "notifications": [
    {
      "timing": {
        "code": "创建日期和时间",
        "daysLater": "1",
        "hoursLater": "2"
      },
      "filterCond": "选择用户字段 in (\"user1\")",
      "title": "提醒",
      "targets": [
        {
          "entity": {
            "type": "USER",
            "code": "user1"
          },
          "includeSubs": false
        }
      ]
    },
    {
      "timing": {
        "code": "创建日期",
        "daysLater": "-3",
        "time": "08:30"
      },
      "filterCond": "选择用户字段 in (\"user1\")",
      "title": "提醒",
      "targets": [
        {
          "entity": {
            "type": "USER",
            "code": "user1"
          },
          "includeSubs": false
        }
      ]
    }
  ],
  "timezone": "Asia/Shanghai",
  "revision": "2"
}


应答

参数

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

 

应答的范例

{
    "revision": "2"
}


JavaScript 范例

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

var body = {
  'app': 1,
  'notifications': [
    {
      'timing': {
        'code': '创建日期和时间',
        'daysLater': '1',
        'hoursLater': '2'
      },
      'filterCond': '选择用户字段 in (\'user1\')',
      'title': '提醒',
      'targets': [
        {
          'entity': {
            'type': 'USER',
            'code': 'user1'
          },
          'includeSubs': false
        }
      ]
    },
    {
      'timing': {
        'code': '创建日期',
        'daysLater': '-3',
        'time': '08:30'
      },
      'filterCond': '选择用户字段 in (\'user1\')',
      'title': '提醒',
      'targets': [
        {
          'entity': {
            'type': 'USER',
            'code': 'user1'
          },
          'includeSubs': false
        }
      ]
    }
  ],
  'timezone': 'Asia/Shanghai',
  'revision': '2'
};
kintone.api(kintone.api.url('/k/v1/preview/app/notifications/reminder', true), 'PUT', body, function(resp) {
  // success
  console.log(resp);
}, function(error) {
  // error
  console.log(error);
});



使用 XMLHttpRequest 的请求

var xhrbody = {
  'app': 1,
  'notifications': [
    {
      'timing': {
        'code': '创建日期和时间',
        'daysLater': '1',
        'hoursLater': '2'
      },
      'filterCond': '选择用户字段 in (\'user1\')',
      'title': '提醒',
      'targets': [
        {
          'entity': {
            'type': 'USER',
            'code': 'user1'
          },
          'includeSubs': false
        }
      ]
    },
    {
      'timing': {
        'code': '创建日期',
        'daysLater': '-3',
        'time': '08:30'
      },
      'filterCond': '选择用户字段 in (\'user1\')',
      'title': '提醒',
      'targets': [
        {
          'entity': {
            'type': 'USER',
            'code': 'user1'
          },
          'includeSubs': false
        }
      ]
    }
  ],
  'timezone': 'Asia/Shanghai',
  'revision': '2',
  // CSRF TOKEN: 在kintone上执行API(POST,PUT,DELETE)时必须设置
  '__REQUEST_TOKEN__': kintone.getRequestToken()
};
// var appId = kintone.app.getId;
var url = 'htttps://{subdomain}.cybozu.cn/k/v1/preview/app/notifications/reminder.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(xhrbody));