diff options
| author | Zhineng Li <im@zhineng.li> | 2026-07-12 17:11:17 +0800 |
|---|---|---|
| committer | Zhineng Li <im@zhineng.li> | 2026-07-12 17:11:17 +0800 |
| commit | 1c7f908ce09f98fdcbf79ed2a8ae21be60eaa634 (patch) | |
| tree | 5f0857666365b7e40cdaa3733ebe1f3ba9e13c67 /data/zh_cn/push/2016-08-01/api-docs.php | |
| parent | 7347bac4ab7e136157fc94777e6cf87ef9e08599 (diff) | |
| download | afterglow-metadata-full-1c7f908ce09f98fdcbf79ed2a8ae21be60eaa634.tar.gz afterglow-metadata-full-1c7f908ce09f98fdcbf79ed2a8ae21be60eaa634.zip | |
update APIs 20260712
Diffstat (limited to 'data/zh_cn/push/2016-08-01/api-docs.php')
| -rw-r--r-- | data/zh_cn/push/2016-08-01/api-docs.php | 11060 |
1 files changed, 4590 insertions, 6470 deletions
diff --git a/data/zh_cn/push/2016-08-01/api-docs.php b/data/zh_cn/push/2016-08-01/api-docs.php index 5c7e98b..23ffcd4 100644 --- a/data/zh_cn/push/2016-08-01/api-docs.php +++ b/data/zh_cn/push/2016-08-01/api-docs.php @@ -1,92 +1,48 @@ <?php return [ 'version' => '1.0', - 'info' => [ - 'style' => 'RPC', - 'product' => 'Push', - 'version' => '2016-08-01', - ], + 'info' => ['style' => 'RPC', 'product' => 'Push', 'version' => '2016-08-01'], 'directories' => [ [ - 'id' => 165111, - 'title' => '推送相关接口', + 'children' => ['Push', 'MassPush', 'ContinuouslyPush', 'CompleteContinuouslyPush', 'CancelPush', 'PushV2', 'MassPushV2'], 'type' => 'directory', - 'children' => [ - 'Push', - 'MassPush', - 'ContinuouslyPush', - 'CompleteContinuouslyPush', - 'CancelPush', - 'PushV2', - 'MassPushV2', - ], + 'title' => '推送相关接口', + 'id' => 307557, ], [ - 'id' => 165112, - 'title' => '查询相关接口', + 'children' => ['CheckCertificate', 'QueryPushRecords', 'QueryDeviceStat', 'QueryUniqueDeviceStat', 'QueryDeviceInfo', 'QueryPushStatByApp', 'QueryPushStatByMsg', 'CheckDevices'], 'type' => 'directory', - 'children' => [ - 'CheckCertificate', - 'QueryPushRecords', - 'QueryDeviceStat', - 'QueryUniqueDeviceStat', - 'QueryDeviceInfo', - 'QueryPushStatByApp', - 'QueryPushStatByMsg', - 'CheckDevices', - ], + 'title' => '查询相关接口', + 'id' => 307565, ], [ - 'id' => 95678, - 'title' => '标签相关接口', + 'children' => ['BindTag', 'UnbindTag', 'RemoveTag', 'QueryTags', 'ListTags'], 'type' => 'directory', - 'children' => [ - 'BindTag', - 'UnbindTag', - 'RemoveTag', - 'QueryTags', - 'ListTags', - ], + 'title' => '标签相关接口', + 'id' => 307549, ], [ - 'id' => 165138, - 'title' => '别名相关接口', + 'children' => ['BindAlias', 'UnbindAlias', 'QueryAliases', 'QueryDevicesByAlias'], 'type' => 'directory', - 'children' => [ - 'BindAlias', - 'UnbindAlias', - 'QueryAliases', - 'QueryDevicesByAlias', - ], + 'title' => '别名相关接口', + 'id' => 307574, ], [ - 'id' => 95697, - 'title' => '账号相关接口', + 'children' => ['QueryDevicesByAccount'], 'type' => 'directory', - 'children' => [ - 'QueryDevicesByAccount', - ], + 'title' => '账号相关接口', + 'id' => 307555, ], [ - 'id' => 95671, - 'title' => '其他接口', + 'children' => ['BindPhone', 'UnbindPhone'], 'type' => 'directory', - 'children' => [ - 'BindPhone', - 'UnbindPhone', - ], + 'title' => '其他接口', + 'id' => 307546, ], [ - 'id' => 200051, - 'title' => '后续下线接口(不建议使用)', + 'children' => ['PushMessageToiOS', 'PushNoticeToiOS', 'PushNoticeToAndroid', 'PushMessageToAndroid', 'CheckDevice', 'ListSummaryApps'], 'type' => 'directory', - 'children' => [ - 'PushMessageToiOS', - 'PushNoticeToiOS', - 'PushNoticeToAndroid', - 'PushMessageToAndroid', - 'CheckDevice', - 'ListSummaryApps', - ], + 'title' => '后续下线接口(不建议使用)', + 'id' => 307579, ], ], 'components' => [ @@ -100,7 +56,7 @@ ."\n" .'><notice>'."\n" ."\n" - .'批量推送接口 `CreateMassPushTask` 仅支持以下推送方式:'."\n" + .'批量推送接口 `MassPushV2` 仅支持以下推送方式:'."\n" ."\n" .'- `PUSH_IMMEDIATELY`(立即推送)'."\n" .'- `SCHEDULED_PUSH`(定时推送)'."\n" @@ -108,19 +64,9 @@ .'></notice>', 'type' => 'string', 'required' => false, - 'enumValueTitles' => [ - 'SCHEDULED_PUSH' => '定时推送', - 'CREATE_CONTINUOUS_PUSH' => '创建持续推送任务', - 'PUSH_IMMEDIATELY' => '立即推送', - 'CONTINUOUS_PUSH' => '持续推送', - ], + 'enumValueTitles' => ['SCHEDULED_PUSH' => '定时推送', 'CREATE_CONTINUOUS_PUSH' => '创建持续推送任务', 'PUSH_IMMEDIATELY' => '立即推送', 'CONTINUOUS_PUSH' => '持续推送'], 'example' => 'PUSH_IMMEDIATELY', - 'enum' => [ - 'PUSH_IMMEDIATELY', - 'SCHEDULED_PUSH', - 'CREATE_CONTINUOUS_PUSH', - 'CONTINUOUS_PUSH', - ], + 'enum' => ['PUSH_IMMEDIATELY', 'SCHEDULED_PUSH', 'CREATE_CONTINUOUS_PUSH', 'CONTINUOUS_PUSH'], ], 'Target' => [ 'description' => '指定消息推送的目标对象。当操作类型`Action`为`CREATE_CONTINUOUS_PUSH`(创建连续推送任务)时,此参数为可选。', @@ -131,7 +77,7 @@ ."\n" .'><notice>'."\n" ."\n" - .'批量推送接口 `CreateMassPushTask` 和 持续推送 `CONTINUOUS_PUSH` 仅支持以下三种目标类型:'."\n" + .'批量推送接口 `MassPushV2` 和 持续推送 `CONTINUOUS_PUSH` 仅支持以下三种目标类型:'."\n" ."\n" .'- `DEVICE`(设备)'."\n" .'- `ACCOUNT`(账号)'."\n" @@ -140,51 +86,24 @@ .'></notice>', 'type' => 'string', 'required' => false, - 'enumValueTitles' => [ - 'ALL' => '全推', - 'ACCOUNT' => '账户', - 'ALIAS' => '别名', - 'DEVICE' => '设备', - 'TAG' => '标签', - ], + 'enumValueTitles' => ['ALL' => '全推', 'ACCOUNT' => '账户', 'ALIAS' => '别名', 'DEVICE' => '设备', 'TAG' => '标签'], 'example' => 'DEVICE', - 'enum' => [ - 'DEVICE', - 'TAG', - 'ALIAS', - 'ACCOUNT', - 'ALL', - 'FILE', - ], - ], - 'Value' => [ - 'description' => '根据 `Target.Type` 设置推送目标,多个目标以逗号分隔。目标类型及目标值详细说明如下:'."\n" - ."\n" - .'>* `DEVICE`:设备ID,如 deviceid1,deviceid2,最多1000个。'."\n" - .'>* `ACCOUNT`:账号ID,如 account1,account2,最多1000个。'."\n" - .'>* `ALIAS`:别名,如 alias1,alias2,最多1000个。'."\n" - .'>* `TAG`:支持单个或多个标签,格式参见[标签格式规范](https://help.aliyun.com/document_detail/434847.html)。'."\n" - .'>* `ALL`:全量推送,无需设置值,全推可能会导致费用增加,请您酌情使用。', - 'type' => 'string', - 'example' => 'value', + 'enum' => ['DEVICE', 'TAG', 'ALIAS', 'ACCOUNT', 'ALL', 'FILE'], ], + 'Value' => ['description' => '根据 `Target.Type` 设置推送目标,多个目标以逗号分隔。目标类型及目标值详细说明如下:'."\n" + ."\n" + .'>* `DEVICE`:设备ID,如 deviceid1,deviceid2,最多1000个。'."\n" + .'>* `ACCOUNT`:账号ID,如 account1,account2,最多1000个。'."\n" + .'>* `ALIAS`:别名,如 alias1,alias2,最多1000个。'."\n" + .'>* `TAG`:支持单个或多个标签,格式参见[标签格式规范](https://help.aliyun.com/document_detail/434847.html)。'."\n" + .'>* `ALL`:全量推送,无需设置值,全推可能会导致费用增加,请您酌情使用。', 'type' => 'string', 'example' => 'value'], 'Platform' => [ 'description' => '平台类型,可选参数。', 'type' => 'string', 'required' => false, - 'enumValueTitles' => [ - 'ALL' => '双端设备,仅部分双端应用支持', - 'HMOS' => '鸿蒙设备', - 'ANDROID' => '安卓设备', - 'IOS' => 'iOS设备', - ], + 'enumValueTitles' => ['ALL' => '双端设备,仅部分双端应用支持', 'HMOS' => '鸿蒙设备', 'ANDROID' => '安卓设备', 'IOS' => 'iOS设备'], 'example' => 'IOS', - 'enum' => [ - 'ANDROID', - 'IOS', - 'HMOS', - 'ALL', - ], + 'enum' => ['ANDROID', 'IOS', 'HMOS', 'ALL'], ], ], ], @@ -197,17 +116,8 @@ .'> - 中文字符在 UTF-8 编码下通常占用 3 个字节', 'type' => 'object', 'properties' => [ - 'Title' => [ - 'description' => '发送的消息标题。', - 'type' => 'string', - 'example' => 'title', - ], - 'Body' => [ - 'description' => '发送的消息内容。', - 'type' => 'string', - 'required' => false, - 'example' => '{"key": "value"}', - ], + 'Title' => ['description' => '发送的消息标题。', 'type' => 'string', 'example' => 'title'], + 'Body' => ['description' => '发送的消息内容。', 'type' => 'string', 'required' => false, 'example' => '{"key": "value"}'], ], ], 'Notification' => [ @@ -233,83 +143,42 @@ 'enumValueTitles' => [], 'example' => '您有一条新消息', ], - 'Body' => [ - 'description' => '推送的通知内容。'."\n" - ."\n" - .'> 长度限制如下:'."\n" - .'> - iOS/Harmony/Android 限制**字符长度**不超过200', - 'type' => 'string', - 'example' => '尊敬的客户,您好!您的预约订单已取消成功。 ', - ], + 'Body' => ['description' => '推送的通知内容。'."\n" + ."\n" + .'> 长度限制如下:'."\n" + .'> - iOS/Harmony/Android 限制**字符长度**不超过200', 'type' => 'string', 'example' => '尊敬的客户,您好!您的预约订单已取消成功。 '], 'Ios' => [ 'description' => 'iOS通知配置', 'type' => 'object', 'properties' => [ - 'Subtitle' => [ - 'description' => 'iOS 通知副标题内容。', - 'type' => 'string', - 'example' => '请查收订单。', - ], - 'Music' => [ - 'description' => 'iOS 通知声音。指定存放在 app bundle 或沙盒 Library/Sounds 目录下的音频文件名,请参见:[ iOS 推送如何设定通知声音](https://help.aliyun.com/document_detail/48906.html)。'."\n" - ."\n" - .'> - 若指定为空串(””),通知为静音'."\n" - .'> - 若不设置,默认填充 default 为系统提示音', - 'type' => 'string', - 'example' => 'default', - ], - 'Badge' => [ - 'description' => 'iOS 应用角标。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'BadgeAutoIncrement' => [ - 'description' => '是否开启角标自增功能,可选参数,默认为 false。'."\n" - ."\n" - .'> - 不可和角标设定参数一起使用'."\n" - .'> - 角标自增功能由阿里云推送服务器维护每个设备的角标计数,需使用 1.9.5 以上版本的 SDK,通过SDK主动同步角标数字到服务端', - 'type' => 'boolean', - 'example' => 'false', - ], - 'Silent' => [ - 'description' => '控制是否启用静默推送模式。'."\n" - ."\n" - .'> - 发送静默通知,可不填 `title` 和 `body` 参数', - 'type' => 'boolean', - 'example' => 'false', - ], - 'Mutable' => [ - 'description' => '启用扩展通知,控制iOS通知是否支持Notification Service Extension处理。'."\n" - .'> - 当发送静默通知时,必须设置为true'."\n" - .'> - Extension处理时间不能超过30秒'."\n" - .'> - 超时会导致通知显示原始内容'."\n" - .'> - 需要在应用中添加Notification Service Extension', - 'type' => 'boolean', - 'example' => 'true', - ], - 'Category' => [ - 'description' => '指定 iOS 通知的类别标识符,用于定义通知的交互行为和展示样式。'."\n" - ."\n" - .'> - Category 需要在 App 中预先注册才能生效。'."\n" - .'> - 不同的 Category 可以定义不同的操作集合。', - 'type' => 'string', - 'example' => 'MESSAGE_REPLY', - ], - 'CollapseId' => [ - 'description' => '用于控制通知合并的唯一标识符,相同标识的通知将被覆盖显示。', - 'type' => 'string', - 'example' => 'order_status_update_12345', - ], - 'ThreadId' => [ - 'description' => 'iOS通知分组的线程标识符,用于将相关通知归类折叠显示。'."\n" - ."\n" - .'> - 相同thread-id的通知会自动分组显示'."\n" - .'> - 多条相关通知折叠为一个通知组'."\n" - .'> - 用户可展开查看组内所有通知', - 'type' => 'string', - 'example' => 'news_category_tech', - ], + 'Subtitle' => ['description' => 'iOS 通知副标题内容。', 'type' => 'string', 'example' => '请查收订单。'], + 'Music' => ['description' => 'iOS 通知声音。指定存放在 app bundle 或沙盒 Library/Sounds 目录下的音频文件名,请参见:[ iOS 推送如何设定通知声音](https://help.aliyun.com/document_detail/48906.html)。'."\n" + ."\n" + .'> - 若指定为空串(””),通知为静音'."\n" + .'> - 若不设置,默认填充 default 为系统提示音', 'type' => 'string', 'example' => 'default'], + 'Badge' => ['description' => 'iOS 应用角标。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], + 'BadgeAutoIncrement' => ['description' => '是否开启角标自增功能,可选参数,默认为 false。'."\n" + ."\n" + .'> - 不可和角标设定参数一起使用'."\n" + .'> - 角标自增功能由阿里云推送服务器维护每个设备的角标计数,需使用 1.9.5 以上版本的 SDK,通过SDK主动同步角标数字到服务端', 'type' => 'boolean', 'example' => 'false'], + 'Silent' => ['description' => '控制是否启用静默推送模式。'."\n" + ."\n" + .'> - 发送静默通知,可不填 `title` 和 `body` 参数', 'type' => 'boolean', 'example' => 'false'], + 'Mutable' => ['description' => '启用扩展通知,控制iOS通知是否支持Notification Service Extension处理。'."\n" + .'> - 当发送静默通知时,必须设置为true'."\n" + .'> - Extension处理时间不能超过30秒'."\n" + .'> - 超时会导致通知显示原始内容'."\n" + .'> - 需要在应用中添加Notification Service Extension', 'type' => 'boolean', 'example' => 'true'], + 'Category' => ['description' => '指定 iOS 通知的类别标识符,用于定义通知的交互行为和展示样式。'."\n" + ."\n" + .'> - Category 需要在 App 中预先注册才能生效。'."\n" + .'> - 不同的 Category 可以定义不同的操作集合。', 'type' => 'string', 'example' => 'MESSAGE_REPLY'], + 'CollapseId' => ['description' => '用于控制通知合并的唯一标识符,相同标识的通知将被覆盖显示。', 'type' => 'string', 'example' => 'order_status_update_12345'], + 'ThreadId' => ['description' => 'iOS通知分组的线程标识符,用于将相关通知归类折叠显示。'."\n" + ."\n" + .'> - 相同thread-id的通知会自动分组显示'."\n" + .'> - 多条相关通知折叠为一个通知组'."\n" + .'> - 用户可展开查看组内所有通知', 'type' => 'string', 'example' => 'news_category_tech'], 'InterruptionLevel' => [ 'description' => '中断级别,可选参数,枚举值如下:'."\n" ."\n" @@ -319,26 +188,12 @@ .'- `critical`:系统立即显示通知,屏幕亮起,并绕过静音开关播放声音。', 'type' => 'string', 'example' => 'active', - 'enum' => [ - 'passive', - 'active', - 'time-sensitive', - 'critical', - ], - ], - 'RelevanceScore' => [ - 'description' => '通知消息的相关性评分,用于控制通知的优先级和展示策略。', - 'type' => 'number', - 'format' => 'double', - 'example' => '0.5', - ], - 'ExtParameters' => [ - 'description' => 'iOS 通知的自定义扩展属性。'."\n" - ."\n" - .'> - 参数必须以标准的JSON Map格式传入,格式错误将导致解析失败。', - 'type' => 'string', - 'example' => '{"attachment": "https://xxxx.xxx/notification_pic.png"} ', + 'enum' => ['passive', 'active', 'time-sensitive', 'critical'], ], + 'RelevanceScore' => ['description' => '通知消息的相关性评分,用于控制通知的优先级和展示策略。', 'type' => 'number', 'format' => 'double', 'example' => '0.5'], + 'ExtParameters' => ['description' => 'iOS 通知的自定义扩展属性。'."\n" + ."\n" + .'> - 参数必须以标准的JSON Map格式传入,格式错误将导致解析失败。', 'type' => 'string', 'example' => '{"attachment": "https://xxxx.xxx/notification_pic.png"} '], 'LiveActivity' => [ 'description' => '灵动岛参数对象。'."\n" ."\n" @@ -350,81 +205,51 @@ .'></notice>', 'type' => 'object', 'properties' => [ - 'Id' => [ - 'description' => 'Live Activity的唯一标识符,用于关联设备端活动实例与服务端推送目标。'."\n" - ."\n" - .'><notice>'."\n" - ."\n" - .'- 该 `ID` 必须与客户端SDK中 `registerLiveActivityPushToken` 方法的 `forActivityId` 参数保持一致'."\n" - ."\n" - .'- 服务端推送时使用此 `ID` 定位具体的活动实例'."\n" - ."\n" - .'></notice>', - 'type' => 'string', - 'example' => 'FOOD_DELIVERY_ORD20231201001', - ], + 'Id' => ['description' => 'Live Activity的唯一标识符,用于关联设备端活动实例与服务端推送目标。'."\n" + ."\n" + .'><notice>'."\n" + ."\n" + .'- 该 `ID` 必须与客户端SDK中 `registerLiveActivityPushToken` 方法的 `forActivityId` 参数保持一致'."\n" + ."\n" + .'- 服务端推送时使用此 `ID` 定位具体的活动实例'."\n" + ."\n" + .'></notice>', 'type' => 'string', 'example' => 'FOOD_DELIVERY_ORD20231201001'], 'Event' => [ 'description' => '启动、更新、结束实时活动。', 'type' => 'string', 'required' => false, 'example' => 'start', - 'enum' => [ - 'start', - 'update', - 'end', - ], - ], - 'AttributesType' => [ - 'description' => '待启动的 Live Activity 类型。'."\n" - ."\n" - .'> `Event` 为 start 时必填', - 'type' => 'string', - 'example' => 'OrderActivityAttributes', - ], - 'Attributes' => [ - 'description' => 'iOS灵动岛(Live Activities)推送的静态透传参数,用于传递不变的业务标识信息。'."\n" - ."\n" - .'> `Event` 为 start 时必填', - 'type' => 'string', - 'example' => '{'."\n" - .' "orderId": "ORD20231201001",'."\n" - .' "restaurantName": "美味餐厅",'."\n" - .' "customerAddress": "xx区xx路xx号",'."\n" - .' "orderType": "delivery"'."\n" - .'}', - ], - 'ContentState' => [ - 'description' => '灵动岛活动的动态透传参数,包含可实时更新的状态信息和变化数据。'."\n" - ."\n" - .'> - 避免过于频繁的更新(建议间隔≥5秒)'."\n" - .'> - 批量更新多个字段,减少推送次数'."\n" - .'> - 考虑用户体验,避免界面闪烁'."\n" - .'> - 有效的JSON字符串', - 'type' => 'string', - 'example' => '{'."\n" - .' "status": "delivering",'."\n" - .' "estimatedTime": "10分钟",'."\n" - .' "progress": 80,'."\n" - .' "driverName": "李师傅",'."\n" - .' "currentStep": "配送员正在路上"}'."\n" - .'}', - ], - 'DismissalDate' => [ - 'description' => '设定已结束的灵动岛活动在锁屏界面的保留时间,让用户在活动结束后仍可查看信息,秒级Unix时间戳。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1701439800', - ], - 'StaleDate' => [ - 'description' => '设定iOS灵动岛活动内容的过期时间戳,秒级Unix时间戳。'."\n" - ."\n" - .'> - 到达指定时间后,系统会自动将活动标记为过期状态'."\n" - .'> - 过期的活动会从灵动岛和锁屏界面中移除'."\n" - .'> - 防止过时信息长期占用用户界面', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1701425400', + 'enum' => ['start', 'update', 'end'], ], + 'AttributesType' => ['description' => '待启动的 Live Activity 类型。'."\n" + ."\n" + .'> `Event` 为 start 时必填', 'type' => 'string', 'example' => 'OrderActivityAttributes'], + 'Attributes' => ['description' => 'iOS灵动岛(Live Activities)推送的静态透传参数,用于传递不变的业务标识信息。'."\n" + ."\n" + .'> `Event` 为 start 时必填', 'type' => 'string', 'example' => '{'."\n" + .' "orderId": "ORD20231201001",'."\n" + .' "restaurantName": "美味餐厅",'."\n" + .' "customerAddress": "xx区xx路xx号",'."\n" + .' "orderType": "delivery"'."\n" + .'}'], + 'ContentState' => ['description' => '灵动岛活动的动态透传参数,包含可实时更新的状态信息和变化数据。'."\n" + ."\n" + .'> - 避免过于频繁的更新(建议间隔≥5秒)'."\n" + .'> - 批量更新多个字段,减少推送次数'."\n" + .'> - 考虑用户体验,避免界面闪烁'."\n" + .'> - 有效的JSON字符串', 'type' => 'string', 'example' => '{'."\n" + .' "status": "delivering",'."\n" + .' "estimatedTime": "10分钟",'."\n" + .' "progress": 80,'."\n" + .' "driverName": "李师傅",'."\n" + .' "currentStep": "配送员正在路上"}'."\n" + .'}'], + 'DismissalDate' => ['description' => '设定已结束的灵动岛活动在锁屏界面的保留时间,让用户在活动结束后仍可查看信息,秒级Unix时间戳。', 'type' => 'integer', 'format' => 'int64', 'example' => '1701439800'], + 'StaleDate' => ['description' => '设定iOS灵动岛活动内容的过期时间戳,秒级Unix时间戳。'."\n" + ."\n" + .'> - 到达指定时间后,系统会自动将活动标记为过期状态'."\n" + .'> - 过期的活动会从灵动岛和锁屏界面中移除'."\n" + .'> - 防止过时信息长期占用用户界面', 'type' => 'integer', 'format' => 'int64', 'example' => '1701425400'], ], ], 'ApnsEnv' => [ @@ -433,15 +258,9 @@ .'- DEV:开发环境,适用于 Xcode 直接安装调试的应用。'."\n" .'- PRODUCT:生产环境,适用于 App Store、TestFlight、Ad Hoc 及企业分发的应用。', 'type' => 'string', - 'enumValueTitles' => [ - 'DEV' => '开发环境', - 'PRODUCT' => '生产环境', - ], + 'enumValueTitles' => ['DEV' => '开发环境', 'PRODUCT' => '生产环境'], 'example' => 'DEV', - 'enum' => [ - 'DEV', - 'PRODUCT', - ], + 'enum' => ['DEV', 'PRODUCT'], ], ], ], @@ -455,36 +274,11 @@ .'> 完成申请通知消息自分类权益后,用于标识消息类型,不同的通知消息类型影响消息展示和提醒方式。详情参见鸿蒙官网 [Notification.category](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', 'type' => 'string', 'enumValueTitles' => [ - 'TRAVEL' => '出行', - 'IM' => '即时聊天', - 'VOIP' => '音视频通话', - 'SUBSCRIPTION' => '订阅', - 'MARKETING' => '新闻、内容推荐、社交动态、产品促销、财经动态、生活资讯、调研、功能推荐、运营活动(仅对内容进行标识,不会加快消息发送),统称为资讯营销类消息', - 'CUSTOMER_SERVICE' => '客服消息', - 'ACCOUNT' => '账号动态', - 'MAIL' => '邮件', - 'FINANCE' => '财务', - 'EXPRESS' => '订单&物流', - 'WORK' => '工作事项提醒', - 'HEALTH' => '健康', - 'DEVICE_REMINDER' => '设备提醒', + 'TRAVEL' => '出行', 'IM' => '即时聊天', 'VOIP' => '音视频通话', 'SUBSCRIPTION' => '订阅', 'MARKETING' => '新闻、内容推荐、社交动态、产品促销、财经动态、生活资讯、调研、功能推荐、运营活动(仅对内容进行标识,不会加快消息发送),统称为资讯营销类消息', 'CUSTOMER_SERVICE' => '客服消息', 'ACCOUNT' => '账号动态', 'MAIL' => '邮件', 'FINANCE' => '财务', 'EXPRESS' => '订单&物流', + 'WORK' => '工作事项提醒', 'HEALTH' => '健康', 'DEVICE_REMINDER' => '设备提醒', ], 'example' => 'IM', - 'enum' => [ - 'IM', - 'VOIP', - 'SUBSCRIPTION', - 'TRAVEL', - 'HEALTH', - 'WORK', - 'ACCOUNT', - 'EXPRESS', - 'FINANCE', - 'DEVICE_REMINDER', - 'MAIL', - 'CUSTOMER_SERVICE', - 'MARKETING', - ], + 'enum' => ['IM', 'VOIP', 'SUBSCRIPTION', 'TRAVEL', 'HEALTH', 'WORK', 'ACCOUNT', 'EXPRESS', 'FINANCE', 'DEVICE_REMINDER', 'MAIL', 'CUSTOMER_SERVICE', 'MARKETING'], ], 'SlotType' => [ 'description' => '使用指定类型的通知渠道。'."\n" @@ -492,184 +286,88 @@ .'> - 仅对阿里云自有通道有效。'."\n" .'> - 详情参见鸿蒙官网 [SlotType](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-notificationmanager-V5#slottype)', 'type' => 'string', - 'enumValueTitles' => [ - 'CONTENT_INFORMATION' => '内容资讯', - 'UNKNOWN_TYPE' => '未知类型', - 'LIVE_VIEW' => '实况窗', - 'SOCIAL_COMMUNICATION' => '社交通信', - 'CUSTOMER_SERVICE' => '客服消息。该类型用于用户与商家之间的客服消息,需由用户主动发起。', - 'OTHER_TYPES' => '其他', - 'SERVICE_INFORMATION' => '服务提醒', - ], + 'enumValueTitles' => ['CONTENT_INFORMATION' => '内容资讯', 'UNKNOWN_TYPE' => '未知类型', 'LIVE_VIEW' => '实况窗', 'SOCIAL_COMMUNICATION' => '社交通信', 'CUSTOMER_SERVICE' => '客服消息。该类型用于用户与商家之间的客服消息,需由用户主动发起。', 'OTHER_TYPES' => '其他', 'SERVICE_INFORMATION' => '服务提醒'], 'example' => 'SOCIAL_COMMUNICATION', - 'enum' => [ - 'SOCIAL_COMMUNICATION', - 'SERVICE_INFORMATION', - 'CONTENT_INFORMATION', - 'CUSTOMER_SERVICE', - 'OTHER_TYPES', - 'UNKNOWN_TYPE', - 'LIVE_VIEW', - ], - ], - 'NotifyId' => [ - 'description' => '指定每条消息在通知栏显示时的唯一标识(notifyId)。若未提供,推送服务将自动生成一个唯一标识。不同通知消息可使用相同的 notifyId,以实现新消息覆盖旧消息的功能。请参考鸿蒙官网 [Notification.notifyId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '123456', - ], - 'Action' => [ - 'description' => '指定应用内页面的 ability 对应的 action。'."\n" - ."\n" - .'> 详情请参考鸿蒙官网 [ClickAction.action](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section152462191216)。', - 'type' => 'string', - 'example' => 'com.example.action', - ], - 'Uri' => [ - 'description' => '应用内置页面 ability 对应的 uri。'."\n" - ."\n" - .'> - 当存在多个 Ability 时,分别填写不同 Ability 的 action 和 uri,优先使用 action 查找对应的应用内置页面。'."\n" - .'> - 详情参见鸿蒙官网 [ClickAction.uri](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section152462191216)', - 'type' => 'string', - 'example' => 'https://www.example.com:8080/push/example', + 'enum' => ['SOCIAL_COMMUNICATION', 'SERVICE_INFORMATION', 'CONTENT_INFORMATION', 'CUSTOMER_SERVICE', 'OTHER_TYPES', 'UNKNOWN_TYPE', 'LIVE_VIEW'], ], + 'NotifyId' => ['description' => '指定每条消息在通知栏显示时的唯一标识(notifyId)。若未提供,推送服务将自动生成一个唯一标识。不同通知消息可使用相同的 notifyId,以实现新消息覆盖旧消息的功能。请参考鸿蒙官网 [Notification.notifyId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)。', 'type' => 'integer', 'format' => 'int32', 'example' => '123456'], + 'Action' => ['description' => '指定应用内页面的 ability 对应的 action。'."\n" + ."\n" + .'> 详情请参考鸿蒙官网 [ClickAction.action](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section152462191216)。', 'type' => 'string', 'example' => 'com.example.action'], + 'Uri' => ['description' => '应用内置页面 ability 对应的 uri。'."\n" + ."\n" + .'> - 当存在多个 Ability 时,分别填写不同 Ability 的 action 和 uri,优先使用 action 查找对应的应用内置页面。'."\n" + .'> - 详情参见鸿蒙官网 [ClickAction.uri](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section152462191216)', 'type' => 'string', 'example' => 'https://www.example.com:8080/push/example'], 'RenderStyle' => [ 'description' => '通知消息样式,可选参数,默认是普通通知。', 'type' => 'string', - 'enumValueTitles' => [ - 'NORMAL' => '普通通知(默认值)', - 'MULTI_LINE' => '多行文本样式', - ], + 'enumValueTitles' => ['NORMAL' => '普通通知(默认值)', 'MULTI_LINE' => '多行文本样式'], 'example' => 'NORMAL', - 'enum' => [ - 'NORMAL', - 'MULTI_LINE', - ], - ], - 'ImageUrl' => [ - 'description' => '通知右侧大图标 URL,URL 使用的协议必须是 HTTPS 协议。'."\n" - ."\n" - .'> - 支持图片格式为 png、jpg、jpeg、heif、gif、bmp,图片长*宽<25000 像素。'."\n" - .'> - 详情参见鸿蒙官网 [Notification.image](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', - 'type' => 'string', - 'example' => 'https://example.com/xxx.png', + 'enum' => ['NORMAL', 'MULTI_LINE'], ], + 'ImageUrl' => ['description' => '通知右侧大图标 URL,URL 使用的协议必须是 HTTPS 协议。'."\n" + ."\n" + .'> - 支持图片格式为 png、jpg、jpeg、heif、gif、bmp,图片长*宽<25000 像素。'."\n" + .'> - 详情参见鸿蒙官网 [Notification.image](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', 'type' => 'string', 'example' => 'https://example.com/xxx.png'], 'InboxContent' => [ 'description' => '当 `RenderStyle` 为 `MULTI_LINE` 时,需填写此字段,用于定义多行文本样式的内容。最多支持3条内容。', 'type' => 'array', - 'items' => [ - 'description' => '文本。', - 'type' => 'string', - 'example' => '1. 您有一个事项待处理', - ], - ], - 'ExtParameters' => [ - 'description' => '设定通知消息的自定义扩展属性,用于传递额外的业务数据。'."\n" - ."\n" - .'> 参数必须以标准的JSON Map 格式传入,格式错误将导致解析失败。', - 'type' => 'string', - 'example' => '{"key": "value"}', - ], - 'TestMessage' => [ - 'description' => '启用测试消息。'."\n" - ."\n" - .'> - 详情参考鸿蒙推送参数 [TestMessage](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212)', - 'type' => 'boolean', - 'example' => 'true', - ], - 'ReceiptId' => [ - 'description' => '鸿蒙通道回执 ID,该回执 ID 可以在鸿蒙通道推送运营平台的回执参数配置中查看。'."\n" - ."\n" - .'> - 如果在鸿蒙通道推送运营平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云 EMAS 移动推送控制台中配置鸿蒙通道默认回执 ID。'."\n" - .'> - 详情参见鸿蒙官网 [pushOptions.receiptId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212)', - 'type' => 'string', - 'example' => 'RCPB***DFD5', - ], - 'ExtensionPush' => [ - 'description' => '启用鸿蒙通知扩展。'."\n" - ."\n" - .'> - 通知扩展消息需要先在鸿蒙官网申请权限才能发送,相关内容请参考[鸿蒙文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-send-extend-noti-V5)发送通知扩展消息。'."\n" - .'> - 鸿蒙 SDK 1.2.0 版本开始支持。', - 'type' => 'boolean', - 'example' => 'false', - ], - 'ExtensionExtraData' => [ - 'description' => '通知扩展消息的额外数据。'."\n" - ."\n" - .'> - 发送鸿蒙通知扩展消息时有效。'."\n" - .'> - 概念上等同鸿蒙通知扩展消息的 extraData 字段,具体定义参考鸿蒙 [ExtensionPayload](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section161192514234) 说明。'."\n" - .'> - 鸿蒙 SDK 1.2.0 版本开始支持。', - 'type' => 'string', - 'example' => 'text', - ], - 'BadgeSetNum' => [ - 'description' => '鸿蒙应用角标设置数字。'."\n" - ."\n" - .'> - 参考鸿蒙角标 [setNum 字段](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145)说明。'."\n" - .'> - 鸿蒙 SDK 1.2.0 版本开始支持。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'BadgeAddNum' => [ - 'description' => '鸿蒙应用角标累加数字。'."\n" - ."\n" - .'> - 鸿蒙 SDK 1.2.0 版本开始支持。'."\n" - .'> - 参考鸿蒙角标 [addNum 字段说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145)。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'LiveViewPayload' => [ - 'description' => '鸿蒙实况窗数据结构 [LiveViewPayload](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/push-scenariozed-api-request-param-V13#section66881469306) 的 JSON 字符串,开发接入请参考文档[HarmonyOS 实况窗推送指南](https://help.aliyun.com/document_detail/2982112.html)', - 'type' => 'string', - 'example' => '{'."\n" - .' "activityId": 1,'."\n" - .' "operation": 0,'."\n" - .' "event": "TAXI",'."\n" - .' "status": "DRIVER_ON_THE_WAY",'."\n" - .' "activityData": {'."\n" - .' "notificationData": {'."\n" - .' "type": 3'."\n" - .' }'."\n" - .' }'."\n" - .'}', - ], - 'Sound' => [ - 'title' => '鸿蒙自定义铃声文件名', - 'description' => '鸿蒙自定义铃声文件名', - 'type' => 'string', - 'example' => 'music.mp3', - ], - 'SoundDuration' => [ - 'title' => '自定义消息通知铃声时长,单位秒,范围 [1,60],铃声时长不足时将会循环播放', - 'description' => '自定义消息通知铃声时长,单位秒,范围 [1,60],铃声时长不足时将会循环播放', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', + 'items' => ['description' => '文本。', 'type' => 'string', 'example' => '1. 您有一个事项待处理'], ], + 'ExtParameters' => ['description' => '设定通知消息的自定义扩展属性,用于传递额外的业务数据。'."\n" + ."\n" + .'> 参数必须以标准的JSON Map 格式传入,格式错误将导致解析失败。', 'type' => 'string', 'example' => '{"key": "value"}'], + 'TestMessage' => ['description' => '启用测试消息。'."\n" + ."\n" + .'> - 详情参考鸿蒙推送参数 [TestMessage](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212)', 'type' => 'boolean', 'example' => 'true'], + 'ReceiptId' => ['description' => '鸿蒙通道回执 ID,该回执 ID 可以在鸿蒙通道推送运营平台的回执参数配置中查看。'."\n" + ."\n" + .'> - 如果在鸿蒙通道推送运营平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云 EMAS 移动推送控制台中配置鸿蒙通道默认回执 ID。'."\n" + .'> - 详情参见鸿蒙官网 [pushOptions.receiptId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212)', 'type' => 'string', 'example' => 'RCPB***DFD5'], + 'ExtensionPush' => ['description' => '启用鸿蒙通知扩展。'."\n" + ."\n" + .'> - 通知扩展消息需要先在鸿蒙官网申请权限才能发送,相关内容请参考[鸿蒙文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-send-extend-noti-V5)发送通知扩展消息。'."\n" + .'> - 鸿蒙 SDK 1.2.0 版本开始支持。', 'type' => 'boolean', 'example' => 'false'], + 'ExtensionExtraData' => ['description' => '通知扩展消息的额外数据。'."\n" + ."\n" + .'> - 发送鸿蒙通知扩展消息时有效。'."\n" + .'> - 概念上等同鸿蒙通知扩展消息的 extraData 字段,具体定义参考鸿蒙 [ExtensionPayload](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section161192514234) 说明。'."\n" + .'> - 鸿蒙 SDK 1.2.0 版本开始支持。', 'type' => 'string', 'example' => 'text'], + 'BadgeSetNum' => ['description' => '鸿蒙应用角标设置数字。'."\n" + ."\n" + .'> - 参考鸿蒙角标 [setNum 字段](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145)说明。'."\n" + .'> - 鸿蒙 SDK 1.2.0 版本开始支持。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], + 'BadgeAddNum' => ['description' => '鸿蒙应用角标累加数字。'."\n" + ."\n" + .'> - 鸿蒙 SDK 1.2.0 版本开始支持。'."\n" + .'> - 参考鸿蒙角标 [addNum 字段说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145)。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], + 'LiveViewPayload' => ['description' => '鸿蒙实况窗数据结构 [LiveViewPayload](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/push-scenariozed-api-request-param-V13#section66881469306) 的 JSON 字符串,开发接入请参考文档[HarmonyOS 实况窗推送指南](https://help.aliyun.com/document_detail/2982112.html)', 'type' => 'string', 'example' => '{'."\n" + .' "activityId": 1,'."\n" + .' "operation": 0,'."\n" + .' "event": "TAXI",'."\n" + .' "status": "DRIVER_ON_THE_WAY",'."\n" + .' "activityData": {'."\n" + .' "notificationData": {'."\n" + .' "type": 3'."\n" + .' }'."\n" + .' }'."\n" + .'}'], + 'Sound' => ['title' => '鸿蒙自定义铃声文件名', 'description' => '鸿蒙自定义铃声文件名', 'type' => 'string', 'example' => 'music.mp3'], + 'SoundDuration' => ['title' => '自定义消息通知铃声时长,单位秒,范围 [1,60],铃声时长不足时将会循环播放', 'description' => '自定义消息通知铃声时长,单位秒,范围 [1,60],铃声时长不足时将会循环播放', 'type' => 'integer', 'format' => 'int32', 'example' => '2'], ], ], 'Android' => [ 'description' => 'Android通知配置', 'type' => 'object', 'properties' => [ - 'VendorChannelActivity' => [ - 'description' => '指定点击通知后跳转的 Activity。'."\n" - ."\n" - .'><warning>当使用安卓厂商通道时,必须填写该选项。></warning>', - 'type' => 'string', - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - ], - 'ChannelId' => [ - 'description' => '设置Android app 的 channelId,需要与厂商App中的 channelId 能对应上。'."\n" - ."\n" - .'> - 因 OPPO 通知私信通道的 channel_id 与 app 的 channelId 相同,故 OPPO 通道推送时,channel_id 取此值。'."\n" - .'> - 华为、FCM、阿里云自有通道推送中,channel_id 取此值。'."\n" - .'> - 具体用途请参见常见问题: [Android 8.0 以上设备通知接收不到](https://help.aliyun.com/document_detail/67398.html)', - 'type' => 'string', - 'example' => '8.0up', - ], + 'VendorChannelActivity' => ['description' => '指定点击通知后跳转的 Activity。'."\n" + ."\n" + .'><warning>当使用安卓厂商通道时,必须填写该选项。></warning>', 'type' => 'string', 'example' => 'com.alibaba.cloudpushdemo.bizactivity'], + 'ChannelId' => ['description' => '设置Android app 的 channelId,需要与厂商App中的 channelId 能对应上。'."\n" + ."\n" + .'> - 因 OPPO 通知私信通道的 channel_id 与 app 的 channelId 相同,故 OPPO 通道推送时,channel_id 取此值。'."\n" + .'> - 华为、FCM、阿里云自有通道推送中,channel_id 取此值。'."\n" + .'> - 具体用途请参见常见问题: [Android 8.0 以上设备通知接收不到](https://help.aliyun.com/document_detail/67398.html)', 'type' => 'string', 'example' => '8.0up'], 'RenderStyle' => [ 'description' => '通知样式,取值为:'."\n" ."\n" @@ -679,27 +377,14 @@ .'- `3`:列表模式(支持华为、荣耀、小米、OPPO、自有通道)', 'type' => 'string', 'example' => '0', - 'enum' => [ - 'NORMAL', - 'BIG_TEXT', - 'BIG_PICTURE', - 'MULTI_LINE', - ], - ], - 'PictureUrl' => [ - 'description' => '大图模式下的图片 URL,当前支持:自有通道:安卓 SDK 3.6.0 及以上。', - 'type' => 'string', - 'example' => 'https://imag.example.com/image.png', - ], - 'ImageUrl' => [ - 'description' => '大图标 URL。 当前支持:'."\n" - ."\n" - .'- `华为 EMUI`(仅长文本模式、Inbox 模式下适用)。'."\n" - .'- `荣耀 Magic UI`(仅长文本模式下适用)。'."\n" - .'- `自有通道`(安卓 SDK3.5.0 及以上)。', - 'type' => 'string', - 'example' => 'https://imag.example.com/image.png', + 'enum' => ['NORMAL', 'BIG_TEXT', 'BIG_PICTURE', 'MULTI_LINE'], ], + 'PictureUrl' => ['description' => '大图模式下的图片 URL,当前支持:自有通道:安卓 SDK 3.6.0 及以上。', 'type' => 'string', 'example' => 'https://imag.example.com/image.png'], + 'ImageUrl' => ['description' => '右侧图标 URL。 当前支持:'."\n" + ."\n" + .'- `华为 EMUI`(仅长文本模式、Inbox 模式下适用)。'."\n" + .'- `荣耀 Magic UI`(仅长文本模式下适用)。'."\n" + .'- `自有通道`(安卓 SDK3.5.0 及以上)。', 'type' => 'string', 'example' => 'https://imag.example.com/image.png'], 'InboxContent' => [ 'description' => 'Inbox 模式下的正文,内容为合法的 JSON Array,且元素不超过 5 个。当前支持:'."\n" ."\n" @@ -709,76 +394,37 @@ .'- OPPO:ColorOS 5.0 以上'."\n" .'- 自有通道:安卓 SDK3.6.0 及以上', 'type' => 'array', - 'items' => [ - 'description' => '正文', - 'type' => 'string', - 'example' => '1. 第一条待处理事项', - ], - ], - 'NotifyId' => [ - 'description' => 'Android通知栏消息的唯一标识符,用于控制通知的覆盖和替换行为。相同NotifyId的新通知会自动覆盖旧通知。'."\n" - ."\n" - .'> 支持:华为、小米、OPPO、Vivo、魅族等厂商通道(FCM除外)', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '233856727', - ], - 'GroupId' => [ - 'description' => '消息分组,同一组消息在通知栏里只显示最新一条和当前该组接受到的消息总数目,不会展示所有消息也无法展开。当前支持:'."\n" - ."\n" - .'- 华为'."\n" - .'- 荣耀'."\n" - .'- 自有通道', - 'type' => 'string', - 'example' => 'group-1', - ], - 'ExtParameters' => [ - 'description' => 'Android 通知的自定义扩展属性。'."\n" - ."\n" - .'> - 参数必须以标准的JSON Map格式传入,格式错误将导致解析失败。', - 'type' => 'string', - 'example' => '{"key1":"value1"}', - ], - 'Music' => [ - 'description' => '华为厂商通道通知声音。指定存放在客户端项目 `app/src/main/res/raw/` 目录下的音频文件名,不需要携带文件格式后缀名。若不设置,则使用默认铃声。', - 'type' => 'string', - 'example' => 'alicloud_notification_sound', - ], - 'BadgeSetNum' => [ - 'description' => '设置角标数字固定值,取值范围[1~99]。'."\n" - ."\n" - .'> - 厂商通道推送仅华为、荣耀通道生效。 '."\n" - .'> - 阿里云自有通道推送时仅华为机型、荣耀机型与 vivo 机型上生效。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '4', - ], - 'BadgeAddNum' => [ - 'description' => '设置角标累加值,在原角标的基础上进行累加。'."\n" - ."\n" - .'> - 支持`华为`和`荣耀` 通道。'."\n" - .'> - `BadgeAddNum` 与 `BadgeSetNum` 同时存在时,以后者为准。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'BadgeActivity' => [ - 'description' => '角标设置应用入口 Activity 的全类名。'."\n" - ."\n" - .'> 仅华为/荣耀产商通道推送时有效', - 'type' => 'string', - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - ], - 'TestMessage' => [ - 'description' => '设置厂商通道通知类型:'."\n" - ."\n" - .'- `false`:正式通知(默认)。'."\n" - .'- `true`:测试通知。'."\n" - ."\n" - .'> 当前支持:华为通道、荣耀通道、vivo 通道、OPPO流体云。', - 'type' => 'boolean', - 'example' => 'false', + 'items' => ['description' => '正文', 'type' => 'string', 'example' => '1. 第一条待处理事项'], ], + 'NotifyId' => ['description' => 'Android通知栏消息的唯一标识符,用于控制通知的覆盖和替换行为。相同NotifyId的新通知会自动覆盖旧通知。', 'type' => 'integer', 'format' => 'int32', 'example' => '233856727'], + 'GroupId' => ['description' => '消息分组,同一组消息在通知栏里只显示最新一条和当前该组接受到的消息总数目,不会展示所有消息也无法展开。当前支持:'."\n" + ."\n" + .'- 华为厂商通道'."\n" + .'- 荣耀厂商通道'."\n" + .'- 自有通道 安卓 SDK3.9.1 及以下'."\n" + ."\n" + .'> 自有通道在安卓 SDK3.9.2 及以上的版本不再支持此参数', 'type' => 'string', 'example' => 'group-1'], + 'ExtParameters' => ['description' => 'Android 通知的自定义扩展属性。'."\n" + ."\n" + .'> - 参数必须以标准的JSON Map格式传入,格式错误将导致解析失败。', 'type' => 'string', 'example' => '{"key1":"value1"}'], + 'Music' => ['description' => '华为厂商通道通知声音。指定存放在客户端项目 `app/src/main/res/raw/` 目录下的音频文件名,不需要携带文件格式后缀名。若不设置,则使用默认铃声。', 'type' => 'string', 'example' => 'alicloud_notification_sound'], + 'BadgeSetNum' => ['description' => '设置角标数字固定值,取值范围[1~99]。'."\n" + ."\n" + .'> - 厂商通道推送仅华为、荣耀通道生效。 '."\n" + .'> - 阿里云自有通道推送时仅华为机型、荣耀机型与 vivo 机型上生效。', 'type' => 'integer', 'format' => 'int32', 'example' => '4'], + 'BadgeAddNum' => ['description' => '设置角标累加值,在原角标的基础上进行累加。'."\n" + ."\n" + .'> - 支持`华为`和`荣耀` 通道。'."\n" + .'> - `BadgeAddNum` 与 `BadgeSetNum` 同时存在时,以后者为准。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], + 'BadgeActivity' => ['description' => '角标设置应用入口 Activity 的全类名。'."\n" + ."\n" + .'> 仅华为/荣耀产商通道推送时有效', 'type' => 'string', 'example' => 'com.alibaba.cloudpushdemo.bizactivity'], + 'TestMessage' => ['description' => '设置厂商通道通知类型:'."\n" + ."\n" + .'- `false`:正式通知(默认)。'."\n" + .'- `true`:测试通知。'."\n" + ."\n" + .'> 当前支持:华为通道、荣耀通道、vivo 通道、OPPO流体云。', 'type' => 'boolean', 'example' => 'false'], 'Options' => [ 'description' => '通道详细配置。', 'type' => 'object', @@ -789,27 +435,13 @@ .'> 仅走阿里云自有通道时有效', 'type' => 'object', 'properties' => [ - 'CustomStyle' => [ - 'description' => 'Android 自定义通知栏样式,取值:1-100。'."\n" - ."\n" - .'> 需要客户端配置完成样式预设,参考文档[自定义通知样式接口](https://help.aliyun.com/document_detail/2834944.html)。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'Priority' => [ - 'description' => 'Android 通知在通知栏展示时排列位置的优先级。可取值: -2,-1,0,1,2。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'ThreadId' => [ - 'description' => '消息分组,同一组消息在通知栏里折叠展示,可展开,不同组通知分开展示。'."\n" - ."\n" - .'> 安卓 SDK3.9.2 及以上', - 'type' => 'string', - 'example' => 'order_ORD20231201001', - ], + 'CustomStyle' => ['description' => 'Android 自定义通知栏样式,取值:1-100。'."\n" + ."\n" + .'> 需要客户端配置完成样式预设,参考文档[自定义通知样式接口](https://help.aliyun.com/document_detail/2834944.html)。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], + 'Priority' => ['description' => 'Android 通知在通知栏展示时排列位置的优先级。可取值: -2,-1,0,1,2。', 'type' => 'integer', 'format' => 'int32', 'example' => '0'], + 'ThreadId' => ['description' => '消息分组,同一组消息在通知栏里折叠展示,可展开,不同组通知分开展示。'."\n" + ."\n" + .'> 安卓 SDK3.9.2 及以上', 'type' => 'string', 'example' => 'order_ORD20231201001'], 'OpenType' => [ 'description' => '点击通知后动作。可取值:'."\n" ."\n" @@ -819,23 +451,10 @@ .'- `NONE`:无跳转', 'type' => 'string', 'example' => 'APPLICATION', - 'enum' => [ - 'APPLICATION', - 'ACTIVITY', - 'URL', - 'NONE', - ], - ], - 'OpenActivity' => [ - 'description' => '设定点击通知打开的 activity。当 `OpenType` 取值为 `ACTIVITY`时有效.', - 'type' => 'string', - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - ], - 'OpenUrl' => [ - 'description' => 'Android 收到推送后,点击通知打开对应的 url。当 `OpenType` 取值为 `URL` 时有效。', - 'type' => 'string', - 'example' => 'www.example.com', + 'enum' => ['APPLICATION', 'ACTIVITY', 'URL', 'NONE'], ], + 'OpenActivity' => ['description' => '设定点击通知打开的 activity。当 `OpenType` 取值为 `ACTIVITY`时有效.', 'type' => 'string', 'example' => 'com.alibaba.cloudpushdemo.bizactivity'], + 'OpenUrl' => ['description' => 'Android 收到推送后,点击通知打开对应的 url。当 `OpenType` 取值为 `URL` 时有效。', 'type' => 'string', 'example' => 'www.example.com'], 'NotifyType' => [ 'description' => '通知的提醒方式。可取值:'."\n" ."\n" @@ -845,12 +464,7 @@ .'- `NONE`:静音', 'type' => 'string', 'example' => 'NONE', - 'enum' => [ - 'VIBRATE', - 'SOUND', - 'BOTH', - 'NONE', - ], + 'enum' => ['VIBRATE', 'SOUND', 'BOTH', 'NONE'], ], ], ], @@ -858,28 +472,20 @@ 'description' => '华为配置', 'type' => 'object', 'properties' => [ - 'ReceiptId' => [ - 'description' => '华为通道回执 ID,该回执 ID 可以在华为通道推送运营平台的回执参数配置中查看。'."\n" - ."\n" - .'> 如果在华为通道推送运营平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云 EMAS 移动推送控制台中配置华为通道默认回执 ID。', - 'type' => 'string', - 'example' => 'RCP4C123456', - ], - 'Category' => [ - 'description' => '作用一:完成[自分类权益](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835?#section3410731125514)申请后,用于标识消息类型,确定[消息提醒方式](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#ZH-CN_TOPIC_0000001149358835__p3850133955718),对特定类型消息加快发送,取值请参考华为推送官方文档的[消息分类标准](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section1076611477914),填写文档表格中的“云端通知 category 取值”或“本地通知 category 取值”。'."\n" - ."\n" - .'作用二:[申请特殊权限](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509)后,用于标识高优先级透传场景,取值如下:'."\n" - ."\n" - .'- `VOIP`:音视频通话'."\n" - .'- `PLAY_VOICE`:语音播报'."\n" - ."\n" - .'> - 对于“云端通知 category 取值”为“不涉及”的一概走阿里云自有通道'."\n" - .'> - 对于“本地通知 category 取值”为“不涉及”的一概走华为通道', - 'type' => 'string', - 'example' => 'VOIP', - ], + 'ReceiptId' => ['description' => '华为通道回执 ID,该回执 ID 可以在华为通道推送运营平台的回执参数配置中查看。'."\n" + ."\n" + .'> 如果在华为通道推送运营平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云 EMAS 移动推送控制台中配置华为通道默认回执 ID。', 'type' => 'string', 'example' => 'RCP4C123456'], + 'Category' => ['description' => '作用一:完成[自分类权益](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835?#section3410731125514)申请后,用于标识消息类型,确定[消息提醒方式](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#ZH-CN_TOPIC_0000001149358835__p3850133955718),对特定类型消息加快发送,取值请参考华为推送官方文档的[消息分类标准](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section1076611477914),填写文档表格中的“云端通知 category 取值”或“本地通知 category 取值”。'."\n" + ."\n" + .'作用二:[申请特殊权限](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509)后,用于标识高优先级透传场景,取值如下:'."\n" + ."\n" + .'- `VOIP`:音视频通话'."\n" + .'- `PLAY_VOICE`:语音播报'."\n" + ."\n" + .'> - 对于“云端通知 category 取值”为“不涉及”的一概走阿里云自有通道'."\n" + .'> - 对于“本地通知 category 取值”为“不涉及”的一概走华为通道', 'type' => 'string', 'example' => 'VOIP'], 'Urgency' => [ - 'description' => '华为通道透传消息投递优先级,取值如下:'."\n" + 'description' => '华为通道通知投递优先级,取值如下:'."\n" ."\n" .'- `HIGH`'."\n" .'- `NORMAL`'."\n" @@ -887,10 +493,7 @@ .'需要申请权限,具体请参见:[申请链接](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509)。', 'type' => 'string', 'example' => 'NORMAL', - 'enum' => [ - 'HIGH', - 'NORMAL', - ], + 'enum' => ['HIGH', 'NORMAL'], ], 'Importance' => [ 'description' => '设置 Huawei 通知消息分类 importance 参数,决定用户设备消息通知行为,取值如下:'."\n" @@ -902,10 +505,7 @@ 'type' => 'integer', 'format' => 'int32', 'example' => '0', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], ], 'BusinessType' => [ 'description' => '设置华为快通知参数'."\n" @@ -914,25 +514,18 @@ 'type' => 'integer', 'format' => 'int32', 'example' => '1', - 'enum' => [ - '0', - '1', - ], - ], - 'LiveNotificationPayload' => [ - 'description' => '华为安卓实况窗数据结构 [LiveNotificationPayload](https://developer.huawei.com/consumer/cn/doc/HMSCore-References/rest-live-0000001562939968#ZH-CN_TOPIC_0000001700850537__p195121620102511) 的 JSON 字符串,开发接入请参考文档[华为实况窗推送指南](https://help.aliyun.com/document_detail/2983768.html)', - 'type' => 'string', - 'example' => '{'."\n" - .' "activityId": 1,'."\n" - .' "operation": 1,'."\n" - .' "event": "TAXI",'."\n" - .' "activityData": {'."\n" - .' "notificationData": {'."\n" - .' "type": 3'."\n" - .' }'."\n" - .' }'."\n" - .'}', + 'enum' => ['0', '1'], ], + 'LiveNotificationPayload' => ['description' => '华为安卓实况窗数据结构 [LiveNotificationPayload](https://developer.huawei.com/consumer/cn/doc/HMSCore-References/rest-live-0000001562939968#ZH-CN_TOPIC_0000001700850537__p195121620102511) 的 JSON 字符串,开发接入请参考文档[华为实况窗推送指南](https://help.aliyun.com/document_detail/2983768.html)', 'type' => 'string', 'example' => '{'."\n" + .' "activityId": 1,'."\n" + .' "operation": 1,'."\n" + .' "event": "TAXI",'."\n" + .' "activityData": {'."\n" + .' "notificationData": {'."\n" + .' "type": 3'."\n" + .' }'."\n" + .' }'."\n" + .'}'], ], ], 'Honor' => [ @@ -949,10 +542,7 @@ 'type' => 'integer', 'format' => 'int32', 'example' => '0', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], ], ], ], @@ -960,13 +550,31 @@ 'description' => '小米配置', 'type' => 'object', 'properties' => [ - 'Channel' => [ - 'description' => '设置小米通知类型的 channelId,需要在小米平台申请,详见:[申请链接](https://dev.mi.com/console/doc/detail?pId=2422#_4)。'."\n" - ."\n" - .'> 小米通道单个应用最多可申请 8 个 channel,请提前做好规划。', - 'type' => 'string', - 'example' => 'michannel', - ], + 'Channel' => ['description' => '设置小米通知类型的 channelId,需要在小米平台申请,详见:[申请链接](https://dev.mi.com/console/doc/detail?pId=2422#_4)。'."\n" + ."\n" + .'> 小米通道单个应用最多可申请 8 个 channel,请提前做好规划。', 'type' => 'string', 'example' => 'michannel'], + 'FocusParam' => ['description' => '小米超级岛数据结构[miui.focus.param](https://dev.mi.com/xiaomihyperos/documentation/detail?pId=2131)的JSON字符串,开发接入请参考文档[小米超级岛推送指南](https://help.aliyun.com/zh/document_detail/3037956.html)', 'type' => 'string', 'example' => '{'."\n" + .' "param_v2": {'."\n" + .' "business": "taxi",'."\n" + .' "updatable": true,'."\n" + .' "orderId": "A580202509130712",'."\n" + .' "param_island": {'."\n" + .' "islandProperty": 1,'."\n" + .' "bigIslandArea": {'."\n" + .' "imageTextInfoLeft": {'."\n" + .' "type": 1'."\n" + .' }'."\n" + .' }'."\n" + .' }'."\n" + .' }'."\n" + .'}'], + 'FocusPics' => ['description' => '小米超级岛数据图片[miui.focus.pic_xxx](https://dev.mi.com/xiaomihyperos/documentation/detail?pId=2131)的JSON字符串,开发接入请参考文档[小米超级岛推送指南](https://help.aliyun.com/zh/document_detail/3037956.html)', 'type' => 'string', 'example' => '{'."\n" + .' "miui.focus.pic_ticker": "https://example.com/ticker.jpg",'."\n" + .' "miui.focus.pic_aod": "https://example.com/aod.jpg",'."\n" + .' "miui.focus.pic_imageText": "https://example.com/imageText.jpg"'."\n" + .'}'], + 'TemplateId' => ['description' => '小米私信模板 ID', 'type' => 'string', 'example' => 'P10645'], + 'TemplateParams' => ['description' => '小米私信模板参数,JSON 字符串', 'type' => 'string', 'example' => '{"keywords1":"Tom","keywords2":"phone"}'], ], ], 'Vivo' => [ @@ -995,28 +603,13 @@ .'详细请参考[vivo分类说明](https://dev.vivo.com.cn/documentCenter/doc/359#s-ef3qugc3)。', 'type' => 'string', 'example' => 'MARKETING', - 'enum' => [ - 'IM', - 'ACCOUNT', - 'DEVICE_REMINDER', - 'ORDER', - 'TODO', - 'SUBSCRIPTION', - 'NEWS', - 'CONTENT', - 'MARKETING', - 'SOCIAL', - ], - ], - 'ReceiptId' => [ - 'description' => 'Vivo厂商推送通道的消息回执标识符,用于接收推送结果回调通知。'."\n" - ."\n" - .'> - 查看位置:Vivo开放平台→ 推送服务 → 应用信息 → 回执配置'."\n" - .'> - 配置建议:优先在阿里云EMAS控制台配置默认回执ID'."\n" - .'> - 使用条件:仅当Vivo平台默认回执非阿里云回执时需要配置', - 'type' => 'string', - 'example' => '1232221', + 'enum' => ['IM', 'ACCOUNT', 'DEVICE_REMINDER', 'ORDER', 'TODO', 'SUBSCRIPTION', 'NEWS', 'CONTENT', 'MARKETING', 'SOCIAL'], ], + 'ReceiptId' => ['description' => 'Vivo厂商推送通道的消息回执标识符,用于接收推送结果回调通知。'."\n" + ."\n" + .'> - 查看位置:Vivo开放平台→ 推送服务 → 应用信息 → 回执配置'."\n" + .'> - 配置建议:优先在阿里云EMAS控制台配置默认回执ID'."\n" + .'> - 使用条件:仅当Vivo平台默认回执非阿里云回执时需要配置', 'type' => 'string', 'example' => '1232221'], 'Importance' => [ 'description' => '设置 vivo 通知消息分类,取值为:'."\n" ."\n" @@ -1027,11 +620,18 @@ 'type' => 'integer', 'format' => 'int32', 'example' => '0', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], ], + 'LiveMessage' => ['description' => 'vivo原子岛数据结构[liveMessage](https://dev.vivo.com.cn/documentCenter/doc/896#s-fdagzbd4)的JSON字符串,开发接入请参考文档[vivo原子岛推送指南](https://help.aliyun.com/zh/document_detail/3030718.html)', 'type' => 'string', 'example' => '{'."\n" + .' "operation": 0,'."\n" + .' "scene": "HEALTH_REGISTER",'."\n" + .' "templateType": 1,'."\n" + .' "showNotify": true,'."\n" + .' "changeRecord": 999,'."\n" + .' "capsuleData": {'."\n" + .' "bgColor": "#32d4d4"'."\n" + .' }'."\n" + .'}'], ], ], 'Oppo' => [ @@ -1060,18 +660,7 @@ .'详细请参考[vivo分类说明](https://open.oppomobile.com/new/developmentDoc/info?id=13189)。', 'type' => 'string', 'example' => 'NEWS', - 'enum' => [ - 'IM', - 'ACCOUNT', - 'DEVICE_REMINDER', - 'ORDER', - 'TODO', - 'SUBSCRIPTION', - 'NEWS', - 'CONTENT', - 'MARKETING', - 'SOCIAL', - ], + 'enum' => ['IM', 'ACCOUNT', 'DEVICE_REMINDER', 'ORDER', 'TODO', 'SUBSCRIPTION', 'NEWS', 'CONTENT', 'MARKETING', 'SOCIAL'], ], 'NotifyLevel' => [ 'description' => 'OPPO 通道通知栏消息提醒等级。可取值为:'."\n" @@ -1084,63 +673,39 @@ 'type' => 'integer', 'format' => 'int64', 'example' => '1', - 'enum' => [ - '1', - '2', - '16', - ], - ], - 'PrivateMsgTemplateId' => [ - 'description' => 'OPPO 私信模板 ID', - 'type' => 'string', - 'example' => '687557242b1634hzefs3d5013', - ], - 'PrivateTitleParameters' => [ - 'description' => 'OPPO 私信模版标题参数', - 'type' => 'string', - 'example' => '{"name": "张三"}', - ], - 'PrivateContentParameters' => [ - 'description' => 'OPPO 私信模版内容参数', - 'type' => 'string', - 'example' => '{'."\n" - .'"key1": "value1",'."\n" - .'"key2": "value2"'."\n" - .'}', - ], - 'IntelligentIntent' => [ - 'description' => 'OPPO流体云的意图共享数据结构[IntelligentIntent](https://open.oppomobile.com/documentation/page/info?id=13565)的JSON字符串,开发接入请参考文档[OPPO流体云推送指南](https://help.aliyun.com/document_detail/2997310.html)', - 'type' => 'string', - 'example' => '{'."\n" - .' "intentName": "Example.Progress",'."\n" - .' "identifier": "d71ebd3119877b12ecdb6c4fe96b068e",'."\n" - .' "timestamp": 1729485000989,'."\n" - .' "serviceId": {'."\n" - .' "launcher": "999800001",'."\n" - .' "fluidCloud": "999900001"'."\n" - .' },'."\n" - .' "intentAction": {'."\n" - .' "actionStatus": 0'."\n" - .' },'."\n" - .' "intentEntity": {'."\n" - .' "entityName": "TAXI"'."\n" - .' }'."\n" - .'}', - ], - 'DeleteIntentData' => [ - 'description' => 'OPPO流体云的意图删除数据结构[data](https://open.oppomobile.com/documentation/page/info?id=13578)的JSON字符串,当AndroidOppoIntelligentIntent参数已填写时此参数无效,开发接入请参考文档[OPPO流体云推送指南](https://help.aliyun.com/document_detail/2997310.html)', - 'type' => 'string', - 'example' => '{'."\n" - .' "intentName": "Example.Progress",'."\n" - .' "entityIds": ['."\n" - .' "A580202509130712"'."\n" - .' ],'."\n" - .' "serviceId": {'."\n" - .' "launcher": "999800001",'."\n" - .' "fluidCloud": "999900001"'."\n" - .' }'."\n" - .'}', + 'enum' => ['1', '2', '16'], ], + 'PrivateMsgTemplateId' => ['description' => 'OPPO 私信模板 ID', 'type' => 'string', 'example' => '687557242b1634hzefs3d5013'], + 'PrivateTitleParameters' => ['description' => 'OPPO 私信模版标题参数', 'type' => 'string', 'example' => '{"name": "张三"}'], + 'PrivateContentParameters' => ['description' => 'OPPO 私信模版内容参数', 'type' => 'string', 'example' => '{'."\n" + .'"key1": "value1",'."\n" + .'"key2": "value2"'."\n" + .'}'], + 'IntelligentIntent' => ['description' => 'OPPO流体云的意图共享数据结构[IntelligentIntent](https://open.oppomobile.com/documentation/page/info?id=13565)的JSON字符串,开发接入请参考文档[OPPO流体云推送指南](https://help.aliyun.com/document_detail/2997310.html)', 'type' => 'string', 'example' => '{'."\n" + .' "intentName": "Example.Progress",'."\n" + .' "identifier": "d71ebd3119877b12ecdb6c4fe96b068e",'."\n" + .' "timestamp": 1729485000989,'."\n" + .' "serviceId": {'."\n" + .' "launcher": "999800001",'."\n" + .' "fluidCloud": "999900001"'."\n" + .' },'."\n" + .' "intentAction": {'."\n" + .' "actionStatus": 0'."\n" + .' },'."\n" + .' "intentEntity": {'."\n" + .' "entityName": "TAXI"'."\n" + .' }'."\n" + .'}'], + 'DeleteIntentData' => ['description' => 'OPPO流体云的意图删除数据结构[data](https://open.oppomobile.com/documentation/page/info?id=13578)的JSON字符串,当AndroidOppoIntelligentIntent参数已填写时此参数无效,开发接入请参考文档[OPPO流体云推送指南](https://help.aliyun.com/document_detail/2997310.html)', 'type' => 'string', 'example' => '{'."\n" + .' "intentName": "Example.Progress",'."\n" + .' "entityIds": ['."\n" + .' "A580202509130712"'."\n" + .' ],'."\n" + .' "serviceId": {'."\n" + .' "launcher": "999800001",'."\n" + .' "fluidCloud": "999900001"'."\n" + .' }'."\n" + .'}'], ], ], 'Meizu' => [ @@ -1155,10 +720,7 @@ 'type' => 'integer', 'format' => 'int32', 'example' => '0', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], ], ], ], @@ -1172,128 +734,1016 @@ 'description' => '推送选项', 'type' => 'object', 'properties' => [ - 'UseChannels' => [ - 'description' => '指定发送通道,取值如下:'."\n" - ."\n" - .'- `accs` 阿里云自有通道'."\n" - .'- `huawei` 华为通道'."\n" - .'- `honor` 荣耀通道'."\n" - .'- `xiaomi` 小米通道'."\n" - .'- `oppo` OPPO 通道'."\n" - .'- `vivo` vivo 通道'."\n" - .'- `meizu` 魅族通道'."\n" - .'- `gcm` 谷歌 GCM 通道(旧版 HTTP)'."\n" - .'- `fcm` 谷歌 Firebase 通道(HTTP v1 API)'."\n" - .'- `apns` APNs 通道'."\n" - .'- `harmony` 鸿蒙通道'."\n" - ."\n" - .'> - 如果未配置此参数,则代表所有通道均可使用。'."\n" - .'> - 如果配置了此参数,则严格使用参数中的通道。'."\n" - .'> - 如果配置的通道和发送策略冲突(如 iOS 通知仅走 APNs 通道,但本参数中不包含 apns),则不实施发送。'."\n" - .'> - 若配置 gcm,则可以走谷歌 GCM 和 FCM 通道,若配置 fcm,则只能走谷歌 FCM 通道。', - 'type' => 'string', - 'example' => 'accs,apns', - ], - 'PushTime' => [ - 'description' => '指定消息的发送时间,最晚不超过7天。仅当 `Action` 参数为 `SCHEDULED_PUSH` 时有效。'."\n" - ."\n" - .'> 采用 ISO 8601 标准,使用 UTC 时间,格式为 yyyy-MM-ddTHH:mm:ssZ'."\n" - .'。', - 'type' => 'string', - 'example' => '2025-06-19T12:00:00Z', - ], - 'ExpireTime' => [ - 'description' => '设置消息的过期时间,过期后将不再发送,最长保存72小时。'."\n" - ."\n" - .'> * 采用 ISO 8601 标准,使用 UTC 时间,格式为 YYYY-MM-DDThh:mm:ssZ。'."\n" - .'> * 过期时间需满足:ExpireTime > PushTime + 3秒(3秒为网络和系统延迟的冗余)。'."\n" - .'> * 建议:单推过期时间不低于1分钟,全推或批量推送不低于10分钟。'."\n" - ."\n\n" - .'><notice>对于透传消息,不设置过期时间即代表只发在线,当设备不在线时,丢弃消息。></notice>', - 'type' => 'string', - 'example' => '2025-06-21T12:00:00Z', - ], - 'JobKey' => [ - 'description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](https://help.aliyun.com/document_detail/434651.html)。', - 'type' => 'string', - 'example' => 'jobkey1727749697913', - ], - 'Trim' => [ - 'description' => '是否自动对过长标题、内容进行截断。'."\n" - ."\n" - .'>仅支持明确限制标题、内容的厂商通道,对APNs、华为、荣耀通道等不限制标题、内容,只限制总请求体大小的不适用。', - 'type' => 'boolean', - 'example' => 'false', - ], + 'UseChannels' => ['description' => '指定发送通道,取值如下:'."\n" + ."\n" + .'- `accs` 阿里云自有通道'."\n" + .'- `huawei` 华为通道'."\n" + .'- `honor` 荣耀通道'."\n" + .'- `xiaomi` 小米通道'."\n" + .'- `oppo` OPPO 通道'."\n" + .'- `vivo` vivo 通道'."\n" + .'- `meizu` 魅族通道'."\n" + .'- `fcm` 谷歌 Firebase 通道(HTTP v1 API)'."\n" + .'- `apns` APNs 通道'."\n" + .'- `harmony` 鸿蒙通道'."\n" + ."\n" + .'> - 如果未配置此参数,则代表所有通道均可使用。'."\n" + .'> - 如果配置了此参数,则严格使用参数中的通道。'."\n" + .'> - 如果配置的通道和发送策略冲突(如 iOS 通知仅走 APNs 通道,但本参数中不包含 apns),则不实施发送。', 'type' => 'string', 'example' => 'accs,apns'], + 'PushTime' => ['description' => '指定消息的发送时间,最晚不超过7天。仅当 `Action` 参数为 `SCHEDULED_PUSH` 时有效。'."\n" + ."\n" + .'> 采用 ISO 8601 标准,使用 UTC 时间,格式为 yyyy-MM-ddTHH:mm:ssZ'."\n" + .'。', 'type' => 'string', 'example' => '2025-06-19T12:00:00Z'], + 'ExpireTime' => ['description' => '设置消息的过期时间,过期后将不再发送,最长保存72小时。'."\n" + ."\n" + .'> * 采用 ISO 8601 标准,使用 UTC 时间,格式为 YYYY-MM-DDThh:mm:ssZ。'."\n" + .'> * 过期时间需满足:ExpireTime > PushTime + 3秒(3秒为网络和系统延迟的冗余)。'."\n" + .'> * 建议:单推过期时间不低于1分钟,全推或批量推送不低于10分钟。'."\n" + ."\n\n" + .'><notice>对于透传消息,不设置过期时间即代表只发在线,当设备不在线时,丢弃消息。></notice>', 'type' => 'string', 'example' => '2025-06-21T12:00:00Z'], + 'JobKey' => ['description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](https://help.aliyun.com/document_detail/434651.html)。', 'type' => 'string', 'example' => 'jobkey1727749697913'], + 'Trim' => ['description' => '是否自动对过长标题、内容进行截断。'."\n" + ."\n" + .'>仅支持明确限制标题、内容的厂商通道,对APNs、华为、荣耀通道等不限制标题、内容,只限制总请求体大小的不适用。', 'type' => 'boolean', 'example' => 'false'], 'Sms' => [ 'description' => '补发短信。'."\n" ."\n" .'> 当前仅支持 `Android` 和 `HarmonyOS` 设备', 'type' => 'object', 'properties' => [ - 'TemplateName' => [ - 'description' => '短信模板名,可以在短信模板管理界面获取,是系统分配的名称,而非开发者设置的名称。', - 'type' => 'string', - 'example' => 'SMS_123456789', - ], - 'SignName' => [ - 'description' => '短信签名。', + 'TemplateName' => ['description' => '短信模板名,可以在短信模板管理界面获取,是系统分配的名称,而非开发者设置的名称。', 'type' => 'string', 'example' => 'SMS_123456789'], + 'SignName' => ['description' => '短信签名。', 'type' => 'string', 'example' => '某某科技'], + 'Params' => ['description' => '短信模板的变量名键值对。', 'type' => 'string', 'example' => 'key1=value1&key2=value2'], + 'DelaySecs' => ['description' => '触发短信的延迟时间,单位:秒。'."\n" + ."\n" + .'若使用短信联动必须设置,推荐设置为 15 秒以上,最大不超过 3 天,避免短信和推送的重复。'."\n" + ."\n" + .'> 短信联动时,ExpireTime 参数失效,通知失效时间以 DelaySecs 参数计算,失效时间为当前时间加上 DelaySecs 时间。', 'type' => 'integer', 'format' => 'int64', 'example' => '150'], + 'SendPolicy' => [ + 'description' => '短信发送策略。', 'type' => 'string', - 'example' => '某某科技', + 'enumValueTitles' => ['PUSH_NOT_RECEIVED' => '推送未收到时触发', 'USER_NOT_OPENED' => '用户未打开时触发'], + 'example' => 'PUSH_NOT_RECEIVED', + 'enum' => ['PUSH_NOT_RECEIVED', 'USER_NOT_OPENED'], ], - 'Params' => [ - 'description' => '短信模板的变量名键值对。', + ], + ], + 'MessageId' => ['description' => '用于标识消息的唯一ID。仅当 `Action` 参数为 `CONTINUOUS_PUSH` 时有效。', 'type' => 'integer', 'format' => 'int64', 'example' => '1174754033128****'], + ], + ], + ], + ], + ], + ], + 'apis' => [ + 'BindAlias' => [ + 'summary' => '绑定设备和别名的关系。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], + ], + [ + 'name' => 'DeviceId', + 'in' => 'query', + 'schema' => ['description' => '设备在推送的唯一标识,32位,数字和小写字母组合。', 'type' => 'string', 'required' => true, 'example' => 'e2ba19de97604f55b16557673****'], + ], + [ + 'name' => 'AliasName', + 'in' => 'query', + 'schema' => ['description' => '需要绑定的别名。'."\n" + ."\n" + .'一次最多只能绑定10个,多个alias用逗号分隔,alias最长128个字节(中文算三个字节),一个设备最多绑定128个别名,一个别名最多允许绑定128个设备。', 'type' => 'string', 'required' => true, 'example' => 'test_alias'], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '159E4422-6624-4750-8943-DFD98D34858C'], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'Invalid%s.Format', 'errorMessage' => 'The specified %s format is invalid.', 'description' => '参数格式错误。'], + ['errorCode' => 'Invalid%s.BytesExceed', 'errorMessage' => 'The specified %s exceeds the %s bytes limit.', 'description' => '参数的字节数超限。'], + ['errorCode' => 'AccountDisabled', 'errorMessage' => 'Your account is not enabled.', 'description' => '功能未启用。'], + ['errorCode' => 'Invalid%s.NotFound', 'errorMessage' => 'The specified %s is not found.', 'description' => ''], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', 'description' => '服务端错误,建议重试,仍然失败则提工单'], + ], + ], + 'title' => '绑定别名', + 'description' => '一次最多绑定10个别名,绑定之后立即生效。', + 'changeSet' => [ + ['createdAt' => '2021-12-27T12:34:38.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BindAlias'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:BindAlias', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"159E4422-6624-4750-8943-DFD98D34858C\\"\\n}","errorExample":""},{"type":"xml","example":"<BindAliasResponse>\\n <RequestId>159E4422-6624-4750-8943-DFD98D34858C</RequestId>\\n</BindAliasResponse>","errorExample":""}]', + ], + 'BindPhone' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => [ + 'description' => 'AppKey信息。', + 'type' => 'integer', + 'format' => 'int64', + 'required' => true, + 'enumValueTitles' => [], + 'example' => '27725900', + ], + ], + [ + 'name' => 'DeviceId', + 'in' => 'query', + 'schema' => [ + 'description' => '设备的唯一标识,32位,数字和小写字母组合。', + 'type' => 'string', + 'required' => true, + 'enumValueTitles' => [], + 'example' => 'eb5f741d83d04d34807d229999eefa52', + ], + ], + [ + 'name' => 'PhoneNumber', + 'in' => 'query', + 'schema' => [ + 'description' => '电话号码。', + 'type' => 'string', + 'required' => true, + 'enumValueTitles' => [], + 'example' => '1381111****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '0D1126F0-F8FF-513D-BAFA-F140447BDED4'], + ], + 'description' => '', + ], + ], + ], + 'title' => '绑定手机号码', + 'summary' => '绑定设备与手机号的关系。', + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:39.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:39.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:39.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BindPhone'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:BindPhone', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0D1126F0-F8FF-513D-BAFA-F140447BDED4\\"\\n}","errorExample":""},{"type":"xml","example":"<BindPhoneResponse>\\n <RequestId>0D1126F0-F8FF-513D-BAFA-F140447BDED4</RequestId>\\n</BindPhoneResponse>","errorExample":""}]', + ], + 'BindTag' => [ + 'summary' => '将TAG绑定到指定的设备目标,TAG绑定在10分钟内生效。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], + ], + [ + 'name' => 'ClientKey', + 'in' => 'query', + 'schema' => ['description' => '设备ID,最多支持1000个。', 'type' => 'string', 'required' => true, 'example' => 'e2ba19de97604f55b16557673****'], + ], + [ + 'name' => 'KeyType', + 'in' => 'query', + 'schema' => [ + 'description' => 'ClientKey的类型。可取值:'."\n" + ."\n" + .'- **DEVICE**:设备', + 'type' => 'string', + 'required' => true, + 'enumValueTitles' => [], + 'example' => 'DEVICE', + 'enum' => ['DEVICE', 'ACCOUNT', 'ALIAS'], + ], + ], + [ + 'name' => 'TagName', + 'in' => 'query', + 'schema' => ['description' => '绑定的标签,多个标签用英文逗号(,)分隔,单次最多绑定 10 个标签。'."\n" + .'标签名称不超过 128 个字符(中文计 1 个字符),每个应用最多创建 10,000 个标签,单个设备可绑定多个标签。'."\n" + ."\n" + .'><notice>'."\n" + ."\n" + .'不建议单个标签绑定超过 10 万台设备,否则推送处理时间会延长,影响响应速度。'."\n" + .'如需对大量设备推送,建议采用以下方式:'."\n" + ."\n" + .'- 使用全推功能直接推送给所有设备'."\n" + .'- 将设备集合拆分到多个细粒度标签,分批调用推送接口'."\n" + ."\n" + .'></notice>'."\n" + ."\n" + .'> - 重复绑定相同标签时系统将自动去重'."\n" + .'> - 设备卸载应用后,相关标签会自动解绑(存在一定延迟)', 'type' => 'string', 'required' => true, 'example' => 'test_tag,test_tag2'], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '82FD0A09-5BB8-40FB-8221-9A11FE92D620'], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'AccountDisabled', 'errorMessage' => 'Your account is not enabled.', 'description' => '功能未启用。'], + ['errorCode' => 'Invalid%s.Format', 'errorMessage' => 'The specified %s format is invalid.', 'description' => '参数格式错误。'], + ['errorCode' => 'Invalid%s.NotFound', 'errorMessage' => 'The specified %s is not found.', 'description' => ''], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', 'description' => '服务端错误,建议重试,仍然失败则提工单'], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"82FD0A09-5BB8-40FB-8221-9A11FE92D620\\"\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<BindTagResponse>\\n <RequestId>82FD0A09-5BB8-40FB-8221-9A11FE92D620</RequestId>\\n</BindTagResponse>","errorExample":""}]', + 'title' => '绑定标签', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2021-12-27T12:34:38.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BindTag'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:BindTag', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + ], + 'CancelPush' => [ + 'summary' => '取消某次尚未执行的定时推送任务。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], + ], + [ + 'name' => 'MessageId', + 'in' => 'query', + 'schema' => ['description' => '某次推送任务的消息ID。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '501029'], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], + ], + 'description' => '', + ], + ], + ], + 'title' => '取消定时推送任务', + 'changeSet' => [ + ['createdAt' => '2024-01-22T14:27:53.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:53.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:53.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CancelPush'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:CancelPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<PushMessageToAndroidResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n</PushMessageToAndroidResponse>","errorExample":""}]', + ], + 'CheckCertificate' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'maximum' => '1000000000', 'minimum' => '0', 'example' => '23267207'], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], + 'Android' => [ + 'description' => '判断AppKey代表的是否是Android app:'."\n" + .'- true'."\n" + .'- false', + 'type' => 'boolean', + 'enumValueTitles' => ['true' => 'true', 'false' => 'false'], + 'example' => 'false', + ], + 'IOS' => [ + 'description' => '判断AppKey代表的是否是iOS app:'."\n" + .'- true'."\n" + .'- false', + 'type' => 'boolean', + 'enumValueTitles' => ['true' => 'true', 'false' => 'false'], + 'example' => 'true', + ], + 'ProductionCertInfo' => [ + 'description' => '访问生产环境的证书信息。', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => '证书状态,取值:'."\n" + ."\n" + .'- **EXPIRED**:已过期'."\n" + .'- **NOT_CONFIGURED**:未配置'."\n" + .'- **NO_PASSWORD**:未配置密码'."\n" + .'- **OK**:正常'."\n" + .'- **REVOKED**:已撤销', 'type' => 'string', - 'example' => 'key1=value1&key2=value2', + 'enumValueTitles' => ['REVOKED' => 'REVOKED', 'NO_PASSWORD' => 'NO_PASSWORD', 'EXPIRED' => 'EXPIRED', 'NOT_CONFIGURED' => 'NOT_CONFIGURED', 'OK' => 'OK'], + 'example' => 'OK', ], - 'DelaySecs' => [ - 'description' => '触发短信的延迟时间,单位:秒。'."\n" - ."\n" - .'若使用短信联动必须设置,推荐设置为 15 秒以上,最大不超过 3 天,避免短信和推送的重复。'."\n" + 'ExipreTime' => ['description' => '证书过期时间。', 'type' => 'integer', 'format' => 'int64', 'example' => '1764561600000'], + ], + ], + 'DevelopmentCertInfo' => [ + 'description' => '访问开发环境/沙箱环境的证书信息。', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => '证书状态,取值:'."\n" ."\n" - .'> 短信联动时,ExpireTime 参数失效,通知失效时间以 DelaySecs 参数计算,失效时间为当前时间加上 DelaySecs 时间。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '150', - ], - 'SendPolicy' => [ - 'description' => '短信发送策略。', + .'- **EXPIRED**:已过期'."\n" + .'- **NOT_CONFIGURED**:未配置'."\n" + .'- **NO_PASSWORD**:未配置密码'."\n" + .'- **OK**:正常'."\n" + .'- **REVOKED**:已撤销', 'type' => 'string', - 'enumValueTitles' => [ - 'PUSH_NOT_RECEIVED' => '推送未收到时触发', - 'USER_NOT_OPENED' => '用户未打开时触发', - ], - 'example' => 'PUSH_NOT_RECEIVED', - 'enum' => [ - 'PUSH_NOT_RECEIVED', - 'USER_NOT_OPENED', + 'enumValueTitles' => ['REVOKED' => 'REVOKED', 'NO_PASSWORD' => 'NO_PASSWORD', 'EXPIRED' => 'EXPIRED', 'NOT_CONFIGURED' => 'NOT_CONFIGURED', 'OK' => 'OK'], + 'example' => 'EXPIRED', + ], + 'ExipreTime' => ['description' => '证书过期时间。', 'type' => 'integer', 'format' => 'int64', 'example' => '1470024000000'], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'Invalid%s.NotFound', 'errorMessage' => 'The specified %s is not found.', 'description' => ''], + ['errorCode' => 'AccountDisabled', 'errorMessage' => 'Your account is not enabled.', 'description' => '功能未启用。'], + ['errorCode' => 'PermissionDenied', 'errorMessage' => 'The specified AppKey is not authorized.', 'description' => ''], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', 'description' => '服务端错误,建议重试,仍然失败则提工单'], + ], + ], + 'title' => '查询证书状态', + 'summary' => '检测指定app的iOS证书过期时间及当前证书状态。', + 'description' => '- 如果返回的ExpireTime大于当前时间戳,并不代表证书一定可用,还需检查Status是否为OK。'."\n" + .'- REVOKED来源于APNs服务器,如果证书处于REVOKED状态时,则对应环境中至少有一条推向APNs的推送失败。', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CheckCertificate'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:CheckCertificate', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"Android\\": false,\\n \\"IOS\\": true,\\n \\"ProductionCertInfo\\": {\\n \\"Status\\": \\"OK\\",\\n \\"ExipreTime\\": 1764561600000\\n },\\n \\"DevelopmentCertInfo\\": {\\n \\"Status\\": \\"EXPIRED\\",\\n \\"ExipreTime\\": 1470024000000\\n }\\n}","errorExample":""}]', + ], + 'CheckDevice' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => true, + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23419851'], + ], + [ + 'name' => 'DeviceId', + 'in' => 'query', + 'schema' => ['description' => '设备在推送的唯一标识,32位,数字和小写字母组合。', 'type' => 'string', 'required' => true, 'example' => 'ae296f3b04a58a05b30c95f****'], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Available' => ['description' => '是否可用。', 'type' => 'boolean', 'example' => 'true'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], + ], + 'description' => '', + ], + ], + ], + 'staticInfo' => [ + 'substitutions' => ['Push::2016-08-01::CheckDevices'], + ], + 'title' => '验证设备有效性', + 'summary' => '验证指定设备的有效性。', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2022-03-31T08:27:33.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CheckDevice'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:CheckDevice', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Available\\": true,\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<CheckDevicesResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <DeviceCheckInfos>\\n <DeviceCheckInfo>\\n <DeviceId>ae296f3b04a58a05b30c95f1****</DeviceId>\\n <Available>true</Available>\\n </DeviceCheckInfo>\\n <DeviceCheckInfo>\\n <DeviceId>ae296f3b04a58a05b30c95f1****</DeviceId>\\n <Available>true</Available>\\n </DeviceCheckInfo>\\n <DeviceCheckInfo>\\n <DeviceId>ae296f3b04a58a05b30c95f1****</DeviceId>\\n <Available>false</Available>\\n </DeviceCheckInfo>\\n </DeviceCheckInfos>\\n</CheckDevicesResponse>","errorExample":""}]', + ], + 'CheckDevices' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23419851'], + ], + [ + 'name' => 'DeviceIds', + 'in' => 'query', + 'schema' => ['description' => '设备在推送的唯一标识,32位,数字和小写字母组合,多个设备查询用“,”分隔,一次最多查100个。', 'type' => 'string', 'required' => true, 'example' => 'ae296f3b04a58a05b30c95f****,ae296f3b04a58a05b30c95f****,ae296f3b04a58a05b30c95f****'], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], + 'DeviceCheckInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DeviceCheckInfo' => [ + 'description' => '批量设备有效性检查结果。', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'DeviceId' => ['description' => '设备ID。', 'type' => 'string', 'example' => 'ae296f3b04a58a05b30c95f****'], + 'Available' => ['description' => '是否可用。', 'type' => 'boolean', 'example' => 'true'], + ], + 'description' => '', ], ], ], + 'description' => '', ], - 'MessageId' => [ - 'description' => '用于标识消息的唯一ID。仅当 `Action` 参数为 `CONTINUOUS_PUSH` 时有效。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1174754033128****', + ], + 'description' => '', + ], + ], + ], + 'title' => '批量检查设备有效性', + 'summary' => '验证指定的一组设备的有效性。', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-01-24T15:21:51.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-24T15:21:51.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-24T15:21:51.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CheckDevices'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:CheckDevices', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"DeviceCheckInfos\\": {\\n \\"DeviceCheckInfo\\": [\\n {\\n \\"DeviceId\\": \\"ae296f3b04a58a05b30c95f****\\",\\n \\"Available\\": true\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<CheckDevicesResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <DeviceCheckInfos>\\n <DeviceCheckInfo>\\n <DeviceId>ae296f3b04a58a05b30c95f1****</DeviceId>\\n <Available>true</Available>\\n </DeviceCheckInfo>\\n <DeviceCheckInfo>\\n <DeviceId>ae296f3b04a58a05b30c95f1****</DeviceId>\\n <Available>true</Available>\\n </DeviceCheckInfo>\\n <DeviceCheckInfo>\\n <DeviceId>ae296f3b04a58a05b30c95f1****</DeviceId>\\n <Available>false</Available>\\n </DeviceCheckInfo>\\n </DeviceCheckInfos>\\n</CheckDevicesResponse>","errorExample":""}]', + ], + 'CompleteContinuouslyPush' => [ + 'summary' => '手动结束持续推送任务。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], + ], + [ + 'name' => 'MessageId', + 'in' => 'query', + 'schema' => ['description' => '消息ID。'."\n" + ."\n" + .'调用Push接口,设置Target为TBD,调用后获得的MessageId。它代表了一个已经保存到推送系统的消息。', 'type' => 'string', 'required' => true, 'example' => '500131'], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'MessageId' => ['description' => '标志一次推送的消息ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '500131'], + ], + 'description' => '', + ], + ], + ], + 'title' => '完成持续推送任务', + 'description' => '若不调用此接口以手动形式结束持续推送任务,持续推送任务将会在到达过期时间时自动结束。', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-01-22T14:27:53.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CompleteContinuouslyPush'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:CompleteContinuouslyPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"MessageId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"RequestId\\": \\"500131\\"\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<ContinuouslyPushResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId> \\n <MessageId>500131</MessageId>\\n</ContinuouslyPushResponse>","errorExample":""}]', + ], + 'ContinuouslyPush' => [ + 'summary' => '执行预定义的持续推送任务。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'paid'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'example' => '23267207'], + ], + [ + 'name' => 'MessageId', + 'in' => 'query', + 'schema' => ['description' => '消息ID。'."\n" + ."\n" + .'调用Push接口,设置Target为TBD,调用后获得的MessageId。它代表了一个已经保存到推送系统的消息。', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => '500131'], + ], + [ + 'name' => 'Target', + 'in' => 'query', + 'schema' => [ + 'description' => '推送目标:'."\n" + ."\n" + .'- **DEVICE**:根据设备推送'."\n" + .'- **ACCOUNT**:根据账号推送'."\n" + .'- **ALIAS**:根据别名推送'."\n" + ."\n" + .'持续推送只支持这3种目标类型。', + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'DEVICE', + 'enum' => ['DEVICE', 'ACCOUNT', 'ALIAS'], + ], + ], + [ + 'name' => 'TargetValue', + 'in' => 'query', + 'schema' => ['description' => '根据Target来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" + ."\n" + .'- Target=DEVICE,值如`deviceid1,deviceid2`(最多支持1000个)。'."\n" + .'- Target=ACCOUNT,值如`account1,account2`(最多支持1000个)。'."\n" + .'- Target=ALIAS,值如`alias1,alias2`(最多支持1000个)。', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'a692961a92534047ad3625****'], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'MessageId' => ['description' => '标志一次推送的消息ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '500131'], + ], + 'description' => '', + ], + ], + ], + 'title' => '持续推送', + 'description' => '本接口是用于解决[Push高级推送接口](~~2249916~~)中,无论是按设备推、按账号推、按别名推,在单次调用中都存在目标个数上限的问题。'."\n" + ."\n" + .'- 使用持续推送意味着业务场景是要往大量设备上,发送同一条消息。这时候,应当合理调用持续推送接口,每次调用,聚合一组设备进行推送(目前按设备推、按账号推、按别名推,单次推送目标个数上限是1000)。我们会限制在同一个 MessageId 上推送的总次数为10000 。如确实需要更高限额,请联系技术支持评估具体场景。'."\n" + ."\n" + .'- 使用这个接口前,需要调用Push接口,将Target设置为TBD(To Be Determined),填入消息内容,调用获得该消息在推送系统中的MessageId。然后,可以基于这个MessageId,重复调用此接口,指定不同的目标组,将此消息推送到这些目标上。'."\n" + ."\n" + .'- 调用Push接口设置目标为TBD获得MessageId后,这个消息默认会在推送系统保存24个小时,过期之前,可以随时使用本接口进行指定目标推送。过期后不再允许推送。超出总次数上限后不再允许推送。'."\n" + ."\n" + .'- 每次调用本接口指定设备时,消息都是立即推出,不支持设置定时推送。', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## Java示例代码'."\n" + .'```'."\n" + .'ContinuouslyPushRequest continuouslyPushRequest = new ContinuouslyPushRequest();'."\n" + .'continuouslyPushRequest.setAppKey(appKey);'."\n" + .'// 设置持续推送的消息Id'."\n" + .'continuouslyPushRequest.setMessageId("500131");'."\n" + .'// 指定推送目标'."\n" + .'// 可以继续用同一个`MessageId`,调用此接口指定其它设备,继续推送'."\n" + .'continuouslyPushRequest.setTarget("DEVICE");'."\n" + .'continuouslyPushRequest.setTargetValue("a692961a92534047ad362575f31f57b7");'."\n" + .'ContinuouslyPushResponse continuouslyPushResponse = client.getAcsResponse(continuouslyPushRequest);'."\n" + .'System.out.printf("RequestId: %s, MessageId: %s\\n",'."\n" + .' continuouslyPushResponse.getRequestId(), continuouslyPushResponse.getMessageId());'."\n" + .'```', + 'changeSet' => [ + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ContinuouslyPush'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:ContinuouslyPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"MessageId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"RequestId\\": \\"500131\\"\\n}","errorExample":""},{"type":"xml","example":"\\n<ContinuouslyPushResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId> \\n <MessageId>500131</MessageId>\\n</ContinuouslyPushResponse>","errorExample":""}]', + ], + 'ListSummaryApps' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREemasASSZZG'], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], + 'SummaryAppInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SummaryAppInfo' => [ + 'description' => 'app详情,SummaryAppInfo组成的集合。', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'AppKey' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'example' => '23****07'], + 'AppName' => ['description' => '应用的名称。', 'type' => 'string', 'example' => 'abc'], + ], + 'description' => '', + ], + ], + ], + 'description' => '', ], ], + 'description' => '', ], ], ], + 'staticInfo' => [ + 'substitutions' => ['Mhub::2017-08-25::ListApps'], + ], + 'title' => '查询用户已创建的app列表', + 'summary' => '查询云账号下所有app的列表。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListSummaryApps'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'mpush:ListSummaryApps', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"SummaryAppInfos\\": {\\n \\"SummaryAppInfo\\": [\\n {\\n \\"AppKey\\": 0,\\n \\"AppName\\": \\"abc\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<ListSummaryAppsResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <SummaryAppInfos>\\n <AppName>abc</AppName>\\n </SummaryAppInfos>\\n</ListSummaryAppsResponse>","errorExample":""}]', ], - ], - 'apis' => [ - 'Push' => [ - 'summary' => '高级推送接口,推送通知或者消息到不同设备端,本接口提供丰富的推送定制参数,以实现不同场景下的推送行为。', - 'methods' => [ - 'post', - 'get', + 'ListTags' => [ + 'summary' => '查询app的标签列表,最多返回100条记录。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '6EEF262B-EA7D-41DC-89B9-20F3D1E28194'], + 'TagInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'TagInfo' => [ + 'description' => 'Tag列表。', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TagName' => ['description' => 'Tag名称。', 'type' => 'string', 'example' => 'test_tag2'], + ], + 'description' => '', + ], + ], + ], + 'description' => '', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 500 => [ + ['errorCode' => 'Timeout', 'errorMessage' => 'The request processing is timeout.', 'description' => '请求处理超时。'], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', 'description' => '服务端错误,建议重试,仍然失败则提工单'], + ], ], + 'title' => '获取标签列表', + 'changeSet' => [ + ['createdAt' => '2024-01-24T15:21:50.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-24T15:21:50.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-24T15:21:50.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListTags'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'mpush:ListTags', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"6EEF262B-EA7D-41DC-89B9-20F3D1E28194\\",\\n \\"TagInfos\\": {\\n \\"TagInfo\\": [\\n {\\n \\"TagName\\": \\"test_tag2\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'MassPush' => [ + 'summary' => '批量给不同的设备推送不同的消息/通知。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -1305,24 +1755,998 @@ 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREemasBNY9P0', - 'FEATUREemasTZ8VEZ', + 'abilityTreeNodes' => ['FEATUREemasBNY9P0', 'FEATUREemasTZ8VEZ'], + ], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'example' => '23267207'], + ], + [ + 'name' => 'PushTask', + 'in' => 'formData', + 'style' => 'repeatList', + 'schema' => [ + 'description' => '独立推送任务组成的数组。', + 'type' => 'array', + 'items' => [ + 'description' => '独立推送任务。', + 'type' => 'object', + 'properties' => [ + 'PushType' => [ + 'description' => '推送类型。取值:'."\n" + ."\n" + .'- MESSAGE:表示消息。'."\n" + .'- NOTICE:表示通知。', + 'type' => 'string', + 'required' => true, + 'enumValueTitles' => ['MESSAGE' => 'MESSAGE', 'NOTICE' => 'NOTICE'], + 'example' => 'MESSAGE', + ], + 'DeviceType' => [ + 'description' => '设备类型,取值范围为:'."\n" + ."\n" + .'- HARMONY:鸿蒙设备'."\n" + .'- iOS:iOS设备'."\n" + .'- ANDROID:Android设备'."\n" + .'- ALL:当AppKey为旧版本双端应用时,代表同时推送Android和iOS设备;当AppKey为新版本单端应用时,效果和指定该应用类型对应的设备类型一样。', + 'type' => 'string', + 'required' => true, + 'enumValueTitles' => ['ALL' => 'ALL', 'ANDROID' => 'ANDROID', 'iOS' => 'iOS'], + 'example' => 'HARMONY', + ], + 'Target' => [ + 'description' => '推送目标。可取值:'."\n" + ."\n" + .'- DEVICE:根据设备推送。'."\n" + .'- ACCOUNT:根据账号推送。'."\n" + .'- ALIAS:根据别名推送。', + 'type' => 'string', + 'required' => true, + 'enumValueTitles' => ['ACCOUNT' => 'ACCOUNT', 'ALIAS' => 'ALIAS', 'DEVICE' => 'DEVICE'], + 'example' => 'DEVICE', + ], + 'TargetValue' => ['description' => '根据Target来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" + ."\n" + .'- Target=DEVICE,值如`deviceid1,deviceid2`(最多支持1000个)。'."\n" + .'- Target=ACCOUNT,值如`account1,account2`(最多支持1000个)。'."\n" + .'- Target=ALIAS,值如`alias1,alias2`(最多支持1000个)。', 'type' => 'string', 'required' => true, 'example' => 'deviceid1,deviceid2'], + 'StoreOffline' => ['description' => '离线消息/通知是否保存。StoreOffline默认设置为false。'."\n" + ."\n" + .'若保存,在推送时候用户不在线,在过期时间(ExpireTime)内用户上线时会被再次发送。ExpireTime默认为72小时。iOS通知走APNs链路,不受StoreOffline影响。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], + 'SendChannels' => ['description' => '指定发送通道,取值如下:'."\n" + ."\n" + .'- accs:阿里云自有通道'."\n" + .'- huawei:华为通道'."\n" + .'- honor:荣耀通道'."\n" + .'- xiaomi:小米通道'."\n" + .'- oppo:OPPO通道'."\n" + .'- vivo:vivo通道'."\n" + .'- meizu:魅族通道'."\n" + .'- gcm:谷歌GCM通道(旧版HTTP)'."\n" + .'- fcm: 谷歌Firebase通道(HTTP v1 API)'."\n" + .'- apns:APNs通道'."\n" + .'- harmony: 鸿蒙通道'."\n" + ."\n" + .'>- 如果未配置此参数,则代表所有通道均可使用。'."\n" + .'>- 如果配置了此参数,则严格使用参数中的通道。'."\n" + .'>- 如果配置的通道和发送策略冲突(如iOS通知仅走APNs通道,但本参数中不包含apns),则不实施发送。'."\n" + .'>- 若配置gcm,则可以走谷歌GCM和FCM通道,若配置fcm,则只能走谷歌FCM通道。', 'type' => 'string', 'required' => false, 'example' => 'accs,huawei,xiaomi'], + 'PushTime' => ['description' => '用于定时发送。不设置缺省是立即发送。'."\n" + ."\n" + .'时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ。', 'type' => 'string', 'required' => false, 'example' => '2019-02-20T00:00:00Z'], + 'ExpireTime' => ['description' => '离线消息/通知的过期时间,和StoreOffline配合使用,过期则不会再被发送,最长保存72小时。默认为72小时。'."\n" + ."\n" + .'时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ,过期时间不能小于当前时间或者定时发送时间加上3秒(`ExpireTime > PushTime+3秒`),3秒是为了冗余网络和系统延迟造成的误差。建议单推不小于1分钟,全推、批量推送不少于10分钟。', 'type' => 'string', 'required' => false, 'example' => '2019-02-20T00:00:00Z'], + 'JobKey' => ['description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](~~434651~~)。', 'type' => 'string', 'required' => false, 'example' => '123'], + 'Title' => ['description' => '推送时通知/消息的标题,长度限制:200字节。'."\n" + .'在Android推送和Harmony推送时必填;在iOS推送通知时非必填,如果填写,则:'."\n" + .'* iOS 10+通知显示标题。'."\n" + .'* iOS 8.2 <= iOS系统 < iOS 10:替换通知应用名称。', 'type' => 'string', 'required' => false, 'example' => 'title'], + 'Body' => ['description' => 'Android和Harmony推送时通知的内容/消息的内容;iOS消息/通知内容,推送的内容大小是有限制的,参见[产品限制](~~92832~~)。', 'type' => 'string', 'required' => false, 'example' => 'hello'], + 'Trim' => ['description' => '是否自动对过长标题、内容进行截断。'."\n" + .'注:仅支持明确限制标题、内容的厂商通道,对APNs、华为、荣耀通道等不限制标题、内容,只限制总请求体大小的不适用。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], + 'iOSApnsEnv' => [ + 'description' => 'iOS的通知是通过APNs中心来发送的,需要填写对应的环境信息。'."\n" + ."\n" + .'- DEV:开发环境,适用于Xcode直接安装调试的应用。'."\n" + .'- PRODUCT:生产环境,适用于 App Store、TestFlight、Ad Hoc 及企业分发的应用。', + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => ['DEV' => 'DEV', 'PRODUCT' => 'PRODUCT'], + 'example' => 'DEV', + ], + 'iOSRemind' => ['description' => '消息推送时设备不在线(即与移动推送的服务端的长连接通道不通),则这条推送会做为通知,通过苹果的APNs通道送达一次。'."\n" + ."\n" + .'> 离线消息转通知仅适用于生产环境。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], + 'iOSSubtitle' => ['description' => 'iOS通知副标题内容(iOS 10+)。', 'type' => 'string', 'required' => false, 'example' => 'subtitle'], + 'iOSRemindBody' => ['description' => 'iOS消息转通知时使用的iOS通知内容,仅当iOSApnsEnv=PRODUCT && iOSRemind为true时有效。', 'type' => 'string', 'required' => false, 'example' => 'ios通知body'], + 'iOSMusic' => ['description' => 'iOS通知声音。指定存放在app bundle或沙盒Library/Sounds目录下的音频文件名,请参见:iOS推送如何设定通知声音。'."\n" + ."\n" + .'若指定为空串(””),通知为静音;若不设置,默认填充default为系统提示音。', 'type' => 'string', 'required' => false, 'example' => '””'], + 'iOSBadge' => ['description' => 'iOS应用图标右上角角标。'."\n" + ."\n" + .'> 若iOSBadgeAutoIncrement设置为True,则此项必须为空。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0'], + 'iOSBadgeAutoIncrement' => ['description' => '是否开启角标自增功能,默认为false。'."\n" + ."\n" + .'>当该项为true时,iOSBadge必须为空。'."\n" + ."\n" + .'角标自增功能由推送服务端维护每个设备的角标计数,需要用户使用V1.9.5以上版本的SDK,并且需要用户主动同步角标数字到服务端。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], + 'iOSSilentNotification' => ['description' => '是否开启iOS静默通知。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], + 'iOSMutableContent' => ['description' => 'iOS通知处理扩展标记(iOS 10+)。如果设为true,则APNs推送的通知在弹出前,可先到达Extension进行处理。静默通知时,必须设为true。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], + 'iOSNotificationCategory' => ['description' => '指定iOS通知Category(iOS 10+)。', 'type' => 'string', 'required' => false, 'example' => 'ios'], + 'iOSNotificationCollapseId' => ['description' => '设备收到有相同CollapseId的消息,会合并成一条。设备不在线,连续发相同CollapseId的消息,通知栏只会显示一条,iOS 10+支持设置此参数。', 'type' => 'string', 'required' => false, 'example' => 'ZD2011'], + 'iOSNotificationThreadId' => ['description' => '通过该属性对iOS的远程通知进行分组,标记折叠的组别识别名。仅支持iOS 12.0+版本。', 'type' => 'string', 'required' => false, 'example' => 'abc'], + 'iOSInterruptionLevel' => [ + 'description' => '中断级别,取值:'."\n" + ."\n" + .'- passive:系统在不点灯、不播放声音的情况下将通知添加到通知列表中。'."\n" + ."\n" + .'- active:系统立即显示通知,点亮屏幕,并可以播放声音。'."\n" + ."\n" + .'- time-sensitive:系统立即呈现通知,点亮屏幕,并可以播放声音,但不会突破系统通知控制。'."\n" + ."\n" + .'- critical:系统立即显示通知,屏幕亮起,并绕过静音开关播放声音。'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => ['critical' => 'critical', 'time-sensitive' => 'time-sensitive', 'active' => 'active', 'passive' => 'passive'], + 'example' => 'active', + ], + 'iOSRelevanceScore' => ['description' => '摘要突出显示分数。取值范围:\\[0,1\\]的浮点数。', 'type' => 'number', 'format' => 'double', 'required' => false, 'example' => '0.01'], + 'iOSExtParameters' => ['description' => 'iOS通知的扩展属性。'."\n" + ."\n" + .'iOS10+可以在此指定富媒体推送通知的资源Url:`{"attachment": "https://xxxx.xxx/notification_pic.png"} `。该参数要以JSON map的格式传入,否则会解析出错。', 'type' => 'string', 'required' => false, 'example' => '{"attachment": "https://xxxx.xxx/notification_pic.png"} '], + 'iOSLiveActivityEvent' => [ + 'description' => '启动、更新、结束实时活动。'."\n" + ."\n" + .'- 枚举:start | update | end', + 'type' => 'string', + 'required' => false, + 'example' => 'start', + 'enum' => ['start', 'update', 'end'], + ], + 'iOSLiveActivityId' => ['description' => '由设备上报到用户服务器的Live Activity ID,Live Activity的唯一标识符。', 'type' => 'string', 'required' => false, 'example' => '66B94673-B32E-4CA7-863C-3E523054FD46'], + 'iOSLiveActivityAttributesType' => ['description' => '待启动的Live Activity类型。'."\n" + .'> iOSLiveActivityEvent为start时必填', 'type' => 'string', 'required' => false, 'example' => 'OrderActivityAttributes'], + 'iOSLiveActivityAttributes' => ['description' => 'JSON字符串,灵动岛推送透传静态参数。包含静态的用户自定义信息,如产品编号、订单信息等。'."\n" + ."\n" + .'> iOSLiveActivityEvent为start时必填', 'type' => 'string', 'required' => false, 'example' => '{"orderId": "12345", "product": "Shoes"}'], + 'iOSLiveActivityContentState' => ['description' => '灵动岛推送透传动态参数,包含实时更新信息,如价格、库存变化等', 'type' => 'string', 'required' => false, 'example' => '{"status": "delivered", "estimatedArrival": "2023-12-31T12:00:00Z"}'], + 'iOSLiveActivityDismissalDate' => ['description' => '结束的Live Activity在锁屏上会保留到该指定时间,最长为4小时。', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1743131967'], + 'iOSLiveActivityStaleDate' => ['description' => '秒级时间戳,标记该活动的内容过期时间。', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1743131967'], + 'AndroidNotifyType' => [ + 'description' => '通知的提醒方式。可取值:'."\n" + ."\n" + .'- **VIBRATE**:振动(默认值)'."\n" + .'- **SOUND**:声音'."\n" + .'- **BOTH**:声音和振动'."\n" + .'- **NONE**:静音', + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => ['SOUND' => 'SOUND', 'NONE' => 'NONE', 'VIBRATE' => 'VIBRATE', 'BOTH' => 'BOTH'], + 'example' => 'VIBRATE', + ], + 'AndroidRemind' => ['description' => '推送类型为消息时设备不在线,则这条推送会使用辅助弹窗功能。默认值为false,仅当PushType=MESSAGE时生效。'."\n" + ."\n" + .'如果消息转通知推送成功,收到通知是展示的数据为服务端设置的AndroidPopupTitle和AndroidPopupBody参数值,点击通知在辅助弹窗的onSysNoticeOpened方法中获取到的数据是服务端设置的Title和Body参数值。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], + 'AndroidOpenType' => [ + 'description' => '点击通知后动作。可取值:'."\n" + ."\n" + .'- APPLICATION:打开应用(默认值)'."\n" + .'- ACTIVITY:打开应用AndroidActivity'."\n" + .'- URL:打开URL'."\n" + .'- NONE:无跳转', + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => ['APPLICATION' => 'APPLICATION', 'NONE' => 'NONE', 'ACTIVITY' => 'ACTIVITY', 'URL' => 'URL'], + 'example' => 'APPLICATION', + ], + 'AndroidActivity' => ['description' => '设定通知打开的activity。'."\n" + ."\n" + .'仅当PushTask.N.AndroidOpenType=”Activity”时传入,如:`com.alibaba.cloudpushdemo.bizactivity`。', 'type' => 'string', 'required' => false, 'example' => 'com.alibaba.cloudpushdemo.bizactivity'], + 'AndroidOpenUrl' => ['description' => 'Android收到推送后打开对应的url。仅当PushTask.N.AndroidOpenType=”URL”时传入。', 'type' => 'string', 'required' => false, 'example' => 'https://xxxx.xxx'], + 'AndroidPopupActivity' => ['description' => '指定点击通知后跳转的Activity。', 'type' => 'string', 'required' => false, 'example' => 'com.alibaba.cloudpushdemo.bizactivity'], + 'AndroidPopupTitle' => ['description' => '辅助弹窗模式下标题内容。AndroidPopupActivity参数不为空时,该参数必填。 '."\n" + ."\n" + .'长度限制:50个字符,中英文都算一个字符。'."\n" + ."\n" + .'如使用厂商通道,则需同时符合厂商通道的限制,具体内容参见:[Android端辅助通道推送限制](~~165253~~)。', 'type' => 'string', 'required' => false, 'example' => 'hello'], + 'AndroidPopupBody' => ['description' => '辅助弹窗模式下Body内容。AndroidPopupActivity参数不为空时,该参数必填。'."\n" + ."\n" + .'长度限制:200个字符,中英文都算一个字符。'."\n" + ."\n" + .'如使用厂商通道,则需同时符合厂商通道的限制,具体内容参见:[Android端辅助通道推送限制](~~165253~~)。', 'type' => 'string', 'required' => false, 'example' => 'hello'], + 'AndroidRenderStyle' => ['description' => '通知样式,取值为:'."\n" + .'- **0**:标准模式(默认)'."\n" + .'- **1**:长文本模式(支持华为、荣耀、小米、OPPO、魅族、自有通道)'."\n" + .'- **2**:大图模式(支持自有通道,不支持小米机型)'."\n" + .'- **3**:列表模式(支持华为、荣耀、小米、OPPO、自有通道)'."\n" + .'> 若使用非标准模式,此参数必须提供。', 'type' => 'string', 'required' => false, 'example' => '1'], + 'AndroidBigTitle' => ['description' => '长文本模式下的标题,长度限制:200个字节(1个汉字算作3字节)。'."\n" + ."\n" + .'- 当前仅支持荣耀通道和华为通道EMUI11及以上版本。'."\n" + ."\n" + .'- 若长文本模式下未提供此参数,则从Title、AndroidPopupTitle里取第一个非空值。', 'type' => 'string', 'required' => false, 'example' => '示例长标题'], + 'AndroidBigBody' => ['description' => '长文本模式下的body,长度限制:1000字节(1个汉字算作3字节),发送时受具体厂商通道的限制。'."\n" + ."\n" + .'当前支持:'."\n" + .'- 华为:EMUI10及以上'."\n" + .'- 荣耀:Magic UI 4.0及以上'."\n" + .'- 小米:MIUI10及以上'."\n" + .'- OPPO:ColorOS5.0以上'."\n" + .'- 魅族:Flyme'."\n" + .'- 自有通道:安卓SDK3.6.0及以上'."\n" + ."\n" + .'若长文本模式下未提供此参数,则从Body、AndroidPopupBody里取第一个非空值。', 'type' => 'string', 'required' => false, 'example' => '示例长文本'], + 'AndroidBigPictureUrl' => ['description' => '大图模式下的图片URL,当前支持:自有通道:安卓SDK3.6.0及以上。', 'type' => 'string', 'required' => false, 'example' => 'https://imag.example.com/image.png'], + 'AndroidXiaomiBigPictureUrl' => ['description' => '该参数已废弃,小米从 2023.08 开始,官方在新设备/系统已经不再支持推送时动态设置小图标、右侧图标、大图片功能。', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => 'https://f6.market.xiaomi.com/download/MiPass/aaa/bbb.png'], + 'AndroidImageUrl' => ['description' => '右侧图标URL。当前支持:'."\n" + .'- 华为EMUI(仅长文本模式、Inbox模式下适用)'."\n" + .'- 荣耀Magic UI(仅长文本模式下适用)'."\n" + .'- 自有通道:安卓SDK3.5.0及以上', 'type' => 'string', 'required' => false, 'example' => 'https://imag.example.com/image.png'], + 'AndroidXiaomiImageUrl' => ['description' => '该参数已废弃,小米从 2023.08 开始,官方在新设备/系统已经不再支持推送时动态设置小图标、右侧图标、大图片功能。', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => 'https://imag.example.com/image.png'], + 'AndroidInboxBody' => ['description' => 'Inbox模式下的正文,内容为合法的JSON Array,且元素不超过5个。当前支持:'."\n" + ."\n" + .'- 华为:EMUI9及以上'."\n" + .'- 荣耀:Magic UI 4.0及以上'."\n" + .'- 小米:MIUI10及以上'."\n" + .'- OPPO:ColorOS 5.0以上'."\n" + .'- 自有通道:安卓SDK3.6.0及以上', 'type' => 'string', 'required' => false, 'example' => '["第一行","第二行"]'], + 'AndroidNotificationBarType' => ['description' => 'Android自定义通知栏样式,取值:1-100。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2'], + 'AndroidNotificationBarPriority' => ['description' => 'Android通知在通知栏展示时排列位置的优先级。可取值: -2,-1,0,1,2。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0'], + 'AndroidNotificationNotifyId' => ['description' => '标识每条消息在通知显示时的唯一标识,不同的通知栏消息可以相同的NotifyId,实现新的通知栏消息覆盖老的。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '100001'], + 'AndroidNotificationChannel' => ['description' => 'Android app的channelId,需要与app中的channelId能对应上。'."\n" + .'- 设置NotificationChannel参数,具体用途请参见[常见问题:Android 8.0以上设备通知接收不到](~~67398~~)。'."\n" + .'- 因OPPO通知私信通道的channel_id与app的channelId相同,故OPPO通道推送时,channel_id取此值。'."\n" + .'- 华为、FCM、阿里云自有通道推送中,channel_id取此值。', 'type' => 'string', 'required' => false, 'example' => '1'], + 'AndroidNotificationHuaweiChannel' => [ + 'description' => '设置Huawei通知消息分类importance参数,决定用户设备消息通知行为,取值如下:'."\n" + ."\n" + .'- LOW:资讯营销类消息'."\n" + .'- NORMAL:服务与通讯类消息'."\n" + ."\n" + .'>- 当前华为通道建议使用AndroidMessageHuaweiCategory进行通知分类,可不再使用AndroidNotificationHuaweiChannel。'."\n" + .'>- 需要在Huawei平台申请,[申请链接](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section893184112272)。', + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => ['LOW' => 'LOW', 'NORMAL' => 'NORMAL'], + 'example' => 'LOW', + ], + 'AndroidNotificationHonorChannel' => [ + 'description' => '设置荣耀通知消息分类importance参数,决定用户设备消息通知行为,取值如下:'."\n" + ."\n" + .'- LOW:资讯营销类消息'."\n" + ."\n" + .'- NORMAL:服务与通讯类消息'."\n" + ."\n" + .'需要在荣耀平台申请,[申请链接](https://developer.honor.com/cn/docs/11002/guides/notification-class#%E8%87%AA%E5%88%86%E7%B1%BB%E6%9D%83%E7%9B%8A%E7%94%B3%E8%AF%B7)。', + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => ['LOW' => 'LOW', 'NORMAL' => 'NORMAL'], + 'example' => 'LOW', + ], + 'AndroidNotificationXiaomiChannel' => ['description' => '设置小米通知类型的channelId,需要在小米平台申请,详见:[申请链接](https://dev.mi.com/console/doc/detail?pId=2422#_4)。'."\n" + .'>- 小米通道单个应用最多可申请8个channel,请提前做好规划。', 'type' => 'string', 'required' => false, 'example' => 'michannel'], + 'AndroidNotificationVivoChannel' => [ + 'description' => '设置vivo通知消息分类,取值为:'."\n" + ."\n" + .'- 0:运营类消息(默认)'."\n" + .'- 1:系统类消息'."\n" + ."\n" + .'>- 当前vivo通道建议使用AndroidMessageVivoCategory进行通知分类,可不再使用AndroidNotificationVivoChannel。'."\n" + .'>- 需要在vivo平台申请,详见:[申请链接](https://dev.vivo.com.cn/documentCenter/doc/359)。', + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => ['0', '1'], + 'example' => '0', + ], + 'AndroidNotificationGroup' => ['description' => '消息分组,同一组消息在通知栏里只显示最新一条和当前该组接受到的消息总数目,不会展示所有消息也无法展开。当前支持:'."\n" + ."\n" + .'- 华为厂商通道'."\n" + .'- 荣耀厂商通道'."\n" + .'- 自有通道 安卓 SDK3.9.1 及以下'."\n" + ."\n" + .'> 自有通道在安卓 SDK3.9.2 及以上的版本不再支持此参数', 'type' => 'string', 'required' => false, 'example' => 'group-1'], + 'AndroidNotificationThreadId' => ['description' => '消息分组,同一组消息在通知栏里折叠展示,可展开,不同组通知分开展示。当前支持:'."\n" + ."\n" + .'- 自有通道 安卓 SDK3.9.2 及以上', 'type' => 'string', 'required' => false, 'example' => 'thread-1'], + 'AndroidExtParameters' => ['description' => '设定通知的扩展属性。当推送类型PushType设置为MESSAGE消息类型时,该属性不生效。'."\n" + ."\n" + .'该参数要以JSON map的格式传入,否则会解析出错。', 'type' => 'string', 'required' => false, 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}'], + 'AndroidMessageHuaweiUrgency' => [ + 'description' => '华为通道通知投递优先级,取值如下:'."\n" + ."\n" + .'- HIGH'."\n" + ."\n" + .'- NORMAL'."\n" + ."\n" + .'需要申请权限,具体请参见:[申请链接](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509)。', + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => ['HIGH' => 'HIGH', 'NORMAL' => 'NORMAL'], + 'example' => 'HIGH', + ], + 'AndroidMessageHuaweiCategory' => ['description' => '作用一:完成[自分类权益申请](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835?#section3410731125514)后,用于标识消息类型,确定[消息提醒方式](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#ZH-CN_TOPIC_0000001149358835__p3850133955718),对特定类型消息加快发送,取值请参考华为推送官方文档的[消息分类标准](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section1076611477914),填写文档表格中的“云端通知category取值”或“本地通知category取值”。'."\n" + ."\n" + .'作用二:[申请特殊权限](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509)后,用于标识高优先级透传场景,取值如下:'."\n" + .'- VOIP:音视频通话'."\n" + .'- PLAY_VOICE:语音播报'."\n" + ."\n" + .'> 对于“云端通知category取值”为“不涉及”的一概走阿里云自有通道,对于“本地通知category取值”为“不涉及”的一概走华为通道。', 'type' => 'string', 'required' => false, 'example' => 'SUBSCRIPTION'], + 'AndroidMessageOppoCategory' => ['description' => 'OPPO将消息分类:通讯与服务、内容与营销两个类别进行管理。'."\n" + ."\n" + .'通讯与服务(需申请权限):'."\n" + .'- IM:即时聊天、音频、视频通话'."\n" + .'- ACCOUNT:个人账号与资产变化'."\n" + .'- DEVICE_REMINDER:个人设备提醒'."\n" + .'- ORDER:个人订单/物流状态变化'."\n" + .'- TODO:个人日程/待办'."\n" + .'- SUBSCRIPTION:个人订阅'."\n" + ."\n" + .'内容与营销:'."\n" + .'- NEWS:新闻资讯'."\n" + .'- CONTENT:内容推荐'."\n" + .'- MARKETING:平台活动'."\n" + .'- SOCIAL:社交动态'."\n" + ."\n" + .'详细请参考[OPUSH消息分类细则](https://open.oppomobile.com/new/developmentDoc/info?id=13189)', 'type' => 'string', 'required' => false, 'example' => 'MARKETING'], + 'AndroidMessageOppoNotifyLevel' => ['description' => 'OPPO通道通知栏消息提醒等级。可取值为:'."\n" + .'- 1:通知栏'."\n" + .'- 2:通知栏、锁屏、铃声、振动(通讯与服务类消息默认通知级别)'."\n" + .'- 16:通知栏、锁屏、铃声、振动、横幅(需申请权限)'."\n" + ."\n" + .'> 使用AndroidMessageOppoNotifyLevel参数时,必须同时传AndroidMessageOppoCategory参数。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1'], + 'AndroidMessageVivoCategory' => ['description' => 'vivo将消息分为:系统消息、运营消息两个类别进行管理。 '."\n" + ."\n" + .'系统消息:'."\n" + .'- IM:即时消息'."\n" + .'- ACCOUNT:账号与资产'."\n" + .'- TODO:日程待办'."\n" + .'- DEVICE_REMINDER:设备信息'."\n" + .'- ORDER:订单与物流'."\n" + .'- SUBSCRIPTION:订阅提醒'."\n" + ."\n" + .'运营消息:'."\n" + .'- NEWS:新闻'."\n" + .'- CONTENT:内容推荐'."\n" + .'- MARKETING:运营活动'."\n" + .'- SOCIAL:社交动态'."\n" + .'> 详细请参考[分类说明](https://dev.vivo.com.cn/documentCenter/doc/359#s-ef3qugc3)', 'type' => 'string', 'required' => false, 'example' => 'TODO'], + 'AndroidTargetUserType' => [ + 'description' => '设置厂商通道通知类型:'."\n" + .'- **0**:正式通知(默认)。'."\n" + .'- **1**:测试通知。'."\n" + ."\n" + .'>- 本参数配置后等价于同时配置AndroidHuaweiTargetUserType、AndroidHonorTargetUserType、AndroidVivoPushMode、AndroidOppoIntentEnv四个参数,具体厂商通道的对应参数能覆盖本参数。'."\n" + .'>- 当前支持:华为通道、荣耀通道、vivo通道、OPPO流体云。', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'enum' => ['0', '1'], + ], + 'AndroidHuaweiTargetUserType' => [ + 'description' => '设置华为通道通知类型:'."\n" + .'- **0**:正式通知(默认)。'."\n" + .'- **1**:测试通知。'."\n" + ."\n" + .'> 每个应用每日可发送该测试通知500条且不受每日单设备推送数量上限要求。', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'enumValueTitles' => ['0', '1'], + 'example' => '1', + 'enum' => ['0', '1'], + ], + 'AndroidHonorTargetUserType' => [ + 'description' => '设置荣耀通道通知类型:'."\n" + .'- **0**:正式通知(默认)。'."\n" + .'- **1**:测试通知。'."\n" + ."\n" + .'> 每个应用每日可发送该测试通知1000条且不受每日单设备推送数量上限要求。', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'enum' => ['0', '1'], + ], + 'AndroidVivoPushMode' => [ + 'description' => '设置vivo通道通知类型:'."\n" + .'- **0**:正式推送(默认)。'."\n" + .'- **1**:测试推送。'."\n" + ."\n" + .'> 测试推送请事先在vivo控制台配置测试设备。测试设备RegId可在设备启动日志中搜索“onReceiveRegId regId”获得。', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'enumValueTitles' => ['0', '1'], + 'example' => '1', + 'enum' => ['0', '1'], + ], + 'AndroidOppoIntentEnv' => [ + 'description' => '设置OPPO流体云推送环境'."\n" + .'- **0**:正式环境(默认)。'."\n" + .'- **1**:测试环境。'."\n" + ."\n" + .'> OPPO流体云测试环境需要参考[环境搭建](https://open.oppomobile.com/documentation/page/info?id=13590)在客户端搭建', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'enum' => ['0', '1'], + ], + 'AndroidHuaweiBusinessType' => [ + 'description' => '设置华为快通知参数'."\n" + .'- **0**:发送华为普通通知(默认)。'."\n" + .'- **1**:发送华为快通知。', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'enum' => ['0', '1'], + ], + 'AndroidHuaweiReceiptId' => ['description' => '华为通道回执ID,该回执ID可以在华为通道推送运营平台的回执参数配置中查看。'."\n" + ."\n" + .'> 如果在华为通道推送运营平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云EMAS移动推送控制台中配置华为通道默认回执ID。', 'type' => 'string', 'required' => false, 'example' => 'RCP4C123456'], + 'AndroidVivoReceiptId' => ['description' => 'vivo通道回执ID,该回执ID可以在vivo开放平台推送服务的应用信息中查看。'."\n" + ."\n" + .'> 如果在vivo开放平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云EMAS移动推送控制台中配置vivo通道默认回执ID。', 'type' => 'string', 'required' => false, 'example' => '123'], + 'AndroidBadgeClass' => ['description' => '角标设置应用入口Activity的全类名'."\n" + ."\n" + .'> 仅华为/荣耀产商通道推送时有效', 'type' => 'string', 'required' => false, 'example' => 'com.alibaba.cloudpushdemo.bizactivity'."\n"], + 'AndroidBadgeAddNum' => ['description' => '设置角标累加值,在原角标的基础上进行累加,取值范围[1~99]。'."\n" + .'> 仅华为/荣耀厂商通道推送时有效。AndroidBadgeAddNum 与 AndroidBadgeSetNum 同时存在时,以AndroidBadgeSetNum为准', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'default' => '1'], + 'AndroidBadgeSetNum' => ['description' => '设置角标数字固定值,取值范围[0~99]。'."\n" + ."\n" + .'> 厂商通道推送时仅华为、荣耀通道生效。 阿里云自有通道推送时仅华为机型、荣耀机型与vivo机型上生效。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '5', 'default' => '0'], + 'AndroidMusic' => ['description' => '华为厂商通道通知声音。指定存放在客户端项目 app/src/main/res/raw/目录下的音频文件名,不需要携带文件格式后缀名。'."\n" + ."\n" + .'若不设置,则使用默认铃声。', 'type' => 'string', 'required' => false, 'example' => 'alicloud_notification_sound'], + 'HarmonyRemind' => ['description' => '推送类型为消息时设备不在线,则这条推送会使用辅助弹窗功能。默认值为false,仅当PushType=MESSAGE时生效。'."\n" + ."\n" + .'如果消息转通知推送成功,收到通知是展示的数据为服务端设置的HarmonyRemindTitle和HarmonyRemindBody参数值。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], + 'HarmonyRemindTitle' => ['description' => 'Harmony消息转通知时使用的Harmony通知标题,仅当HarmonyRemind为true时有效。', 'type' => 'string', 'required' => false, 'example' => '新消息'], + 'HarmonyRemindBody' => ['description' => 'Harmony消息转通知时使用的Harmony通知内容,仅当HarmonyRemind为true时有效。', 'type' => 'string', 'required' => false, 'example' => '您有一条新消息,请查收'], + 'HarmonyCategory' => [ + 'description' => '通知消息类别。完成申请通知消息自分类权益后,用于标识消息类型,不同的通知消息类型影响消息展示和提醒方式。取值如下:'."\n" + ."\n" + .'- IM:即时聊天'."\n" + .'- VOIP:音视频通话'."\n" + .'- SUBSCRIPTION:订阅'."\n" + .'- TRAVEL:出行'."\n" + .'- HEALTH:健康'."\n" + .'- WORK:工作事项提醒'."\n" + .'- ACCOUNT:账号动态'."\n" + .'- EXPRESS:订单&物流'."\n" + .'- FINANCE:财务'."\n" + .'- DEVICE_REMINDER:设备提醒'."\n" + .'- MAIL:邮件'."\n" + .'- CUSTOMER_SERVICE:客服消息'."\n" + .'- MARKETING:新闻、内容推荐、社交动态、产品促销、财经动态、生活资讯、调研、功能推荐、运营活动(仅对内容进行标识,不会加快消息发送),统称为资讯营销类消息'."\n" + ."\n" + .'详情参见鸿蒙官网 [Notification.category](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', + 'type' => 'string', + 'required' => false, + 'example' => 'IM', + 'enum' => ['IM', 'VOIP', 'SUBSCRIPTION', 'TRAVEL', 'HEALTH', 'WORK', 'ACCOUNT', 'EXPRESS', 'FINANCE', 'DEVICE_REMINDER', 'MAIL', 'CUSTOMER_SERVICE', 'MARKETING'], + ], + 'HarmonyNotificationSlotType' => [ + 'description' => '使用指定类型的通知渠道。仅在阿里云自有通道在线时有效。'."\n" + ."\n" + .'- SOCIAL_COMMUNICATION: 社交通信。'."\n" + .'- SERVICE_INFORMATION: 服务提醒。'."\n" + .'- CONTENT_INFORMATION: 内容资讯。'."\n" + .'- CUSTOMER_SERVICE: 客服消息。该类型用于用户与商家之间的客服消息,需由用户主动发起。'."\n" + .'- OTHER_TYPES: 其他。'."\n" + ."\n" + .'详情参见鸿蒙官网 [SlotType](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-notificationmanager-V5#slottype)', + 'type' => 'string', + 'required' => false, + 'example' => 'SOCIAL_COMMUNICATION', + 'enum' => ['SOCIAL_COMMUNICATION', 'SERVICE_INFORMATION', 'CONTENT_INFORMATION', 'CUSTOMER_SERVICE', 'OTHER_TYPES'], + ], + 'HarmonyNotifyId' => ['description' => '每条消息在通知显示时的唯一标识。不携带时,推送服务自动为每条消息生成一个唯一标识;不同的通知消息可以拥有相同的notifyId,实现新消息覆盖旧消息功能。'."\n" + ."\n" + .'详情参见鸿蒙官网 [Notification.notifyId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0'], + 'HarmonyActionType' => [ + 'description' => '点击通知后动作。可取值:'."\n" + ."\n" + .'- APP_HOME_PAGE:打开应用首页'."\n" + .'- APP_CUSTOM_PAGE:打开应用自定义页面', + 'type' => 'string', + 'required' => false, + 'example' => 'APP_HOME_PAGE', + 'enum' => ['APP_HOME_PAGE', 'APP_CUSTOM_PAGE'], + ], + 'HarmonyAction' => ['description' => '应用内置页面ability对应的action。'."\n" + ."\n" + .'><notice>当HarmonyActionType为APP_CUSTOM_PAGE时,字段HarmonyUri和HarmonyAction至少填写一个。></notice>'."\n" + ."\n" + .'详情参见鸿蒙官网 [ClickAction.action](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section152462191216)', 'type' => 'string', 'required' => false, 'example' => 'com.example.action'], + 'HarmonyUri' => ['description' => '应用内置页面ability对应的uri。'."\n" + .'><notice>当HarmonyActionType为APP_CUSTOM_PAGE时,字段HarmonyUri和HarmonyAction至少填写一个。当存在多个Ability时,分别填写不同Ability的action和uri,优先使用action查找对应的应用内置页面。></notice>'."\n" + ."\n" + .'详情参见鸿蒙官网 [ClickAction.uri](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section152462191216)', 'type' => 'string', 'required' => false, 'example' => 'https://www.example.com:8080/push/example'], + 'HarmonyRenderStyle' => [ + 'description' => '通知消息样式:'."\n" + .'- NORMAL: 普通通知(默认值)'."\n" + .'- MULTI_LINE: 多行文本样式', + 'type' => 'string', + 'required' => false, + 'example' => 'NORMAL', + 'enum' => ['NORMAL', 'MULTI_LINE'], + ], + 'HarmonyImageUrl' => ['description' => '通知右侧大图标URL,URL使用的协议必须是HTTPS协议。'."\n" + ."\n" + .'> 支持图片格式为png、jpg、jpeg、heif、gif、bmp,图片长*宽<25000像素。'."\n" + ."\n" + .'详情参见鸿蒙官网 [Notification.image](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', 'type' => 'string', 'required' => false, 'example' => 'https://example.com/xxx.png'], + 'HarmonyInboxContent' => ['description' => '多行文本样式的内容,当HarmonyRenderStyle为MULTI_LINE时,本字段必填,最多支持3条内容。', 'type' => 'string', 'required' => false, 'example' => '["1.content1","2.content2","3.content3"]'."\n"], + 'HarmonyExtParameters' => ['description' => '设定通知的扩展属性。当推送类型PushType设置为MESSAGE消息类型时,该属性不生效。'."\n" + ."\n" + .'该参数要以JSON map的格式传入,否则会解析出错。', 'type' => 'string', 'required' => false, 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}'."\n"], + 'HarmonyTestMessage' => ['description' => '测试消息标识:'."\n" + ."\n" + .'- false:正常消息(默认值)'."\n" + .'- true:测试消息'."\n" + ."\n" + .'详情参见鸿蒙官网 [pushOptions.testMessage](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212)', 'type' => 'boolean', 'required' => false, 'example' => 'true'], + 'HarmonyReceiptId' => ['description' => '鸿蒙通道回执ID,该回执ID可以在鸿蒙通道推送运营平台的回执参数配置中查看。'."\n" + ."\n" + .'> 如果在鸿蒙通道推送运营平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云EMAS移动推送控制台中配置鸿蒙通道默认回执ID。'."\n" + ."\n" + .'详情参见鸿蒙官网 [pushOptions.receiptId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212)', 'type' => 'string', 'required' => false, 'example' => 'RCPB***DFD5'."\n"], + 'HarmonyExtensionPush' => ['description' => 'PushType为NOTICE时,是否为鸿蒙通知扩展消息。'."\n" + ."\n" + .'- true:发送通知扩展消息'."\n" + .'- false:发送普通通知(默认值)'."\n" + ."\n" + .'通知扩展消息需要先在鸿蒙侧申请权限才能发送,相关内容请参考鸿蒙文档[发送通知扩展消息](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-send-extend-noti-V5)。</br>'."\n" + .'鸿蒙SDK1.2.0版本开始支持。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], + 'HarmonyExtensionExtraData' => ['description' => '通知扩展消息的额外数据。</br>'."\n" + .'发送鸿蒙通知扩展消息时有效。</br>'."\n" + .'概念上等同鸿蒙通知扩展消息的extraData字段,具体定义参考[鸿蒙ExtensionPayload说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section161192514234)。</br>'."\n" + .'鸿蒙SDK1.2.0版本开始支持。', 'type' => 'string', 'required' => false, 'example' => '示例额外数据'], + 'HarmonyBadgeAddNum' => ['description' => '鸿蒙应用角标累加数字。参考[鸿蒙角标addNum字段说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145)。</br>'."\n" + .'鸿蒙SDK1.2.0版本开始支持。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1'], + 'HarmonyBadgeSetNum' => ['description' => '鸿蒙应用角标设置数字。参考[鸿蒙角标setNum字段说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145)。</br>'."\n" + .'鸿蒙SDK1.2.0版本开始支持。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1'], + 'SendSpeed' => ['description' => '该参数已废弃。', 'type' => 'integer', 'format' => 'int32', 'deprecated' => true, 'required' => false, 'example' => '0'], + 'AndroidXiaoMiNotifyTitle' => ['description' => '该参数已废弃,所有第三方辅助弹窗都由新参数**AndroidPopupTitle**统一支持。', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '无'], + 'AndroidXiaoMiNotifyBody' => ['description' => '该参数已废弃,所有第三方辅助弹窗都由新参数**AndroidPopupBody**统一支持。', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '无'], + 'AndroidXiaoMiActivity' => ['description' => '该参数已废弃,所有第三方辅助弹窗都由新参数**AndroidPopupActivity**统一支持。', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '无'], + 'AndroidMeizuNoticeMsgType' => [ + 'description' => '魅族消息类型'."\n" + ."\n" + .'- 0 公信消息(默认)'."\n" + .'- 1 私信消息', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'enumValueTitles' => ['公信消息(默认)', '私信消息'], + 'example' => '0', + 'enum' => ['0', '1'], + ], + 'AndroidOppoPrivateMsgTemplateId' => ['title' => 'Oppo私信模板ID,已废弃,如需使用请使用Push接口,或升级MassPushV2', 'description' => 'OPPO 私信模板 ID'."\n" + ."\n" + .'><warning>OPPO 私信模板功能已不再由 MaasPush 支持。如需使用该功能,请改用 Push、PushV2 或 MassPushV2 接口></warning>', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '687557242b1634hzef3zd5013'], + 'AndroidOppoPrivateTitleParameters' => [ + 'title' => 'Oppo私信模板title参数,已废弃,如需使用请使用Push接口,或升级MassPushV2', + 'description' => 'OPPO 私信模版标题参数', + 'type' => 'object', + 'deprecated' => true, + 'required' => false, + 'additionalProperties' => ['type' => 'string', 'description' => 'OPPO 私信模版标题中的变量名,变量值', 'example' => 'my_title'], + ], + 'AndroidOppoPrivateContentParameters' => [ + 'title' => 'Oppo私信模板content参数,已废弃,如需使用请使用Push接口,或升级MassPushV2', + 'description' => 'OPPO 私信模版内容参数', + 'type' => 'object', + 'deprecated' => true, + 'required' => false, + 'additionalProperties' => ['type' => 'string', 'description' => 'OPPO 私信模版内容中的变量名,变量值', 'example' => 'my_content'], + ], + 'AndroidXiaomiTemplateId' => ['title' => '小米私信模板ID', 'description' => '小米私信模板 ID', 'type' => 'string', 'required' => false, 'example' => 'P10645'], + 'AndroidXiaomiTemplateParams' => ['title' => '小米私信模板参数,JSON字符串', 'description' => '小米私信模板参数,JSON 字符串', 'type' => 'string', 'required' => false, 'example' => '{"keywords1":"Tom","keywords2":"phone"}'], + 'HarmonyLiveViewPayload' => ['description' => '鸿蒙实况窗数据结构 [LiveViewPayload](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/push-scenariozed-api-request-param-V13#section66881469306) 的 JSON 字符串,开发接入请参考文档[HarmonyOS 实况窗推送指南](https://help.aliyun.com/document_detail/2982112.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "activityId": 1,'."\n" + .' "operation": 0,'."\n" + .' "event": "TAXI",'."\n" + .' "status": "DRIVER_ON_THE_WAY",'."\n" + .' "activityData": {'."\n" + .' "notificationData": {'."\n" + .' "type": 3'."\n" + .' }'."\n" + .' }'."\n" + .'}'], + 'AndroidHuaweiLiveNotificationPayload' => ['description' => '华为安卓实况窗数据结构 [LiveNotificationPayload](https://developer.huawei.com/consumer/cn/doc/HMSCore-References/rest-live-0000001562939968#ZH-CN_TOPIC_0000001700850537__p195121620102511) 的 JSON 字符串,开发接入请参考文档[华为实况窗推送指南](https://help.aliyun.com/document_detail/2983768.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "activityId": 1,'."\n" + .' "operation": 1,'."\n" + .' "event": "TAXI",'."\n" + .' "activityData": {'."\n" + .' "notificationData": {'."\n" + .' "type": 3'."\n" + .' }'."\n" + .' }'."\n" + .'}'], + 'AndroidOppoIntelligentIntent' => ['description' => 'OPPO流体云的意图共享数据结构[IntelligentIntent](https://open.oppomobile.com/documentation/page/info?id=13565)的JSON字符串,开发接入请参考文档[OPPO流体云推送指南](https://help.aliyun.com/document_detail/2997310.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "intentName": "Example.Progress",'."\n" + .' "identifier": "d71ebd3119877b12ecdb6c4fe96b068e",'."\n" + .' "timestamp": 1729485000989,'."\n" + .' "serviceId": {'."\n" + .' "launcher": "999800001",'."\n" + .' "fluidCloud": "999900001"'."\n" + .' },'."\n" + .' "intentAction": {'."\n" + .' "actionStatus": 0'."\n" + .' },'."\n" + .' "intentEntity": {'."\n" + .' "entityName": "TAXI"'."\n" + .' }'."\n" + .'}'], + 'AndroidOppoDeleteIntentData' => ['description' => 'OPPO流体云的意图删除数据结构[data](https://open.oppomobile.com/documentation/page/info?id=13578)的JSON字符串,当AndroidOppoIntelligentIntent参数已填写时此参数无效,开发接入请参考文档[OPPO流体云推送指南](https://help.aliyun.com/document_detail/2997310.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "intentName": "Example.Progress",'."\n" + .' "entityIds": ['."\n" + .' "A580202509130712"'."\n" + .' ],'."\n" + .' "serviceId": {'."\n" + .' "launcher": "999800001",'."\n" + .' "fluidCloud": "999900001"'."\n" + .' }'."\n" + .'}'], + 'AndroidVivoLiveMessage' => ['description' => 'vivo原子岛数据结构[liveMessage](https://dev.vivo.com.cn/documentCenter/doc/896#s-fdagzbd4)的JSON字符串,开发接入请参考文档[vivo原子岛推送指南](https://help.aliyun.com/zh/document_detail/3030718.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "operation": 0,'."\n" + .' "scene": "HEALTH_REGISTER",'."\n" + .' "templateType": 1,'."\n" + .' "showNotify": true,'."\n" + .' "changeRecord": 999,'."\n" + .' "capsuleData": {'."\n" + .' "bgColor": "#32d4d4"'."\n" + .' }'."\n" + .'}'], + 'AndroidXiaomiFocusParam' => ['description' => '小米超级岛数据结构[miui.focus.param](https://dev.mi.com/xiaomihyperos/documentation/detail?pId=2131)的JSON字符串,开发接入请参考文档[小米超级岛推送指南](https://help.aliyun.com/zh/document_detail/3037956.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "param_v2": {'."\n" + .' "business": "taxi",'."\n" + .' "updatable": true,'."\n" + .' "orderId": "A580202509130712",'."\n" + .' "param_island": {'."\n" + .' "islandProperty": 1,'."\n" + .' "bigIslandArea": {'."\n" + .' "imageTextInfoLeft": {'."\n" + .' "type": 1'."\n" + .' }'."\n" + .' }'."\n" + .' }'."\n" + .' }'."\n" + .'}'], + 'AndroidXiaomiFocusPics' => ['description' => '小米超级岛数据图片[miui.focus.pic_xxx](https://dev.mi.com/xiaomihyperos/documentation/detail?pId=2131)的JSON字符串,开发接入请参考文档[小米超级岛推送指南](https://help.aliyun.com/zh/document_detail/3037956.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "miui.focus.pic_ticker": "https://example.com/ticker.jpg",'."\n" + .' "miui.focus.pic_aod": "https://example.com/aod.jpg",'."\n" + .' "miui.focus.pic_imageText": "https://example.com/imageText.jpg"'."\n" + .'}'], + ], + 'required' => false, + ], + 'required' => true, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'IdempotentToken', + 'in' => 'query', + 'schema' => ['description' => '用于防止API调用端重试造成服务端重复推送的一个幂等参数。15分钟内使用相同IdempotentToken进行调用时,只会进行一次推送,后续返回第一次成功推送的结果。'."\n" + ."\n" + .'> '."\n" + .'> - 参数格式为标准36位UUID(8-4-4-4-12),每个有效字符是0-9 或 a-f 范围内的一个十六进制的数字,不区分大小写。'."\n" + .'> - 此参数仅用于避免重试造成的重复推送,无法避免并发调用造成的重复推送。', 'type' => 'string', 'required' => false, 'example' => 'c8016d13-6e76-410c-9bda-769383d11787', 'maxLength' => 36, 'minLength' => 36], ], ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'MessageIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'MessageId' => [ + 'description' => '批量消息ID列表,每个消息ID对应传入的PushTask的推送结果', + 'type' => 'array', + 'items' => ['description' => '消息ID', 'type' => 'string', 'example' => '501030'], + ], + ], + 'description' => '', + ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'Invalid%s.Format', 'errorMessage' => 'The specified %s format is invalid.', 'description' => '参数格式错误。'], + ['errorCode' => 'AccountDisabled', 'errorMessage' => 'Your account is not enabled.', 'description' => '功能未启用。'], + ['errorCode' => 'FileNotExist', 'errorMessage' => 'The specified file does not exist.', 'description' => '指定的文件不存在。'], + ['errorCode' => 'IncorrectPassword', 'errorMessage' => 'The password is incorrect.', 'description' => '密码错误。'], + ['errorCode' => 'NotApnsCertificate', 'errorMessage' => 'The Certificate is not an APNs certificate.', 'description' => '不是APNs证书。'], + ['errorCode' => 'PermissionDenied', 'errorMessage' => 'The specified AppKey is not authorized.', 'description' => ''], + ['errorCode' => 'SendSpeedNotSupported', 'errorMessage' => 'SendSpeed is not supported for specified Target.', 'description' => '制定目标不支持SendSpeed参数。'], + ['errorCode' => 'SmsProfileConfigFailed', 'errorMessage' => 'Failed to configure SMS profile.', 'description' => 'SMS配置失败。'], + ['errorCode' => 'SmsProfileGetFailed', 'errorMessage' => 'Failed to get SMS profile.', 'description' => 'SMS配置获取失败。'], + ['errorCode' => 'SmsRoleAuthorizeFailed', 'errorMessage' => 'Failed to authorize SMS role.', 'description' => 'SMS角色授权失败。'], + ['errorCode' => 'SmsRoleUnauthorized', 'errorMessage' => 'The SMS role is unauthorized.', 'description' => 'SMS角色没有授权。'], + ['errorCode' => 'TagsNumberBeyondLimit', 'errorMessage' => 'The number of tags bound to this app exceeds the limit.', 'description' => '当前app绑定的tag数量超过限制。'], + ['errorCode' => 'Invalid%s.LengthExceed', 'errorMessage' => 'The specified %s length cannot be greater than %s.', 'description' => '参数长度超限。'], + ['errorCode' => 'Invalid%s.BytesExceed', 'errorMessage' => 'The specified %s exceeds the %s bytes limit.', 'description' => '参数的字节数超限。'], + ['errorCode' => 'Invalid%s.Empty', 'errorMessage' => 'The specified %s cannot be empty.', 'description' => '参数不能为空。'], + ['errorCode' => 'Invalid.Parameter', 'errorMessage' => 'The specified parameter is invalid: %s.', 'description' => '参数%s无效。'], + ['errorCode' => 'TargetNotSupported', 'errorMessage' => 'Target is not supported for batch push.', 'description' => '批量推送不支持的Target。'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', 'description' => '服务端错误,建议重试,仍然失败则提工单'], + ['errorCode' => 'Timeout', 'errorMessage' => 'The request processing is timeout.', 'description' => '请求处理超时。'], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageIds\\": {\\n \\"MessageId\\": [\\n \\"501030\\"\\n ]\\n },\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', + 'title' => '批量推送', + 'description' => '**请确保在使用该接口前,已充分了解EMAS移动推送产品的[收费方式和价格](~~434638~~)。**'."\n" + ."\n" + .'在某种业务场景中,可能需要在极短时间内大量向不同设备单推不同消息,在设备数、消息数极大时,会产生较高QPS,达到我们单来源IP的QPS限制,造成部分推送失败。'."\n" + ."\n" + .'本接口针对此问题设计。它支持单次调用最大传入100个独立的推送任务,通过聚合请求的方式有效降低QPS,提高大量单推的稳定性和成功率。批量推送单账号限制每秒500次调用。'."\n" + ."\n" + .'每个独立推送任务仅支持根据设备/账号/别名三类推送目标,且暂不支持短信融合配置。'."\n" + ."\n" + .'> SDK需升级到3.11.0及以上版本。'."\n" + ."\n" + .'## PushTask属性'."\n" + ."\n\n" + .'- PushTask属性格式为:PushTask.N.Property。包含:'."\n" + .' - 推送目标(destination)'."\n" + .' - 推送配置(config)'."\n" + .' - iOS通知任务配置'."\n" + .' - Android通知任务配置'."\n" + .' - Android辅助弹窗功能配置'."\n" + .' - HarmonyOS通知任务配置 '."\n" + .' - 推送控制(push control)'."\n" + .'- 每一个PushTask表示一个独立推送任务,最大支持100个,推送相关配置,和Push接口一致。'."\n" + .'- PushTask.N.Target参数只支持DEVICE、ACCOUNT、ALIAS三种类型。'."\n" + .'- PushTask不支持短信联动配置。'."\n" + .'- 父节点和子节点的乘积不能超过10000,否则视为参数无效。', + 'extraInfo' => '## Java示例代码'."\n" + .'```'."\n" + .'MassPushRequest massPushRequest = new MassPushRequest();'."\n" + .'massPushRequest.setAppKey(appKey);'."\n" + .'List<MassPushRequest.PushTask> pushTasks = new ArrayList<>();'."\n" + .'for (int i = 0; i < 100; i++) {'."\n" + .' MassPushRequest.PushTask pushTask = new MassPushRequest.PushTask();'."\n" + .' // 推送目标'."\n" + .' pushTask.setTarget("DEVICE"); //推送目标: DEVICE:推送给设备; ACCOUNT:推送给指定账号,TAG:推送给自定义标签; ALIAS: 按别名推送; ALL: 全推'."\n" + .' pushTask.setTargetValue("device1,device2,device3"); //根据Target来设定,如Target=DEVICE, 则对应的值为设备id1,设备id2。多个值使用逗号分隔(账号与设备有一次最多100个的限制)。'."\n" + .' pushTask.setDeviceType("iOS"); // 设备类型deviceType, iOS设备: "iOS"; Android设备: "ANDROID"; 全部: "ALL", 这是默认值.'."\n" + .' // 推送配置'."\n" + .' pushTask.setPushType("MESSAGE"); // MESSAGE:表示消息(默认), NOTICE:表示通知'."\n" + .' pushTask.setTitle("Hello-" + i); // 消息的标题'."\n" + .' pushTask.setBody("PushRequest body" + i); // 消息的内容'."\n" + .' // 推送配置: iOS'."\n" + .' pushTask.setIOSBadge(5); // iOS应用图标右上角角标'."\n" + .' pushTask.setIOSMusic("default"); // iOS通知声音'."\n" + .' pushTask.setIOSApnsEnv("PRODUCT");//iOS的通知是通过APNs中心来发送的,需要填写对应的环境信息。\'DEV\': 表示开发环境 \'PRODUCT\': 表示生产环境'."\n" + .' pushTask.setIOSRemind(true); // 消息推送时设备不在线(既与移动推送的服务端的长连接通道不通),则这条推送会做为通知,通过苹果的APNs通道送达一次。注意:**离线消息转通知仅适用于`生产环境`**'."\n" + .' pushTask.setIOSRemindBody("PushRequest summary"); // iOS消息转通知时使用的iOS通知内容,仅当iOSApnsEnv=`PRODUCT` && iOSRemind为true时有效'."\n" + .' pushTask.setIOSExtParameters("{\\"k1\\":\\"ios\\",\\"k2\\":\\"v2\\"}"); //通知的扩展属性(注意 : 该参数要以json map的格式传入,否则会解析出错)'."\n" + .' // 推送配置: Android'."\n" + .' pushTask.setAndroidOpenType("ACTIVITY"); // 点击通知后动作 \'APPLICATION\': 打开应用 \'ACTIVITY\': 打开应用AndroidActivity \'URL\': 打开URL \'NONE\': 无跳转'."\n" + .' pushTask.setAndroidNotifyType("SOUND"); // 通知的提醒方式 ‘VIBRATE\': 振动 \'SOUND\': 声音 \'DEFAULT\': 声音和振动 \'NONE\': 不做处理,用户自定义'."\n" + .' pushTask.setAndroidOpenUrl("http://www.alibaba.com");'."\n" + .' pushTask.setAndroidMusic("alicloud_notification_sound"); // 华为厂商通道通知声音'."\n" + .' pushTask.setAndroidActivity("com.alibaba.push.PushActivity"); // Android收到推送后打开对应的ACTIVITY,仅当`AndroidOpenType="ACTIVITY"`有效'."\n" + .' pushTask.setAndroidPopupActivity("com.alibaba.push.PopupActivity"); //设置该参数后启动辅助弹窗功能, 此处指定通知点击后跳转的Activity(辅助弹窗的前提条件:1. 集成第三方辅助通道;2. StoreOffline参数设为true)'."\n" + .' pushTask.setAndroidPopupTitle("Popup Title"); //设置辅助弹窗通知的标题'."\n" + .' pushTask.setAndroidPopupBody("Popup Body"); //设置辅助弹窗通知的内容'."\n" + .' pushTask.setAndroidNotificationBarType(50); //Android自定义通知栏样式,取值:1-100'."\n" + .' pushTask.setAndroidNotificationBarPriority(2); //Android通知在通知栏展示时排列位置的优先级 -2 -1 0 1 2'."\n" + .' pushTask.setAndroidExtParameters("{\\"k1\\":\\"android\\",\\"k2\\":\\"v2\\"}"); //设定通知的扩展属性。(注意 : 该参数要以 json map 的格式传入,否则会解析出错)'."\n" + .' // 推送控制'."\n" + .' final Date pushDate = new Date(System.currentTimeMillis() + 3600 * 1000); //用于定时发送。不设置缺省是立即发送。时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为`YYYY-MM-DDThh:mm:ssZ`。'."\n" + .' final String pushTime = ParameterHelper.getISO8601Time(pushDate);'."\n" + .' pushTask.setPushTime(pushTime); // 延后推送。可选,如果不设置表示立即推送'."\n" + .' pushTask.setStoreOffline(true); // 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到'."\n" + .' final String expireTime = ParameterHelper.getISO8601Time(new Date(System.currentTimeMillis() + 12 * 3600 * 1000)); // 12小时后消息失效, 不会再发送'."\n" + .' pushTask.setExpireTime(expireTime);'."\n" + .' pushTasks.add(pushTask);'."\n" + .'}'."\n" + .'massPushRequest.setPushTasks(pushTasks);'."\n" + .'MassPushResponse massPushResponse = client.getAcsResponse(massPushRequest);'."\n" + .'System.out.printf("RequestId: %s, MessageIds: %s\\n", massPushResponse.getRequestId(), massPushResponse.getMessageIds().toString());'."\n" + .'```', + 'changeSet' => [ + ['createdAt' => '2025-11-25T08:17:08.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2025-09-19T03:03:01.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2025-09-18T09:24:49.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2025-09-09T08:21:44.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2025-08-21T11:21:59.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2025-03-21T09:22:04.000Z', 'description' => '错误码发生变更、请求参数发生变更'], + ['createdAt' => '2025-01-16T07:23:21.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-11-13T03:09:40.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-10-23T08:32:10.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-10-23T08:32:10.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-10-10T01:26:31.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-08-07T05:34:12.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-06-25T04:40:41.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2023-12-18T11:18:34.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2023-10-12T07:14:53.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2023-03-15T14:04:19.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2022-06-07T11:29:17.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2021-09-15T06:53:20.000Z', 'description' => '请求参数发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'MassPush'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:MassPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + ], + 'MassPushV2' => [ + 'methods' => ['post'], + 'schemes' => ['https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeNodes' => ['FEATUREemasBNY9P0', 'FEATUREemasTZ8VEZ'], + ], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', + 'schema' => ['description' => 'AppKey信息', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'example' => '23267***'], + ], + [ + 'name' => 'IdempotentToken', + 'in' => 'query', + 'schema' => ['description' => '用于防止API调用端重试造成服务端重复推送的一个幂等参数。15分钟内使用相同IdempotentToken进行调用时,只会进行一次推送,后续返回第一次成功推送的结果。'."\n" + ."\n" + .'> '."\n" + .'> - 参数格式为标准36位UUID(8-4-4-4-12),每个有效字符是0-9 或 a-f 范围内的一个十六进制的数字,不区分大小写。'."\n" + .'> - 此参数仅用于避免重试造成的重复推送,无法避免并发调用造成的重复推送。', 'type' => 'string', 'required' => false, 'example' => 'c8016d13-6e76-****-9bda-769383d11787', 'maxLength' => 36, 'minLength' => 36], + ], + [ + 'name' => 'PushTasks', + 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', + 'description' => '批量推送任务', + 'type' => 'array', + 'items' => ['description' => '推送任务', 'required' => false, '$ref' => '#/components/schemas/PushTask'], 'required' => true, - 'docRequired' => true, - 'example' => '23267207', ], ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => '请求ID', 'type' => 'string', 'example' => '159E4422-6624-****-8943-DFD98D34858C'], + 'MessageIds' => [ + 'description' => '消息ID列表', + 'type' => 'array', + 'items' => ['description' => '消息ID', 'type' => 'string', 'example' => '1091371886864****'], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidPeriod.ExceedDays', 'errorMessage' => 'The period between specified EndTime and StartTime exceeds %s days.', 'description' => '开始时间和结束时间超过%s天。'], + ['errorCode' => 'Invalid%s.Format', 'errorMessage' => 'The specified %s format is invalid.', 'description' => '参数格式错误。'], + ['errorCode' => 'AccountDisabled', 'errorMessage' => 'Your account is not enabled.', 'description' => '功能未启用。'], + ['errorCode' => 'FileNotExist', 'errorMessage' => 'The specified file does not exist.', 'description' => '指定的文件不存在。'], + ['errorCode' => 'IncorrectPassword', 'errorMessage' => 'The password is incorrect.', 'description' => '密码错误。'], + ['errorCode' => 'NotApnsCertificate', 'errorMessage' => 'The Certificate is not an APNs certificate.', 'description' => '不是APNs证书。'], + ['errorCode' => 'PermissionDenied', 'errorMessage' => 'The specified AppKey is not authorized.', 'description' => ''], + ['errorCode' => 'SendSpeedNotSupported', 'errorMessage' => 'SendSpeed is not supported for specified Target.', 'description' => '制定目标不支持SendSpeed参数。'], + ['errorCode' => 'SmsProfileConfigFailed', 'errorMessage' => 'Failed to configure SMS profile.', 'description' => 'SMS配置失败。'], + ['errorCode' => 'SmsProfileGetFailed', 'errorMessage' => 'Failed to get SMS profile.', 'description' => 'SMS配置获取失败。'], + ['errorCode' => 'SmsRoleAuthorizeFailed', 'errorMessage' => 'Failed to authorize SMS role.', 'description' => 'SMS角色授权失败。'], + ['errorCode' => 'SmsRoleUnauthorized', 'errorMessage' => 'The SMS role is unauthorized.', 'description' => 'SMS角色没有授权。'], + ['errorCode' => 'TagsNumberBeyondLimit', 'errorMessage' => 'The number of tags bound to this app exceeds the limit.', 'description' => '当前app绑定的tag数量超过限制。'], + ['errorCode' => 'Invalid%s.LengthExceed', 'errorMessage' => 'The specified %s length cannot be greater than %s.', 'description' => '参数长度超限。'], + ['errorCode' => 'Invalid%s.BytesExceed', 'errorMessage' => 'The specified %s exceeds the %s bytes limit.', 'description' => '参数的字节数超限。'], + ['errorCode' => 'Invalid%s.Empty', 'errorMessage' => 'The specified %s cannot be empty.', 'description' => '参数不能为空。'], + ['errorCode' => 'Invalid.Parameter', 'errorMessage' => 'The specified parameter is invalid: %s.', 'description' => '参数%s无效。'], + ['errorCode' => 'TargetNotSupported', 'errorMessage' => 'Target is not supported for batch push.', 'description' => '批量推送不支持的Target。'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', 'description' => '服务端错误,建议重试,仍然失败则提工单'], + ['errorCode' => 'Timeout', 'errorMessage' => 'The request processing is timeout.', 'description' => '请求处理超时。'], + ], + ], + 'title' => '批量推送', + 'summary' => '高级推送接口V2。', + 'description' => '请确保在使用该接口前,已充分了解 EMAS 移动推送产品的[收费方式和价格](https://help.aliyun.com/document_detail/434638.html)。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'MassPushV2'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:MassPushV2', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"159E4422-6624-****-8943-DFD98D34858C\\",\\n \\"MessageIds\\": [\\n \\"1091371886864****\\"\\n ]\\n}","type":"json"}]', + ], + 'Push' => [ + 'summary' => '高级推送接口,推送通知或者消息到不同设备端,本接口提供丰富的推送定制参数,以实现不同场景下的推送行为。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeNodes' => ['FEATUREemasBNY9P0', 'FEATUREemasTZ8VEZ'], + ], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'example' => '23267207'], + ], [ 'name' => 'PushType', 'in' => 'query', @@ -1334,10 +2758,7 @@ 'required' => true, 'docRequired' => true, 'example' => 'MESSAGE', - 'enum' => [ - 'MESSAGE', - 'NOTICE', - ], + 'enum' => ['MESSAGE', 'NOTICE'], ], ], [ @@ -1353,18 +2774,9 @@ 'type' => 'string', 'required' => true, 'docRequired' => true, - 'enumValueTitles' => [ - 'ALL' => 'ALL', - 'ANDROID' => 'ANDROID', - 'iOS' => 'iOS', - ], + 'enumValueTitles' => ['ALL' => 'ALL', 'ANDROID' => 'ANDROID', 'iOS' => 'iOS'], 'example' => 'HARMONY', - 'enum' => [ - 'iOS', - 'ANDROID', - 'ALL', - 'HARMONY', - ], + 'enum' => ['iOS', 'ANDROID', 'ALL', 'HARMONY'], ], ], [ @@ -1384,149 +2796,94 @@ 'required' => true, 'docRequired' => true, 'example' => 'ALL', - 'enum' => [ - 'ALL', - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - 'TAG', - 'TBD', - 'FILE', - ], + 'enum' => ['ALL', 'DEVICE', 'ACCOUNT', 'ALIAS', 'TAG', 'TBD', 'FILE'], ], ], [ 'name' => 'TargetValue', 'in' => 'query', - 'schema' => [ - 'description' => '根据Target类型来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" - ."\n" - .'- Target=DEVICE,值如`deviceid1,deviceid2`(最多支持1000个)。'."\n" - .'- Target=ACCOUNT,值如`account1,account2`(最多支持1000个)。'."\n" - .'- Target=ALIAS,值如`alias1,alias2`(最多支持1000个)。'."\n" - .'- Target=TAG,支持单Tag和多Tag,格式请参见[标签格式](~~434847~~)。'."\n" - .'- Target=ALL,值为**ALL**(全推固定参数组合)。'."\n" - .'- Target=TBD,值为**TBD**(持续推送固定参数组合)。', - 'type' => 'string', - 'required' => true, - 'docRequired' => true, - 'example' => 'ALL', - ], + 'schema' => ['description' => '根据Target类型来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" + ."\n" + .'- Target=DEVICE,值如`deviceid1,deviceid2`(最多支持1000个)。'."\n" + .'- Target=ACCOUNT,值如`account1,account2`(最多支持1000个)。'."\n" + .'- Target=ALIAS,值如`alias1,alias2`(最多支持1000个)。'."\n" + .'- Target=TAG,支持单Tag和多Tag,格式请参见[标签格式](~~434847~~)。'."\n" + .'- Target=ALL,值为**ALL**(全推固定参数组合)。'."\n" + .'- Target=TBD,值为**TBD**(持续推送固定参数组合)。', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'ALL'], ], [ 'name' => 'StoreOffline', 'in' => 'query', - 'schema' => [ - 'description' => '离线消息、通知是否保存。StoreOffline默认设置为**false**。'."\n" - ."\n" - .'若保存,在推送时候用户不在线,在过期时间(ExpireTime)内用户上线时会被再次发送。ExpireTime默认为72小时。iOS通知走APNs链路,不受StoreOffline影响。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['description' => '离线消息、通知是否保存。StoreOffline默认设置为**false**。'."\n" + ."\n" + .'若保存,在推送时候用户不在线,在过期时间(ExpireTime)内用户上线时会被再次发送。ExpireTime默认为72小时。iOS通知走APNs链路,不受StoreOffline影响。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], [ 'name' => 'SendChannels', 'in' => 'query', - 'schema' => [ - 'description' => '指定发送通道,取值如下:'."\n" - ."\n" - .'- accs:阿里云自有通道'."\n" - .'- huawei:华为通道'."\n" - .'- honor:荣耀通道'."\n" - .'- xiaomi:小米通道'."\n" - .'- oppo:OPPO通道'."\n" - .'- vivo:vivo通道'."\n" - .'- meizu:魅族通道'."\n" - .'- gcm:谷歌GCM通道(旧版HTTP)'."\n" - .'- fcm: 谷歌Firebase通道(HTTP v1 API)'."\n" - .'- apns:APNs通道'."\n" - .'- harmony: 鸿蒙通道'."\n" - ."\n" - .'>- 如果未配置此参数,则代表所有通道均可使用。'."\n" - .'>- 如果配置了此参数,则严格使用参数中的通道。'."\n" - .'>- 如果配置的通道和发送策略冲突(如iOS通知仅走APNs通道,但本参数中不包含apns),则不实施发送。'."\n" - .'>- 若配置gcm,则可以走谷歌GCM和FCM通道,若配置fcm,则只能走谷歌FCM通道。', - 'type' => 'string', - 'required' => false, - 'example' => 'accs,huawei,xiaomi', - ], + 'schema' => ['description' => '指定发送通道,取值如下:'."\n" + ."\n" + .'- accs:阿里云自有通道'."\n" + .'- huawei:华为通道'."\n" + .'- honor:荣耀通道'."\n" + .'- xiaomi:小米通道'."\n" + .'- oppo:OPPO通道'."\n" + .'- vivo:vivo通道'."\n" + .'- meizu:魅族通道'."\n" + .'- gcm:谷歌GCM通道(旧版HTTP)'."\n" + .'- fcm: 谷歌Firebase通道(HTTP v1 API)'."\n" + .'- apns:APNs通道'."\n" + .'- harmony: 鸿蒙通道'."\n" + ."\n" + .'>- 如果未配置此参数,则代表所有通道均可使用。'."\n" + .'>- 如果配置了此参数,则严格使用参数中的通道。'."\n" + .'>- 如果配置的通道和发送策略冲突(如iOS通知仅走APNs通道,但本参数中不包含apns),则不实施发送。'."\n" + .'>- 若配置gcm,则可以走谷歌GCM和FCM通道,若配置fcm,则只能走谷歌FCM通道。', 'type' => 'string', 'required' => false, 'example' => 'accs,huawei,xiaomi'], ], [ 'name' => 'PushTime', 'in' => 'query', - 'schema' => [ - 'description' => '用于定时发送。不设置缺省是立即发送。'."\n" - .'设置定时发送最迟不能晚于7天发送。'."\n" - ."\n" - .'时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ。'."\n" - .'>Target为TBD(持续推送)时,不支持定时设置。', - 'type' => 'string', - 'required' => false, - 'example' => '2019-02-20T00:00:00Z', - ], + 'schema' => ['description' => '用于定时发送。不设置缺省是立即发送。'."\n" + .'设置定时发送最迟不能晚于7天发送。'."\n" + ."\n" + .'时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ。'."\n" + .'>Target为TBD(持续推送)时,不支持定时设置。', 'type' => 'string', 'required' => false, 'example' => '2019-02-20T00:00:00Z'], ], [ 'name' => 'ExpireTime', 'in' => 'query', - 'schema' => [ - 'description' => '离线消息/通知的过期时间,和StoreOffline配合使用,过期则不会再被发送,最长保存72小时。默认为72小时。'."\n" - ."\n" - .'时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ,过期时间不能小于当前时间或者定时发送时间加上3秒(`ExpireTime > PushTime+ 3秒`),3秒是为了冗余网络和系统延迟造成的误差。建议单推不小于1分钟,全推、批量推送不少于10分钟。', - 'type' => 'string', - 'required' => false, - 'example' => '2019-02-20T00:00:00Z', - ], + 'schema' => ['description' => '离线消息/通知的过期时间,和StoreOffline配合使用,过期则不会再被发送,最长保存72小时。默认为72小时。'."\n" + ."\n" + .'时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ,过期时间不能小于当前时间或者定时发送时间加上3秒(`ExpireTime > PushTime+ 3秒`),3秒是为了冗余网络和系统延迟造成的误差。建议单推不小于1分钟,全推、批量推送不少于10分钟。', 'type' => 'string', 'required' => false, 'example' => '2019-02-20T00:00:00Z'], ], [ 'name' => 'JobKey', 'in' => 'query', - 'schema' => [ - 'description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](~~434651~~)。'."\n" - .'>格式要求:只能使用字母或数字或符号‘_’、‘-’任意一项或组合 ,且长度不超过32个字符', - 'type' => 'string', - 'required' => false, - 'example' => '123', - ], + 'schema' => ['description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](~~434651~~)。'."\n" + .'>格式要求:只能使用字母或数字或符号‘_’、‘-’任意一项或组合 ,且长度不超过32个字符', 'type' => 'string', 'required' => false, 'example' => '123'], ], [ 'name' => 'Title', 'in' => 'query', - 'schema' => [ - 'description' => '推送时通知/消息的标题,长度限制:200字节。'."\n" - ."\n" - .'在Android和Harmony推送时必填;在iOS通知时非必填,如果填写,则:'."\n" - ."\n" - .'- iOS 10+通知显示标题。'."\n" - ."\n" - .'- iOS 8.2 <= iOS系统 < iOS 10:替换通知应用名称。', - 'type' => 'string', - 'required' => false, - 'example' => 'title', - ], + 'schema' => ['description' => '推送时通知/消息的标题,长度限制:200字节。'."\n" + ."\n" + .'在Android和Harmony推送时必填;在iOS通知时非必填,如果填写,则:'."\n" + ."\n" + .'- iOS 10+通知显示标题。'."\n" + ."\n" + .'- iOS 8.2 <= iOS系统 < iOS 10:替换通知应用名称。', 'type' => 'string', 'required' => false, 'example' => 'title'], ], [ 'name' => 'Body', 'in' => 'query', - 'schema' => [ - 'description' => 'Android和Harmony推送时通知的内容/消息的内容;iOS消息/通知内容,推送的内容大小是有限制的,参见[产品限制](~~434629~~)。', - 'type' => 'string', - 'required' => false, - 'docRequired' => true, - 'example' => 'hello', - ], + 'schema' => ['description' => 'Android和Harmony推送时通知的内容/消息的内容;iOS消息/通知内容,推送的内容大小是有限制的,参见[产品限制](~~434629~~)。', 'type' => 'string', 'required' => false, 'docRequired' => true, 'example' => 'hello'], ], [ 'name' => 'Trim', 'in' => 'query', - 'schema' => [ - 'description' => '是否自动对过长标题、内容进行截断。'."\n" - ."\n" - .'>仅支持明确限制标题、内容的厂商通道,对APNs、华为、荣耀通道等不限制标题、内容,只限制总请求体大小的不适用。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['description' => '是否自动对过长标题、内容进行截断。'."\n" + ."\n" + .'>仅支持明确限制标题、内容的厂商通道,对APNs、华为、荣耀通道等不限制标题、内容,只限制总请求体大小的不适用。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], [ 'name' => 'iOSApnsEnv', @@ -1538,176 +2895,98 @@ .'- **PRODUCT**:生产环境,适用于 App Store、TestFlight、Ad Hoc 及企业分发的应用。', 'type' => 'string', 'required' => false, - 'enumValueTitles' => [ - 'DEV' => 'DEV', - 'PRODUCT' => 'PRODUCT', - ], + 'enumValueTitles' => ['DEV' => 'DEV', 'PRODUCT' => 'PRODUCT'], 'example' => 'DEV', - 'enum' => [ - 'PRODUCT', - 'DEV', - ], + 'enum' => ['PRODUCT', 'DEV'], ], ], [ 'name' => 'iOSRemind', 'in' => 'query', - 'schema' => [ - 'description' => '消息推送时设备不在线(即与移动推送的服务端的长连接通道不通),则这条推送会做为通知,通过苹果的APNs通道送达一次。'."\n" - ."\n" - .'> 离线消息转通知仅适用于生产环境。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => '消息推送时设备不在线(即与移动推送的服务端的长连接通道不通),则这条推送会做为通知,通过苹果的APNs通道送达一次。'."\n" + ."\n" + .'> 离线消息转通知仅适用于生产环境。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], ], [ 'name' => 'iOSSubtitle', 'in' => 'query', - 'schema' => [ - 'description' => 'iOS通知副标题内容(iOS 10+)。', - 'type' => 'string', - 'required' => false, - 'example' => 'su\'b', - ], + 'schema' => ['description' => 'iOS通知副标题内容(iOS 10+)。', 'type' => 'string', 'required' => false, 'example' => 'su\'b'], ], [ 'name' => 'iOSRemindBody', 'in' => 'query', - 'schema' => [ - 'description' => 'iOS消息转通知时使用的iOS通知内容,仅当iOSApnsEnv=PRODUCT && iOSRemind为true时有效。', - 'type' => 'string', - 'required' => false, - 'example' => 'ios通知body', - ], + 'schema' => ['description' => 'iOS消息转通知时使用的iOS通知内容,仅当iOSApnsEnv=PRODUCT && iOSRemind为true时有效。', 'type' => 'string', 'required' => false, 'example' => 'ios通知body'], ], [ 'name' => 'iOSMusic', 'in' => 'query', - 'schema' => [ - 'description' => 'iOS通知声音。指定存放在app bundle或沙盒Library/Sounds目录下的音频文件名,请参见:[iOS推送如何设定通知声音](~~48906~~)。'."\n" - ."\n" - .'若指定为空串(””),通知为静音;若不设置,默认填充default为系统提示音。', - 'type' => 'string', - 'required' => false, - 'example' => '""', - ], + 'schema' => ['description' => 'iOS通知声音。指定存放在app bundle或沙盒Library/Sounds目录下的音频文件名,请参见:[iOS推送如何设定通知声音](~~48906~~)。'."\n" + ."\n" + .'若指定为空串(””),通知为静音;若不设置,默认填充default为系统提示音。', 'type' => 'string', 'required' => false, 'example' => '""'], ], [ 'name' => 'iOSBadge', 'in' => 'query', - 'schema' => [ - 'description' => 'iOS应用图标右上角角标。'."\n" - ."\n" - .'> 若iOSBadgeAutoIncrement设置为True,则此项必须为空。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], + 'schema' => ['description' => 'iOS应用图标右上角角标。'."\n" + ."\n" + .'> 若iOSBadgeAutoIncrement设置为True,则此项必须为空。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0'], ], [ 'name' => 'iOSBadgeAutoIncrement', 'in' => 'query', - 'schema' => [ - 'description' => '是否开启角标自增功能,默认为false。'."\n" - ."\n" - .'>当该项为true时,iOSBadge必须为空。'."\n" - ."\n" - .'角标自增功能由推送服务端维护每个设备的角标计数,需要用户使用1.9.5以上版本的SDK,并且需要用户主动同步角标数字到服务端。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => '是否开启角标自增功能,默认为false。'."\n" + ."\n" + .'>当该项为true时,iOSBadge必须为空。'."\n" + ."\n" + .'角标自增功能由推送服务端维护每个设备的角标计数,需要用户使用1.9.5以上版本的SDK,并且需要用户主动同步角标数字到服务端。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], ], [ 'name' => 'iOSSilentNotification', 'in' => 'query', - 'schema' => [ - 'description' => '是否开启iOS静默通知。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => '是否开启iOS静默通知。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], ], [ 'name' => 'iOSMutableContent', 'in' => 'query', - 'schema' => [ - 'description' => 'iOS通知处理扩展标记(iOS 10+)。如果设为true,则APNs推送的通知在弹出前,可先到达Extension进行处理。静默通知时,必须设为true。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'iOS通知处理扩展标记(iOS 10+)。如果设为true,则APNs推送的通知在弹出前,可先到达Extension进行处理。静默通知时,必须设为true。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], ], [ 'name' => 'iOSNotificationCategory', 'in' => 'query', - 'schema' => [ - 'description' => '指定iOS通知Category(iOS 10+)。', - 'type' => 'string', - 'required' => false, - 'example' => 'ios', - ], + 'schema' => ['description' => '指定iOS通知Category(iOS 10+)。', 'type' => 'string', 'required' => false, 'example' => 'ios'], ], [ 'name' => 'iOSNotificationCollapseId', 'in' => 'query', - 'schema' => [ - 'description' => '设备收到有相同CollapseId的消息,会合并成一条。设备不在线,连续发相同CollapseId的消息,通知栏只会显示一条,iOS 10+支持设置此参数。', - 'type' => 'string', - 'required' => false, - 'example' => 'ZD2011', - ], + 'schema' => ['description' => '设备收到有相同CollapseId的消息,会合并成一条。设备不在线,连续发相同CollapseId的消息,通知栏只会显示一条,iOS 10+支持设置此参数。', 'type' => 'string', 'required' => false, 'example' => 'ZD2011'], ], [ 'name' => 'iOSNotificationThreadId', 'in' => 'query', - 'schema' => [ - 'description' => '通过该属性对iOS的远程通知进行分组,标记折叠的组别识别名。'."\n" - .'仅支持iOS 12.0+版本。', - 'type' => 'string', - 'required' => false, - 'example' => 'abc', - ], + 'schema' => ['description' => '通过该属性对iOS的远程通知进行分组,标记折叠的组别识别名。'."\n" + .'仅支持iOS 12.0+版本。', 'type' => 'string', 'required' => false, 'example' => 'abc'], ], [ 'name' => 'iOSInterruptionLevel', 'in' => 'query', - 'schema' => [ - 'description' => '中断级别,取值:'."\n" - ."\n" - .'- **passive**:系统在不点灯、不播放声音的情况下将通知添加到通知列表中。'."\n" - .'- **active**:系统立即显示通知,点亮屏幕,并可以播放声音。'."\n" - .'- **time-sensitive**:系统立即呈现通知,点亮屏幕,并可以播放声音,但不会突破系统通知控制。'."\n" - .'- **critical**:系统立即显示通知,屏幕亮起,并绕过静音开关播放声音。', - 'type' => 'string', - 'required' => false, - 'example' => 'active', - ], + 'schema' => ['description' => '中断级别,取值:'."\n" + ."\n" + .'- **passive**:系统在不点灯、不播放声音的情况下将通知添加到通知列表中。'."\n" + .'- **active**:系统立即显示通知,点亮屏幕,并可以播放声音。'."\n" + .'- **time-sensitive**:系统立即呈现通知,点亮屏幕,并可以播放声音,但不会突破系统通知控制。'."\n" + .'- **critical**:系统立即显示通知,屏幕亮起,并绕过静音开关播放声音。', 'type' => 'string', 'required' => false, 'example' => 'active'], ], [ 'name' => 'iOSRelevanceScore', 'in' => 'query', - 'schema' => [ - 'description' => '摘要突出显示分数。取值范围:\\[0,1\\]的浮点数。', - 'type' => 'number', - 'format' => 'double', - 'required' => false, - 'example' => '0.01', - ], + 'schema' => ['description' => '摘要突出显示分数。取值范围:\\[0,1\\]的浮点数。', 'type' => 'number', 'format' => 'double', 'required' => false, 'example' => '0.01'], ], [ 'name' => 'iOSExtParameters', 'in' => 'query', - 'schema' => [ - 'description' => 'iOS通知的扩展属性。'."\n" - ."\n" - .'iOS10+可以在此指定富媒体推送通知的资源Url:`{"attachment": "https://xxxx.xxx/notification_pic.png"} `。该参数要以JSON map的格式传入,否则会解析出错。', - 'type' => 'string', - 'required' => false, - 'example' => '{"attachment": "https://xxxx.xxx/notification_pic.png"} ', - ], + 'schema' => ['description' => 'iOS通知的扩展属性。'."\n" + ."\n" + .'iOS10+可以在此指定富媒体推送通知的资源Url:`{"attachment": "https://xxxx.xxx/notification_pic.png"} `。该参数要以JSON map的格式传入,否则会解析出错。', 'type' => 'string', 'required' => false, 'example' => '{"attachment": "https://xxxx.xxx/notification_pic.png"} '], ], [ 'name' => 'iOSLiveActivityEvent', @@ -1719,77 +2998,41 @@ 'type' => 'string', 'required' => false, 'example' => 'start', - 'enum' => [ - 'start', - 'update', - 'end', - ], + 'enum' => ['start', 'update', 'end'], ], ], [ 'name' => 'iOSLiveActivityId', 'in' => 'query', - 'schema' => [ - 'description' => '由设备上报到用户服务器的Live Activity ID,Live Activity的唯一标识符。', - 'type' => 'string', - 'required' => false, - 'example' => '66B94673-B32E-4CA7-863C-3E523054FD46', - ], + 'schema' => ['description' => '由设备上报到用户服务器的Live Activity ID,Live Activity的唯一标识符。', 'type' => 'string', 'required' => false, 'example' => '66B94673-B32E-4CA7-863C-3E523054FD46'], ], [ 'name' => 'iOSLiveActivityAttributesType', 'in' => 'query', - 'schema' => [ - 'description' => '待启动的Live Activity类型。'."\n" - .'> iOSLiveActivityEvent为start时必填', - 'type' => 'string', - 'required' => false, - 'example' => 'OrderActivityAttributes', - ], + 'schema' => ['description' => '待启动的Live Activity类型。'."\n" + .'> iOSLiveActivityEvent为start时必填', 'type' => 'string', 'required' => false, 'example' => 'OrderActivityAttributes'], ], [ 'name' => 'iOSLiveActivityAttributes', 'in' => 'query', - 'schema' => [ - 'description' => 'JSON字符串,灵动岛推送透传静态参数。包含静态的用户自定义信息,如产品编号、订单信息等。'."\n" - ."\n" - .'> iOSLiveActivityEvent为start时必填', - 'type' => 'string', - 'required' => false, - 'example' => '{"orderId": "12345", "product": "Shoes"}', - ], + 'schema' => ['description' => 'JSON字符串,灵动岛推送透传静态参数。包含静态的用户自定义信息,如产品编号、订单信息等。'."\n" + ."\n" + .'> iOSLiveActivityEvent为start时必填', 'type' => 'string', 'required' => false, 'example' => '{"orderId": "12345", "product": "Shoes"}'], ], [ 'name' => 'iOSLiveActivityContentState', 'in' => 'query', - 'schema' => [ - 'description' => '灵动岛推送透传动态参数,包含实时更新信息,如价格、库存变化等', - 'type' => 'string', - 'required' => false, - 'example' => '{"status": "delivered", "estimatedArrival": "2023-12-31T12:00:00Z"}', - ], + 'schema' => ['description' => '灵动岛推送透传动态参数,包含实时更新信息,如价格、库存变化等', 'type' => 'string', 'required' => false, 'example' => '{"status": "delivered", "estimatedArrival": "2023-12-31T12:00:00Z"}'], ], [ 'name' => 'iOSLiveActivityDismissalDate', 'in' => 'query', - 'schema' => [ - 'description' => '秒级时间戳,结束的Live Activity在锁屏上会保留到该指定时间,最长为4小时。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1743131967', - ], + 'schema' => ['description' => '秒级时间戳,结束的Live Activity在锁屏上会保留到该指定时间,最长为4小时。', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1743131967'], ], [ 'name' => 'iOSLiveActivityStaleDate', 'in' => 'query', - 'schema' => [ - 'description' => '秒级时间戳,标记该活动的内容过期时间。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1743131967', - ], + 'schema' => ['description' => '秒级时间戳,标记该活动的内容过期时间。', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1743131967'], ], [ 'name' => 'AndroidNotifyType', @@ -1804,25 +3047,15 @@ 'type' => 'string', 'required' => false, 'example' => 'BOTH', - 'enum' => [ - 'NONE', - 'VIBRATE', - 'SOUND', - 'BOTH', - ], + 'enum' => ['NONE', 'VIBRATE', 'SOUND', 'BOTH'], ], ], [ 'name' => 'AndroidRemind', 'in' => 'query', - 'schema' => [ - 'description' => '推送类型为消息时设备不在线,则这条推送会使用辅助弹窗功能。默认值为false,仅当PushType=MESSAGE时生效。'."\n" - ."\n" - .'如果消息转通知推送成功,收到通知是展示的数据为服务端设置的AndroidPopupTitle和AndroidPopupBody参数值,点击通知在辅助弹窗的onSysNoticeOpened方法中获取到的数据是服务端设置的Title和Body参数值。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => '推送类型为消息时设备不在线,则这条推送会使用辅助弹窗功能。默认值为false,仅当PushType=MESSAGE时生效。'."\n" + ."\n" + .'如果消息转通知推送成功,收到通知是展示的数据为服务端设置的AndroidPopupTitle和AndroidPopupBody参数值,点击通知在辅助弹窗的onSysNoticeOpened方法中获取到的数据是服务端设置的Title和Body参数值。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], ], [ 'name' => 'AndroidOpenType', @@ -1837,75 +3070,45 @@ 'type' => 'string', 'required' => false, 'example' => 'APPLICATION', - 'enum' => [ - 'APPLICATION', - 'ACTIVITY', - 'URL', - 'NONE', - ], + 'enum' => ['APPLICATION', 'ACTIVITY', 'URL', 'NONE'], ], ], [ 'name' => 'AndroidActivity', 'in' => 'query', - 'schema' => [ - 'description' => '设定通知打开的activity。'."\n" - ."\n" - .'仅当AndroidOpenType=”Activity”时传入,如:`com.alibaba.cloudpushdemo.bizactivity`。', - 'type' => 'string', - 'required' => false, - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - ], + 'schema' => ['description' => '设定通知打开的activity。'."\n" + ."\n" + .'仅当AndroidOpenType=”Activity”时传入,如:`com.alibaba.cloudpushdemo.bizactivity`。', 'type' => 'string', 'required' => false, 'example' => 'com.alibaba.cloudpushdemo.bizactivity'], ], [ 'name' => 'AndroidOpenUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'Android收到推送后打开对应的url。'."\n" - ."\n" - .'仅当AndroidOpenType=”URL”时传入。', - 'type' => 'string', - 'required' => false, - 'example' => 'https://xxxx.xxx', - ], + 'schema' => ['description' => 'Android收到推送后打开对应的url。'."\n" + ."\n" + .'仅当AndroidOpenType=”URL”时传入。', 'type' => 'string', 'required' => false, 'example' => 'https://xxxx.xxx'], ], [ 'name' => 'AndroidPopupActivity', 'in' => 'query', - 'schema' => [ - 'description' => '指定点击通知后跳转的Activity。', - 'type' => 'string', - 'required' => false, - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - ], + 'schema' => ['description' => '指定点击通知后跳转的Activity。', 'type' => 'string', 'required' => false, 'example' => 'com.alibaba.cloudpushdemo.bizactivity'], ], [ 'name' => 'AndroidPopupTitle', 'in' => 'query', - 'schema' => [ - 'description' => '辅助弹窗模式下标题内容。**AndroidPopupActivity**参数不为空时,该参数必填。 '."\n" - ."\n" - .'长度限制:50个字符,中英文都算一个字符。'."\n" - ."\n" - .'如使用厂商通道,则需同时符合厂商通道的限制,具体内容参见:[Android端辅助通道推送限制](~~165253~~)。', - 'type' => 'string', - 'required' => false, - 'example' => 'hello', - ], + 'schema' => ['description' => '辅助弹窗模式下标题内容。**AndroidPopupActivity**参数不为空时,该参数必填。 '."\n" + ."\n" + .'长度限制:50个字符,中英文都算一个字符。'."\n" + ."\n" + .'如使用厂商通道,则需同时符合厂商通道的限制,具体内容参见:[Android端辅助通道推送限制](~~165253~~)。', 'type' => 'string', 'required' => false, 'example' => 'hello'], ], [ 'name' => 'AndroidPopupBody', 'in' => 'query', - 'schema' => [ - 'description' => '辅助弹窗模式下Body内容。**AndroidPopupActivity**参数不为空时,该参数必填。'."\n" - ."\n" - .'长度限制:200个字符,中英文都算一个字符。'."\n" - ."\n" - .'如使用厂商通道,则需同时符合厂商通道的限制,具体内容参见:[Android端辅助通道推送限制](~~165253~~)。', - 'type' => 'string', - 'required' => false, - 'example' => 'hello', - ], + 'schema' => ['description' => '辅助弹窗模式下Body内容。**AndroidPopupActivity**参数不为空时,该参数必填。'."\n" + ."\n" + .'长度限制:200个字符,中英文都算一个字符。'."\n" + ."\n" + .'如使用厂商通道,则需同时符合厂商通道的限制,具体内容参见:[Android端辅助通道推送限制](~~165253~~)。', 'type' => 'string', 'required' => false, 'example' => 'hello'], ], [ 'name' => 'AndroidRenderStyle', @@ -1920,166 +3123,98 @@ 'type' => 'integer', 'format' => 'int32', 'required' => false, - 'enumValueTitles' => [ - '0', - '1', - '2', - ], + 'enumValueTitles' => ['0', '1', '2'], 'example' => '1', ], ], [ 'name' => 'AndroidBigTitle', 'in' => 'query', - 'schema' => [ - 'description' => '长文本模式下的标题,长度限制:200个字节(1个汉字算作3字节)。'."\n" - ."\n" - .'- 当前仅支持荣耀通道和华为通道EMUI11及以上版本。'."\n" - ."\n" - .'- 若长文本模式下未提供此参数,则从Title、AndroidPopupTitle里取第一个非空值。', - 'type' => 'string', - 'required' => false, - 'example' => '示例长标题', - ], + 'schema' => ['description' => '长文本模式下的标题,长度限制:200个字节(1个汉字算作3字节)。'."\n" + ."\n" + .'- 当前仅支持荣耀通道和华为通道EMUI11及以上版本。'."\n" + ."\n" + .'- 若长文本模式下未提供此参数,则从Title、AndroidPopupTitle里取第一个非空值。', 'type' => 'string', 'required' => false, 'example' => '示例长标题'], ], [ 'name' => 'AndroidBigBody', 'in' => 'query', - 'schema' => [ - 'description' => '长文本模式下的body,长度限制:1000字节(1个汉字算作3字节),发送时受具体厂商通道的限制。'."\n" - ."\n" - .'当前支持:'."\n" - ."\n" - .'- 华为:EMUI10及以上'."\n" - ."\n" - .'- 荣耀:Magic UI 4.0及以上'."\n" - ."\n" - .'- 小米:MIUI10及以上'."\n" - ."\n" - .'- OPPO:ColorOS 5.0以上'."\n" - ."\n" - .'- 魅族:Flyme '."\n" - .'- 自有通道:安卓SDK3.6.0及以上'."\n" - ."\n" - .'>若长文本模式下未提供此参数,则从Body、AndroidPopupBody里取第一个非空值。', - 'type' => 'string', - 'required' => false, - 'example' => '示例长文本', - ], + 'schema' => ['description' => '长文本模式下的body,长度限制:1000字节(1个汉字算作3字节),发送时受具体厂商通道的限制。'."\n" + ."\n" + .'当前支持:'."\n" + ."\n" + .'- 华为:EMUI10及以上'."\n" + ."\n" + .'- 荣耀:Magic UI 4.0及以上'."\n" + ."\n" + .'- 小米:MIUI10及以上'."\n" + ."\n" + .'- OPPO:ColorOS 5.0以上'."\n" + ."\n" + .'- 魅族:Flyme '."\n" + .'- 自有通道:安卓SDK3.6.0及以上'."\n" + ."\n" + .'>若长文本模式下未提供此参数,则从Body、AndroidPopupBody里取第一个非空值。', 'type' => 'string', 'required' => false, 'example' => '示例长文本'], ], [ 'name' => 'AndroidBigPictureUrl', 'in' => 'query', - 'schema' => [ - 'description' => '大图模式下的图片URL,当前支持:自有通道:安卓SDK3.6.0及以上。', - 'type' => 'string', - 'required' => false, - 'example' => 'https://imag.example.com/image.png', - ], + 'schema' => ['description' => '大图模式下的图片URL,当前支持:自有通道:安卓SDK3.6.0及以上。', 'type' => 'string', 'required' => false, 'example' => 'https://imag.example.com/image.png'], ], [ 'name' => 'AndroidXiaomiBigPictureUrl', 'in' => 'query', - 'schema' => [ - 'description' => '该参数已废弃,小米从 2023.08 开始,官方在新设备/系统已经不再支持推送时动态设置小图标、右侧图标、大图片功能。', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => 'https://f6.market.xiaomi.com/download/MiPass/aaa/bbb.png', - ], + 'schema' => ['description' => '该参数已废弃,小米从 2023.08 开始,官方在新设备/系统已经不再支持推送时动态设置小图标、右侧图标、大图片功能。', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => 'https://f6.market.xiaomi.com/download/MiPass/aaa/bbb.png'], ], [ 'name' => 'AndroidImageUrl', 'in' => 'query', - 'schema' => [ - 'description' => '大图标URL。'."\n" - .'当前支持:'."\n" - .'- 华为EMUI(仅长文本模式、Inbox模式下适用)。'."\n" - ."\n" - .'- 荣耀Magic UI(仅长文本模式下适用)。'."\n" - ."\n" - .'- 自有通道:安卓SDK3.5.0及以上。', - 'type' => 'string', - 'required' => false, - 'example' => 'https://imag.example.com/image.png', - ], + 'schema' => ['description' => '右侧图标URL。'."\n" + .'当前支持:'."\n" + .'- 华为EMUI(仅长文本模式、Inbox模式下适用)。'."\n" + ."\n" + .'- 荣耀Magic UI(仅长文本模式下适用)。'."\n" + ."\n" + .'- 自有通道:安卓SDK3.5.0及以上。', 'type' => 'string', 'required' => false, 'example' => 'https://imag.example.com/image.png'], ], [ 'name' => 'AndroidXiaomiImageUrl', 'in' => 'query', - 'schema' => [ - 'description' => '该参数已废弃,小米从 2023.08 开始,官方在新设备/系统已经不再支持推送时动态设置小图标、右侧图标、大图片功能。', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => 'https://imag.example.com/image.png', - ], + 'schema' => ['description' => '该参数已废弃,小米从 2023.08 开始,官方在新设备/系统已经不再支持推送时动态设置小图标、右侧图标、大图片功能。', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => 'https://imag.example.com/image.png'], ], [ 'name' => 'AndroidInboxBody', 'in' => 'query', - 'schema' => [ - 'description' => 'Inbox模式下的正文,内容为合法的JSON Array,且元素不超过5个。当前支持:'."\n" - ."\n" - .'- 华为:EMUI9及以上'."\n" - .'- 荣耀:Magic UI 4.0及以上'."\n" - .'- 小米:MIUI10及以上'."\n" - .'- OPPO:ColorOS 5.0以上'."\n" - .'- 自有通道:安卓SDK3.6.0及以上', - 'type' => 'string', - 'required' => false, - 'example' => '["第一行","第二行"]', - ], + 'schema' => ['description' => 'Inbox模式下的正文,内容为合法的JSON Array,且元素不超过5个。当前支持:'."\n" + ."\n" + .'- 华为:EMUI9及以上'."\n" + .'- 荣耀:Magic UI 4.0及以上'."\n" + .'- 小米:MIUI10及以上'."\n" + .'- OPPO:ColorOS 5.0以上'."\n" + .'- 自有通道:安卓SDK3.6.0及以上', 'type' => 'string', 'required' => false, 'example' => '["第一行","第二行"]'], ], [ 'name' => 'AndroidNotificationBarType', 'in' => 'query', - 'schema' => [ - 'description' => 'Android自定义通知栏样式,取值:1-100。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '100', - 'minimum' => '0', - 'example' => '2', - ], + 'schema' => ['description' => 'Android自定义通知栏样式,取值:1-100。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '100', 'minimum' => '0', 'example' => '2'], ], [ 'name' => 'AndroidNotificationBarPriority', 'in' => 'query', - 'schema' => [ - 'description' => 'Android通知在通知栏展示时排列位置的优先级。可取值: -2,-1,0,1,2。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '2', - 'minimum' => '-2', - 'example' => '0', - ], + 'schema' => ['description' => 'Android通知在通知栏展示时排列位置的优先级。可取值: -2,-1,0,1,2。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '2', 'minimum' => '-2', 'example' => '0'], ], [ 'name' => 'AndroidNotificationNotifyId', 'in' => 'query', - 'schema' => [ - 'description' => '标识每条消息在通知显示时的唯一标识,不同的通知栏消息可以相同的NotifyId,实现新的通知栏消息覆盖老的,当前支持除FCM通道外的其他厂商通道。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '100001', - ], + 'schema' => ['description' => '标识每条消息在通知显示时的唯一标识,不同的通知栏消息可以相同的NotifyId,实现新的通知栏消息覆盖老的。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '100001'], ], [ 'name' => 'AndroidNotificationChannel', 'in' => 'query', - 'schema' => [ - 'description' => 'Android app的channelId,需要与app中的channelId能对应上。'."\n" - .'- 设置NotificationChannel参数,具体用途请参见[常见问题:Android 8.0以上设备通知接收不到](~~67398~~)。'."\n" - .'- 因OPPO通知私信通道的channel_id与app的channelId相同,故OPPO通道推送时,channel_id取此值。'."\n" - .'- 华为、FCM、阿里云自有通道推送中,channel_id取此值。', - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'Android app的channelId,需要与app中的channelId能对应上。'."\n" + .'- 设置NotificationChannel参数,具体用途请参见[常见问题:Android 8.0以上设备通知接收不到](~~67398~~)。'."\n" + .'- 因OPPO通知私信通道的channel_id与app的channelId相同,故OPPO通道推送时,channel_id取此值。'."\n" + .'- 华为、FCM、阿里云自有通道推送中,channel_id取此值。', 'type' => 'string', 'required' => false, 'example' => '1'], ], [ 'name' => 'AndroidNotificationHuaweiChannel', @@ -2094,10 +3229,7 @@ .'>- 需要在Huawei平台申请,[申请链接](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section893184112272)。', 'type' => 'string', 'required' => false, - 'enumValueTitles' => [ - 'LOW' => 'LOW', - 'NORMAL' => 'NORMAL', - ], + 'enumValueTitles' => ['LOW' => 'LOW', 'NORMAL' => 'NORMAL'], 'example' => 'LOW', ], ], @@ -2113,23 +3245,15 @@ .'需要在荣耀平台申请,[申请链接](https://developer.honor.com/cn/docs/11002/guides/notification-class#%E8%87%AA%E5%88%86%E7%B1%BB%E6%9D%83%E7%9B%8A%E7%94%B3%E8%AF%B7)。', 'type' => 'string', 'required' => false, - 'enumValueTitles' => [ - 'LOW' => 'LOW', - 'NORMAL' => 'NORMAL', - ], + 'enumValueTitles' => ['LOW' => 'LOW', 'NORMAL' => 'NORMAL'], 'example' => 'LOW', ], ], [ 'name' => 'AndroidNotificationXiaomiChannel', 'in' => 'query', - 'schema' => [ - 'description' => '设置小米通知类型的channelId,需要在小米平台申请,详见:[申请链接](https://dev.mi.com/console/doc/detail?pId=2422#_4)。'."\n" - .'>- 小米通道单个应用最多可申请8个channel,请提前做好规划。', - 'type' => 'string', - 'required' => false, - 'example' => 'michannel', - ], + 'schema' => ['description' => '设置小米通知类型的channelId,需要在小米平台申请,详见:[申请链接](https://dev.mi.com/console/doc/detail?pId=2422#_4)。'."\n" + .'>- 小米通道单个应用最多可申请8个channel,请提前做好规划。', 'type' => 'string', 'required' => false, 'example' => 'michannel'], ], [ 'name' => 'AndroidNotificationVivoChannel', @@ -2144,56 +3268,40 @@ .'>- 需要在vivo平台申请,详见:[申请链接](https://dev.vivo.com.cn/documentCenter/doc/359)。', 'type' => 'string', 'required' => false, - 'enumValueTitles' => [ - '0', - '1', - ], + 'enumValueTitles' => ['0', '1'], 'example' => 'classification', ], ], [ 'name' => 'AndroidNotificationGroup', 'in' => 'query', - 'schema' => [ - 'description' => '消息分组,同一组消息在通知栏里只显示最新一条和当前该组接受到的消息总数目,不会展示所有消息也无法展开。当前支持:'."\n" - ."\n" - .'- 华为'."\n" - .'- 荣耀'."\n" - .'- 自有通道', - 'type' => 'string', - 'required' => false, - 'example' => 'group-1', - ], + 'schema' => ['description' => '消息分组,同一组消息在通知栏里只显示最新一条和当前该组接受到的消息总数目,不会展示所有消息也无法展开。当前支持:'."\n" + ."\n" + .'- 华为厂商通道'."\n" + .'- 荣耀厂商通道'."\n" + .'- 自有通道 安卓 SDK3.9.1 及以下'."\n" + ."\n" + .'> 自有通道在安卓 SDK3.9.2 及以上的版本不再支持此参数', 'type' => 'string', 'required' => false, 'example' => 'group-1'], ], [ 'name' => 'AndroidNotificationThreadId', 'in' => 'query', - 'schema' => [ - 'description' => '消息分组,同一组消息在通知栏里折叠展示,可展开,不同组通知分开展示。当前支持:'."\n" - ."\n" - .'- 自有通道 安卓 SDK3.9.2 及以上', - 'type' => 'string', - 'required' => false, - 'example' => 'thread-1', - ], + 'schema' => ['description' => '消息分组,同一组消息在通知栏里折叠展示,可展开,不同组通知分开展示。当前支持:'."\n" + ."\n" + .'- 自有通道 安卓 SDK3.9.2 及以上', 'type' => 'string', 'required' => false, 'example' => 'thread-1'], ], [ 'name' => 'AndroidExtParameters', 'in' => 'query', - 'schema' => [ - 'description' => '设定通知的扩展属性。当推送类型PushType设置为MESSAGE消息类型时,该属性不生效。'."\n" - ."\n" - .'该参数要以JSON map的格式传入,否则会解析出错。', - 'type' => 'string', - 'required' => false, - 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}', - ], + 'schema' => ['description' => '设定通知的扩展属性。当推送类型PushType设置为MESSAGE消息类型时,该属性不生效。'."\n" + ."\n" + .'该参数要以JSON map的格式传入,否则会解析出错。', 'type' => 'string', 'required' => false, 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}'], ], [ 'name' => 'AndroidMessageHuaweiUrgency', 'in' => 'query', 'schema' => [ - 'description' => '华为通道透传消息投递优先级,取值如下:'."\n" + 'description' => '华为通道通知投递优先级,取值如下:'."\n" ."\n" .'- **HIGH**'."\n" .'- **NORMAL**'."\n" @@ -2201,95 +3309,71 @@ .'需要申请权限,具体请参见:[申请链接](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509)。', 'type' => 'string', 'required' => false, - 'enumValueTitles' => [ - 'HIGH' => 'HIGH', - 'NORMAL' => 'NORMAL', - ], + 'enumValueTitles' => ['HIGH' => 'HIGH', 'NORMAL' => 'NORMAL'], 'example' => 'HIGH', ], ], [ 'name' => 'AndroidMessageHuaweiCategory', 'in' => 'query', - 'schema' => [ - 'description' => '作用一:完成[自分类权益申请](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835?#section3410731125514)后,用于标识消息类型,确定[消息提醒方式](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#ZH-CN_TOPIC_0000001149358835__p3850133955718),对特定类型消息加快发送,取值请参考华为推送官方文档的[消息分类标准](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section1076611477914),填写文档表格中的“云端通知category取值”或“本地通知category取值”。'."\n" - ."\n" - .'作用二:[申请特殊权限](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509)后,用于标识高优先级透传场景,取值如下:'."\n" - .'- VOIP:音视频通话'."\n" - .'- PLAY_VOICE:语音播报'."\n" - ."\n" - .'> 对于“云端通知category取值”为“不涉及”的一概走阿里云自有通道,对于“本地通知category取值”为“不涉及”的一概走华为通道。', - 'type' => 'string', - 'required' => false, - 'example' => 'VOIP', - ], + 'schema' => ['description' => '作用一:完成[自分类权益申请](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835?#section3410731125514)后,用于标识消息类型,确定[消息提醒方式](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#ZH-CN_TOPIC_0000001149358835__p3850133955718),对特定类型消息加快发送,取值请参考华为推送官方文档的[消息分类标准](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section1076611477914),填写文档表格中的“云端通知category取值”或“本地通知category取值”。'."\n" + ."\n" + .'作用二:[申请特殊权限](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509)后,用于标识高优先级透传场景,取值如下:'."\n" + .'- VOIP:音视频通话'."\n" + .'- PLAY_VOICE:语音播报'."\n" + ."\n" + .'> 对于“云端通知category取值”为“不涉及”的一概走阿里云自有通道,对于“本地通知category取值”为“不涉及”的一概走华为通道。', 'type' => 'string', 'required' => false, 'example' => 'VOIP'], ], [ 'name' => 'AndroidMessageOppoCategory', 'in' => 'query', - 'schema' => [ - 'description' => 'OPPO将消息分类:通讯与服务、内容与营销两个类别进行管理。'."\n" - ."\n" - .'通讯与服务(需申请权限):'."\n" - .'- IM:即时聊天、音频、视频通话'."\n" - .'- ACCOUNT:个人账号与资产变化'."\n" - .'- DEVICE_REMINDER:个人设备提醒'."\n" - .'- ORDER:个人订单/物流状态变化'."\n" - .'- TODO:个人日程/待办'."\n" - .'- SUBSCRIPTION:个人订阅'."\n" - ."\n" - .'内容与营销:'."\n" - .'- NEWS:新闻资讯'."\n" - .'- CONTENT:内容推荐'."\n" - .'- MARKETING:平台活动'."\n" - .'- SOCIAL:社交动态'."\n" - ."\n" - .'详细请参考[OPUSH消息分类细则](https://open.oppomobile.com/new/developmentDoc/info?id=13189)', - 'type' => 'string', - 'required' => false, - 'example' => 'MARKETING', - ], + 'schema' => ['description' => 'OPPO将消息分类:通讯与服务、内容与营销两个类别进行管理。'."\n" + ."\n" + .'通讯与服务(需申请权限):'."\n" + .'- IM:即时聊天、音频、视频通话'."\n" + .'- ACCOUNT:个人账号与资产变化'."\n" + .'- DEVICE_REMINDER:个人设备提醒'."\n" + .'- ORDER:个人订单/物流状态变化'."\n" + .'- TODO:个人日程/待办'."\n" + .'- SUBSCRIPTION:个人订阅'."\n" + ."\n" + .'内容与营销:'."\n" + .'- NEWS:新闻资讯'."\n" + .'- CONTENT:内容推荐'."\n" + .'- MARKETING:平台活动'."\n" + .'- SOCIAL:社交动态'."\n" + ."\n" + .'详细请参考[OPUSH消息分类细则](https://open.oppomobile.com/new/developmentDoc/info?id=13189)', 'type' => 'string', 'required' => false, 'example' => 'MARKETING'], ], [ 'name' => 'AndroidMessageOppoNotifyLevel', 'in' => 'query', - 'schema' => [ - 'description' => 'OPPO通道通知栏消息提醒等级。可取值为:'."\n" - .'- 1:通知栏'."\n" - .'- 2:通知栏、锁屏、铃声、振动(通讯与服务类消息默认通知级别)'."\n" - .'- 16:通知栏、锁屏、铃声、振动、横幅(需申请权限)'."\n" - ."\n" - .'> 使用AndroidMessageOppoNotifyLevel参数时,必须同时传AndroidMessageOppoCategory参数。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'OPPO通道通知栏消息提醒等级。可取值为:'."\n" + .'- 1:通知栏'."\n" + .'- 2:通知栏、锁屏、铃声、振动(通讯与服务类消息默认通知级别)'."\n" + .'- 16:通知栏、锁屏、铃声、振动、横幅(需申请权限)'."\n" + ."\n" + .'> 使用AndroidMessageOppoNotifyLevel参数时,必须同时传AndroidMessageOppoCategory参数。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1'], ], [ 'name' => 'AndroidMessageVivoCategory', 'in' => 'query', - 'schema' => [ - 'description' => 'vivo将消息分为:系统消息、运营消息两个类别进行管理。'."\n" - .'系统消息:'."\n" - .'- IM:即时消息'."\n" - .'- ACCOUNT:账号与资产'."\n" - .'- TODO:日程待办'."\n" - .'- DEVICE_REMINDER:设备信息'."\n" - .'- ORDER:订单与物流'."\n" - .'- SUBSCRIPTION:订阅提醒'."\n" - ."\n" - .'运营消息:'."\n" - .'- NEWS:新闻'."\n" - .'- CONTENT:内容推荐'."\n" - .'- MARKETING:运营活动'."\n" - .'- SOCIAL:社交动态'."\n" - ."\n" - .'详细请参考[分类说明](https://dev.vivo.com.cn/documentCenter/doc/359#s-ef3qugc3)', - 'type' => 'string', - 'required' => false, - 'example' => 'TODO', - ], + 'schema' => ['description' => 'vivo将消息分为:系统消息、运营消息两个类别进行管理。'."\n" + .'系统消息:'."\n" + .'- IM:即时消息'."\n" + .'- ACCOUNT:账号与资产'."\n" + .'- TODO:日程待办'."\n" + .'- DEVICE_REMINDER:设备信息'."\n" + .'- ORDER:订单与物流'."\n" + .'- SUBSCRIPTION:订阅提醒'."\n" + ."\n" + .'运营消息:'."\n" + .'- NEWS:新闻'."\n" + .'- CONTENT:内容推荐'."\n" + .'- MARKETING:运营活动'."\n" + .'- SOCIAL:社交动态'."\n" + ."\n" + .'详细请参考[分类说明](https://dev.vivo.com.cn/documentCenter/doc/359#s-ef3qugc3)', 'type' => 'string', 'required' => false, 'example' => 'TODO'], ], [ 'name' => 'AndroidTargetUserType', @@ -2305,10 +3389,7 @@ 'format' => 'int32', 'required' => false, 'example' => '0', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], ], ], [ @@ -2323,15 +3404,9 @@ 'type' => 'integer', 'format' => 'int32', 'required' => false, - 'enumValueTitles' => [ - '0', - '1', - ], + 'enumValueTitles' => ['0', '1'], 'example' => '0', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], ], ], [ @@ -2347,10 +3422,7 @@ 'format' => 'int32', 'required' => false, 'example' => '0', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], ], ], [ @@ -2365,15 +3437,9 @@ 'type' => 'integer', 'format' => 'int32', 'required' => false, - 'enumValueTitles' => [ - '0', - '1', - ], + 'enumValueTitles' => ['0', '1'], 'example' => '0', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], ], ], [ @@ -2389,10 +3455,7 @@ 'format' => 'int32', 'required' => false, 'example' => '1', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], ], ], [ @@ -2406,120 +3469,66 @@ 'format' => 'int32', 'required' => false, 'example' => '1', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], ], ], [ 'name' => 'AndroidHuaweiReceiptId', 'in' => 'query', - 'schema' => [ - 'description' => '华为通道回执ID,该回执ID可以在华为通道推送运营平台的回执参数配置中查看。'."\n" - ."\n" - .'> 如果在华为通道推送运营平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云EMAS移动推送控制台中配置华为通道默认回执ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'RCP4C123456', - ], + 'schema' => ['description' => '华为通道回执ID,该回执ID可以在华为通道推送运营平台的回执参数配置中查看。'."\n" + ."\n" + .'> 如果在华为通道推送运营平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云EMAS移动推送控制台中配置华为通道默认回执ID。', 'type' => 'string', 'required' => false, 'example' => 'RCP4C123456'], ], [ 'name' => 'AndroidVivoReceiptId', 'in' => 'query', - 'schema' => [ - 'description' => 'vivo通道回执ID,该回执ID可以在vivo开放平台推送服务的应用信息中查看。'."\n" - ."\n" - .'> 如果在vivo开放平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云EMAS移动推送控制台中配置vivo通道默认回执ID。', - 'type' => 'string', - 'required' => false, - 'example' => '123', - ], + 'schema' => ['description' => 'vivo通道回执ID,该回执ID可以在vivo开放平台推送服务的应用信息中查看。'."\n" + ."\n" + .'> 如果在vivo开放平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云EMAS移动推送控制台中配置vivo通道默认回执ID。', 'type' => 'string', 'required' => false, 'example' => '123'], ], [ 'name' => 'AndroidBadgeClass', 'in' => 'query', - 'schema' => [ - 'description' => '角标设置应用入口Activity的全类名'."\n" - ."\n" - .'> 仅华为/荣耀产商通道推送时有效', - 'type' => 'string', - 'required' => false, - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - ], + 'schema' => ['description' => '角标设置应用入口Activity的全类名'."\n" + ."\n" + .'> 仅华为/荣耀产商通道推送时有效', 'type' => 'string', 'required' => false, 'example' => 'com.alibaba.cloudpushdemo.bizactivity'], ], [ 'name' => 'AndroidBadgeAddNum', 'in' => 'query', - 'schema' => [ - 'description' => '设置角标累加值,在原角标的基础上进行累加,取值范围[1~99]。'."\n" - .'> 仅华为/荣耀厂商通道推送时有效。AndroidBadgeAddNum 与 AndroidBadgeSetNum 同时存在时,以AndroidBadgeSetNum为准', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '99', - 'minimum' => '1', - 'example' => '1', - ], + 'schema' => ['description' => '设置角标累加值,在原角标的基础上进行累加,取值范围[1~99]。'."\n" + .'> 仅华为/荣耀厂商通道推送时有效。AndroidBadgeAddNum 与 AndroidBadgeSetNum 同时存在时,以AndroidBadgeSetNum为准', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '99', 'minimum' => '1', 'example' => '1'], ], [ 'name' => 'AndroidBadgeSetNum', 'in' => 'query', - 'schema' => [ - 'description' => '设置角标数字固定值,取值范围[0~99]。'."\n" - ."\n" - .'> 厂商通道推送时仅华为、荣耀通道生效。 阿里云自有通道推送时仅华为机型、荣耀机型与vivo机型上生效。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '99', - 'minimum' => '1', - 'example' => '5', - ], + 'schema' => ['description' => '设置角标数字固定值,取值范围[0~99]。'."\n" + ."\n" + .'> 厂商通道推送时仅华为、荣耀通道生效。 阿里云自有通道推送时仅华为机型、荣耀机型与vivo机型上生效。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '99', 'minimum' => '1', 'example' => '5'], ], [ 'name' => 'AndroidMusic', 'in' => 'query', - 'schema' => [ - 'description' => '华为厂商通道通知声音。指定存放在客户端项目app/src/main/res/raw/目录下的音频文件名,不需要携带文件格式后缀名。'."\n" - ."\n" - .'若不设置,则使用默认铃声。', - 'type' => 'string', - 'required' => false, - 'example' => 'alicloud_notification_sound', - ], + 'schema' => ['description' => '华为厂商通道通知声音。指定存放在客户端项目app/src/main/res/raw/目录下的音频文件名,不需要携带文件格式后缀名。'."\n" + ."\n" + .'若不设置,则使用默认铃声。', 'type' => 'string', 'required' => false, 'example' => 'alicloud_notification_sound'], ], [ 'name' => 'HarmonyRemind', 'in' => 'query', - 'schema' => [ - 'description' => '推送类型为消息时设备不在线,则这条推送会使用辅助弹窗功能。默认值为false,仅当PushType=MESSAGE时生效。'."\n" - ."\n" - .'如果消息转通知推送成功,收到通知是展示的数据为服务端设置的HarmonyRemindTitle和HarmonyRemindBody参数值。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['description' => '推送类型为消息时设备不在线,则这条推送会使用辅助弹窗功能。默认值为false,仅当PushType=MESSAGE时生效。'."\n" + ."\n" + .'如果消息转通知推送成功,收到通知是展示的数据为服务端设置的HarmonyRemindTitle和HarmonyRemindBody参数值。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], [ 'name' => 'HarmonyRemindTitle', 'in' => 'query', - 'schema' => [ - 'description' => 'Harmony消息转通知时使用的Harmony通知标题,仅当HarmonyRemind为true时有效。', - 'type' => 'string', - 'required' => false, - 'example' => '新消息', - ], + 'schema' => ['description' => 'Harmony消息转通知时使用的Harmony通知标题,仅当HarmonyRemind为true时有效。', 'type' => 'string', 'required' => false, 'example' => '新消息'], ], [ 'name' => 'HarmonyRemindBody', 'in' => 'query', - 'schema' => [ - 'description' => 'Harmony消息转通知时使用的Harmony通知内容,仅当HarmonyRemind为true时有效。', - 'type' => 'string', - 'required' => false, - 'example' => '您有一条新消息,请查收', - ], + 'schema' => ['description' => 'Harmony消息转通知时使用的Harmony通知内容,仅当HarmonyRemind为true时有效。', 'type' => 'string', 'required' => false, 'example' => '您有一条新消息,请查收'], ], [ 'name' => 'HarmonyCategory', @@ -2545,21 +3554,7 @@ 'type' => 'string', 'required' => false, 'example' => 'IM', - 'enum' => [ - 'IM', - 'VOIP', - 'SUBSCRIPTION', - 'TRAVEL', - 'HEALTH', - 'WORK', - 'ACCOUNT', - 'EXPRESS', - 'FINANCE', - 'DEVICE_REMINDER', - 'MAIL', - 'CUSTOMER_SERVICE', - 'MARKETING', - ], + 'enum' => ['IM', 'VOIP', 'SUBSCRIPTION', 'TRAVEL', 'HEALTH', 'WORK', 'ACCOUNT', 'EXPRESS', 'FINANCE', 'DEVICE_REMINDER', 'MAIL', 'CUSTOMER_SERVICE', 'MARKETING'], ], ], [ @@ -2578,27 +3573,15 @@ 'type' => 'string', 'required' => false, 'example' => 'SOCIAL_COMMUNICATION', - 'enum' => [ - 'SOCIAL_COMMUNICATION', - 'SERVICE_INFORMATION', - 'CONTENT_INFORMATION', - 'CUSTOMER_SERVICE', - 'OTHER_TYPES', - ], + 'enum' => ['SOCIAL_COMMUNICATION', 'SERVICE_INFORMATION', 'CONTENT_INFORMATION', 'CUSTOMER_SERVICE', 'OTHER_TYPES'], ], ], [ 'name' => 'HarmonyNotifyId', 'in' => 'query', - 'schema' => [ - 'description' => '每条消息在通知显示时的唯一标识。不携带时,推送服务自动为每条消息生成一个唯一标识;不同的通知消息可以拥有相同的notifyId,实现新消息覆盖旧消息功能。'."\n" - ."\n" - .'详情参见鸿蒙官网 [Notification.notifyId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], + 'schema' => ['description' => '每条消息在通知显示时的唯一标识。不携带时,推送服务自动为每条消息生成一个唯一标识;不同的通知消息可以拥有相同的notifyId,实现新消息覆盖旧消息功能。'."\n" + ."\n" + .'详情参见鸿蒙官网 [Notification.notifyId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0'], ], [ 'name' => 'HarmonyActionType', @@ -2611,38 +3594,25 @@ 'type' => 'string', 'required' => false, 'example' => 'APP_HOME_PAGE', - 'enum' => [ - 'APP_HOME_PAGE', - 'APP_CUSTOM_PAGE', - ], + 'enum' => ['APP_HOME_PAGE', 'APP_CUSTOM_PAGE'], ], ], [ 'name' => 'HarmonyAction', 'in' => 'query', - 'schema' => [ - 'description' => '应用内置页面ability对应的action。'."\n" - ."\n" - .'><notice>当HarmonyActionType为APP_CUSTOM_PAGE时,字段HarmonyUri和HarmonyAction至少填写一个。></notice>'."\n" - ."\n" - .'详情参见鸿蒙官网 [ClickAction.action](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section152462191216)', - 'type' => 'string', - 'required' => false, - 'example' => 'com.example.action', - ], + 'schema' => ['description' => '应用内置页面ability对应的action。'."\n" + ."\n" + .'><notice>当HarmonyActionType为APP_CUSTOM_PAGE时,字段HarmonyUri和HarmonyAction至少填写一个。></notice>'."\n" + ."\n" + .'详情参见鸿蒙官网 [ClickAction.action](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section152462191216)', 'type' => 'string', 'required' => false, 'example' => 'com.example.action'], ], [ 'name' => 'HarmonyUri', 'in' => 'query', - 'schema' => [ - 'description' => '应用内置页面ability对应的uri。'."\n" - .'><notice>当HarmonyActionType为APP_CUSTOM_PAGE时,字段HarmonyUri和HarmonyAction至少填写一个。当存在多个Ability时,分别填写不同Ability的action和uri,优先使用action查找对应的应用内置页面。></notice>'."\n" - ."\n" - .'详情参见鸿蒙官网 [ClickAction.uri](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section152462191216)', - 'type' => 'string', - 'required' => false, - 'example' => 'https://www.example.com:8080/push/example', - ], + 'schema' => ['description' => '应用内置页面ability对应的uri。'."\n" + .'><notice>当HarmonyActionType为APP_CUSTOM_PAGE时,字段HarmonyUri和HarmonyAction至少填写一个。当存在多个Ability时,分别填写不同Ability的action和uri,优先使用action查找对应的应用内置页面。></notice>'."\n" + ."\n" + .'详情参见鸿蒙官网 [ClickAction.uri](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section152462191216)', 'type' => 'string', 'required' => false, 'example' => 'https://www.example.com:8080/push/example'], ], [ 'name' => 'HarmonyRenderStyle', @@ -2654,175 +3624,103 @@ 'type' => 'string', 'required' => false, 'example' => 'NORMAL', - 'enum' => [ - 'NORMAL', - 'MULTI_LINE', - ], + 'enum' => ['NORMAL', 'MULTI_LINE'], ], ], [ 'name' => 'HarmonyImageUrl', 'in' => 'query', - 'schema' => [ - 'description' => '通知右侧大图标URL,URL使用的协议必须是HTTPS协议。'."\n" - ."\n" - .'> 支持图片格式为png、jpg、jpeg、heif、gif、bmp,图片长*宽<25000像素。'."\n" - ."\n" - .'详情参见鸿蒙官网 [Notification.image](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', - 'type' => 'string', - 'required' => false, - 'example' => 'https://example.com/xxx.png', - ], + 'schema' => ['description' => '通知右侧大图标URL,URL使用的协议必须是HTTPS协议。'."\n" + ."\n" + .'> 支持图片格式为png、jpg、jpeg、heif、gif、bmp,图片长*宽<25000像素。'."\n" + ."\n" + .'详情参见鸿蒙官网 [Notification.image](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', 'type' => 'string', 'required' => false, 'example' => 'https://example.com/xxx.png'], ], [ 'name' => 'HarmonyInboxContent', 'in' => 'query', - 'schema' => [ - 'description' => '多行文本样式的内容,当HarmonyRenderStyle为MULTI_LINE时,本字段必填,最多支持3条内容。', - 'type' => 'string', - 'required' => false, - 'example' => '["1.content1","2.content2","3.content3"]', - ], + 'schema' => ['description' => '多行文本样式的内容,当HarmonyRenderStyle为MULTI_LINE时,本字段必填,最多支持3条内容。', 'type' => 'string', 'required' => false, 'example' => '["1.content1","2.content2","3.content3"]'], ], [ 'name' => 'HarmonyExtParameters', 'in' => 'query', - 'schema' => [ - 'description' => '设定通知的扩展属性。当推送类型PushType设置为MESSAGE消息类型时,该属性不生效。'."\n" - ."\n" - .'该参数要以JSON map的格式传入,否则会解析出错。', - 'type' => 'string', - 'required' => false, - 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}'."\n", - ], + 'schema' => ['description' => '设定通知的扩展属性。当推送类型PushType设置为MESSAGE消息类型时,该属性不生效。'."\n" + ."\n" + .'该参数要以JSON map的格式传入,否则会解析出错。', 'type' => 'string', 'required' => false, 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}'."\n"], ], [ 'name' => 'HarmonyTestMessage', 'in' => 'query', - 'schema' => [ - 'description' => '测试消息标识:'."\n" - ."\n" - .'- false:正常消息(默认值)'."\n" - .'- true:测试消息'."\n" - ."\n" - .'详情参见鸿蒙官网 [pushOptions.testMessage](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212)', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => '测试消息标识:'."\n" + ."\n" + .'- false:正常消息(默认值)'."\n" + .'- true:测试消息'."\n" + ."\n" + .'详情参见鸿蒙官网 [pushOptions.testMessage](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212)', 'type' => 'boolean', 'required' => false, 'example' => 'true'], ], [ 'name' => 'HarmonyReceiptId', 'in' => 'query', - 'schema' => [ - 'description' => '鸿蒙通道回执ID,该回执ID可以在鸿蒙通道推送运营平台的回执参数配置中查看。'."\n" - ."\n" - .'> 如果在鸿蒙通道推送运营平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云EMAS移动推送控制台中配置鸿蒙通道默认回执ID。'."\n" - ."\n" - .'详情参见鸿蒙官网 [pushOptions.receiptId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212)', - 'type' => 'string', - 'required' => false, - 'example' => 'RCPB***DFD5', - ], + 'schema' => ['description' => '鸿蒙通道回执ID,该回执ID可以在鸿蒙通道推送运营平台的回执参数配置中查看。'."\n" + ."\n" + .'> 如果在鸿蒙通道推送运营平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云EMAS移动推送控制台中配置鸿蒙通道默认回执ID。'."\n" + ."\n" + .'详情参见鸿蒙官网 [pushOptions.receiptId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212)', 'type' => 'string', 'required' => false, 'example' => 'RCPB***DFD5'], ], [ 'name' => 'HarmonyExtensionPush', 'in' => 'query', - 'schema' => [ - 'description' => 'PushType为NOTICE时,是否为鸿蒙通知扩展消息。'."\n" - ."\n" - .'- true:发送通知扩展消息'."\n" - .'- false:发送普通通知(默认值)'."\n" - ."\n" - .'通知扩展消息需要先在鸿蒙侧申请权限才能发送,相关内容请参考鸿蒙文档[发送通知扩展消息](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-send-extend-noti-V5)。</br>'."\n" - .'鸿蒙SDK1.2.0版本开始支持。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true'."\n", - ], + 'schema' => ['description' => 'PushType为NOTICE时,是否为鸿蒙通知扩展消息。'."\n" + ."\n" + .'- true:发送通知扩展消息'."\n" + .'- false:发送普通通知(默认值)'."\n" + ."\n" + .'通知扩展消息需要先在鸿蒙侧申请权限才能发送,相关内容请参考鸿蒙文档[发送通知扩展消息](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-send-extend-noti-V5)。</br>'."\n" + .'鸿蒙SDK1.2.0版本开始支持。', 'type' => 'boolean', 'required' => false, 'example' => 'true'."\n"], ], [ 'name' => 'HarmonyExtensionExtraData', 'in' => 'query', - 'schema' => [ - 'description' => '通知扩展消息的额外数据。</br>'."\n" - .'发送鸿蒙通知扩展消息时有效。</br>'."\n" - .'概念上等同鸿蒙通知扩展消息的extraData字段,具体定义参考[鸿蒙ExtensionPayload说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section161192514234)。</br>'."\n" - .'鸿蒙SDK1.2.0版本开始支持。', - 'type' => 'string', - 'required' => false, - 'example' => '示例额外数据', - ], + 'schema' => ['description' => '通知扩展消息的额外数据。</br>'."\n" + .'发送鸿蒙通知扩展消息时有效。</br>'."\n" + .'概念上等同鸿蒙通知扩展消息的extraData字段,具体定义参考[鸿蒙ExtensionPayload说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section161192514234)。</br>'."\n" + .'鸿蒙SDK1.2.0版本开始支持。', 'type' => 'string', 'required' => false, 'example' => '示例额外数据'], ], [ 'name' => 'HarmonyBadgeAddNum', 'in' => 'query', - 'schema' => [ - 'description' => '鸿蒙应用角标累加数字。参考[鸿蒙角标addNum字段说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145)。</br>'."\n" - .'鸿蒙SDK1.2.0版本开始支持。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => '鸿蒙应用角标累加数字。参考[鸿蒙角标addNum字段说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145)。</br>'."\n" + .'鸿蒙SDK1.2.0版本开始支持。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1'], ], [ 'name' => 'HarmonyBadgeSetNum', 'in' => 'query', - 'schema' => [ - 'description' => '鸿蒙应用角标设置数字。参考[鸿蒙角标setNum字段说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145)。'."\n" - .'鸿蒙SDK1.2.0版本开始支持。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => '鸿蒙应用角标设置数字。参考[鸿蒙角标setNum字段说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145)。'."\n" + .'鸿蒙SDK1.2.0版本开始支持。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1'], ], [ 'name' => 'SmsTemplateName', 'in' => 'query', - 'schema' => [ - 'description' => '补发短信的模板名,可以在短信模板管理界面获取,是系统分配的名称,而非开发者设置的名称。', - 'type' => 'string', - 'required' => false, - 'example' => '短信模板名称', - ], + 'schema' => ['description' => '补发短信的模板名,可以在短信模板管理界面获取,是系统分配的名称,而非开发者设置的名称。', 'type' => 'string', 'required' => false, 'example' => '短信模板名称'], ], [ 'name' => 'SmsSignName', 'in' => 'query', - 'schema' => [ - 'description' => '补发短信的签名。', - 'type' => 'string', - 'required' => false, - 'example' => '短信签名', - ], + 'schema' => ['description' => '补发短信的签名。', 'type' => 'string', 'required' => false, 'example' => '短信签名'], ], [ 'name' => 'SmsParams', 'in' => 'query', - 'schema' => [ - 'description' => '短信模板的变量名值对,格式: `key1=value1&key2=value2`。', - 'type' => 'string', - 'required' => false, - 'example' => 'key1=value1', - ], + 'schema' => ['description' => '短信模板的变量名值对,格式: `key1=value1&key2=value2`。', 'type' => 'string', 'required' => false, 'example' => 'key1=value1'], ], [ 'name' => 'SmsDelaySecs', 'in' => 'query', - 'schema' => [ - 'description' => '触发短信的延迟时间,单位:秒。'."\n" - ."\n" - .'若使用短信联动必须设置,推荐设置为15秒以上,最大不超过3天,避免短信和推送的重复。'."\n" - ."\n" - .'> 短信联动时,ExpireTime参数失效,通知失效时间以SmsDelaySecs参数计算,失效时间为当前时间加上SmsDelaySecs时间。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'minimum' => '1', - 'example' => '15', - ], + 'schema' => ['description' => '触发短信的延迟时间,单位:秒。'."\n" + ."\n" + .'若使用短信联动必须设置,推荐设置为15秒以上,最大不超过3天,避免短信和推送的重复。'."\n" + ."\n" + .'> 短信联动时,ExpireTime参数失效,通知失效时间以SmsDelaySecs参数计算,失效时间为当前时间加上SmsDelaySecs时间。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'minimum' => '1', 'example' => '15'], ], [ 'name' => 'SmsSendPolicy', @@ -2837,74 +3735,38 @@ 'required' => false, 'maximum' => '1', 'minimum' => '0', - 'enumValueTitles' => [ - '0', - '1', - ], + 'enumValueTitles' => ['0', '1'], 'example' => '0', ], ], [ 'name' => 'SendSpeed', 'in' => 'query', - 'schema' => [ - 'description' => '该参数已废弃。', - 'type' => 'integer', - 'format' => 'int32', - 'deprecated' => true, - 'required' => false, - 'minimum' => '10000', - 'example' => '0', - ], + 'schema' => ['description' => '该参数已废弃。', 'type' => 'integer', 'format' => 'int32', 'deprecated' => true, 'required' => false, 'minimum' => '10000', 'example' => '0'], ], [ 'name' => 'AndroidXiaoMiNotifyTitle', 'in' => 'query', - 'schema' => [ - 'description' => '该参数已废弃,所有第三方辅助弹窗都由新参数**AndroidPopupTitle**统一支持。', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => '无', - ], + 'schema' => ['description' => '该参数已废弃,所有第三方辅助弹窗都由新参数**AndroidPopupTitle**统一支持。', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '无'], ], [ 'name' => 'AndroidXiaoMiNotifyBody', 'in' => 'query', - 'schema' => [ - 'description' => '该参数已废弃,所有第三方辅助弹窗都由新参数**AndroidPopupBody**统一支持。', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => '无', - ], + 'schema' => ['description' => '该参数已废弃,所有第三方辅助弹窗都由新参数**AndroidPopupBody**统一支持。', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '无'], ], [ 'name' => 'AndroidXiaoMiActivity', 'in' => 'query', - 'schema' => [ - 'description' => '该参数已废弃,所有第三方辅助弹窗都由新参数**AndroidPopupActivity**统一支持。', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => '无', - ], + 'schema' => ['description' => '该参数已废弃,所有第三方辅助弹窗都由新参数**AndroidPopupActivity**统一支持。', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '无'], ], [ 'name' => 'IdempotentToken', 'in' => 'query', - 'schema' => [ - 'description' => '用于防止API调用端重试造成服务端重复推送的一个幂等参数。15分钟内使用相同IdempotentToken进行调用时,只会进行一次推送,后续返回第一次成功推送的结果。'."\n" - ."\n" - .'> '."\n" - .'> - 参数格式为标准36位UUID(8-4-4-4-12),每个有效字符是0-9 或 a-f 范围内的一个十六进制的数字,不区分大小写。'."\n" - .'> - 此参数仅用于避免重试造成的重复推送,无法避免并发调用造成的重复推送。', - 'type' => 'string', - 'required' => false, - 'example' => 'c8016d13-6e76-410c-9bda-769383d11787', - 'maxLength' => 36, - 'minLength' => 36, - ], + 'schema' => ['description' => '用于防止API调用端重试造成服务端重复推送的一个幂等参数。15分钟内使用相同IdempotentToken进行调用时,只会进行一次推送,后续返回第一次成功推送的结果。'."\n" + ."\n" + .'> '."\n" + .'> - 参数格式为标准36位UUID(8-4-4-4-12),每个有效字符是0-9 或 a-f 范围内的一个十六进制的数字,不区分大小写。'."\n" + .'> - 此参数仅用于避免重试造成的重复推送,无法避免并发调用造成的重复推送。', 'type' => 'string', 'required' => false, 'example' => 'c8016d13-6e76-410c-9bda-769383d11787', 'maxLength' => 36, 'minLength' => 36], ], [ 'name' => 'AndroidMeizuNoticeMsgType', @@ -2918,27 +3780,15 @@ 'format' => 'int32', 'required' => false, 'docRequired' => false, - 'enumValueTitles' => [ - '公信消息(默认)', - '私信消息', - ], + 'enumValueTitles' => ['公信消息(默认)', '私信消息'], 'example' => '0', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], ], ], [ 'name' => 'AndroidOppoPrivateMsgTemplateId', 'in' => 'query', - 'schema' => [ - 'title' => '私信模板ID', - 'description' => 'OPPO 私信模板ID', - 'type' => 'string', - 'required' => false, - 'example' => '687557242b1634hzefs3d5013', - ], + 'schema' => ['title' => '私信模板ID', 'description' => 'OPPO 私信模板ID', 'type' => 'string', 'required' => false, 'example' => '687557242b1634hzefs3d5013'], ], [ 'name' => 'AndroidOppoPrivateTitleParameters', @@ -2949,11 +3799,7 @@ 'description' => 'OPPO 私信模版标题参数', 'type' => 'object', 'required' => false, - 'additionalProperties' => [ - 'type' => 'string', - 'description' => 'OPPO 私信模版标题中的变量名,变量值', - 'example' => 'my_title', - ], + 'additionalProperties' => ['type' => 'string', 'description' => 'OPPO 私信模版标题中的变量名,变量值', 'example' => 'my_title'], ], ], [ @@ -2965,94 +3811,122 @@ 'description' => 'OPPO 私信模版内容参数', 'type' => 'object', 'required' => false, - 'additionalProperties' => [ - 'type' => 'string', - 'description' => 'OPPO 私信模版内容中的变量名,变量值', - 'example' => 'my_content', - ], + 'additionalProperties' => ['type' => 'string', 'description' => 'OPPO 私信模版内容中的变量名,变量值', 'example' => 'my_content'], ], ], [ + 'name' => 'AndroidXiaomiTemplateId', + 'in' => 'query', + 'schema' => ['title' => '小米私信模板ID', 'description' => '小米私信模板ID', 'type' => 'string', 'required' => false, 'example' => 'P10645'], + ], + [ + 'name' => 'AndroidXiaomiTemplateParams', + 'in' => 'query', + 'schema' => ['title' => '小米私信模板参数,JSON字符串', 'description' => '小米私信模板参数,JSON字符串', 'type' => 'string', 'required' => false, 'example' => '{"keywords1":"Tom","keywords2":"phone"}'], + ], + [ 'name' => 'HarmonyLiveViewPayload', 'in' => 'query', - 'schema' => [ - 'description' => '鸿蒙实况窗数据结构 [LiveViewPayload](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/push-scenariozed-api-request-param-V13#section66881469306) 的 JSON 字符串,开发接入请参考文档[HarmonyOS 实况窗推送指南](https://help.aliyun.com/document_detail/2982112.html)', - 'type' => 'string', - 'required' => false, - 'example' => '{'."\n" - .' "activityId": 1,'."\n" - .' "operation": 0,'."\n" - .' "event": "TAXI",'."\n" - .' "status": "DRIVER_ON_THE_WAY",'."\n" - .' "activityData": {'."\n" - .' "notificationData": {'."\n" - .' "type": 3'."\n" - .' }'."\n" - .' }'."\n" - .'}', - ], + 'schema' => ['description' => '鸿蒙实况窗数据结构 [LiveViewPayload](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/push-scenariozed-api-request-param-V13#section66881469306) 的 JSON 字符串,开发接入请参考文档[HarmonyOS 实况窗推送指南](https://help.aliyun.com/document_detail/2982112.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "activityId": 1,'."\n" + .' "operation": 0,'."\n" + .' "event": "TAXI",'."\n" + .' "status": "DRIVER_ON_THE_WAY",'."\n" + .' "activityData": {'."\n" + .' "notificationData": {'."\n" + .' "type": 3'."\n" + .' }'."\n" + .' }'."\n" + .'}'], ], [ 'name' => 'AndroidHuaweiLiveNotificationPayload', 'in' => 'query', - 'schema' => [ - 'description' => '华为安卓实况窗数据结构 [LiveNotificationPayload](https://developer.huawei.com/consumer/cn/doc/HMSCore-References/rest-live-0000001562939968#ZH-CN_TOPIC_0000001700850537__p195121620102511) 的 JSON 字符串,开发接入请参考文档[华为实况窗推送指南](https://help.aliyun.com/document_detail/2983768.html)', - 'type' => 'string', - 'required' => false, - 'example' => '{'."\n" - .' "activityId": 1,'."\n" - .' "operation": 1,'."\n" - .' "event": "TAXI",'."\n" - .' "activityData": {'."\n" - .' "notificationData": {'."\n" - .' "type": 3'."\n" - .' }'."\n" - .' }'."\n" - .'}', - ], + 'schema' => ['description' => '华为安卓实况窗数据结构 [LiveNotificationPayload](https://developer.huawei.com/consumer/cn/doc/HMSCore-References/rest-live-0000001562939968#ZH-CN_TOPIC_0000001700850537__p195121620102511) 的 JSON 字符串,开发接入请参考文档[华为实况窗推送指南](https://help.aliyun.com/document_detail/2983768.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "activityId": 1,'."\n" + .' "operation": 1,'."\n" + .' "event": "TAXI",'."\n" + .' "activityData": {'."\n" + .' "notificationData": {'."\n" + .' "type": 3'."\n" + .' }'."\n" + .' }'."\n" + .'}'], ], [ 'name' => 'AndroidOppoIntelligentIntent', 'in' => 'query', - 'schema' => [ - 'description' => 'OPPO流体云的意图共享数据结构[IntelligentIntent](https://open.oppomobile.com/documentation/page/info?id=13565)的JSON字符串,开发接入请参考文档[OPPO流体云推送指南](https://help.aliyun.com/document_detail/2997310.html)', - 'type' => 'string', - 'required' => false, - 'example' => '{'."\n" - .' "intentName": "Example.Progress",'."\n" - .' "identifier": "d71ebd3119877b12ecdb6c4fe96b068e",'."\n" - .' "timestamp": 1729485000989,'."\n" - .' "serviceId": {'."\n" - .' "launcher": "999800001",'."\n" - .' "fluidCloud": "999900001"'."\n" - .' },'."\n" - .' "intentAction": {'."\n" - .' "actionStatus": 0'."\n" - .' },'."\n" - .' "intentEntity": {'."\n" - .' "entityName": "TAXI"'."\n" - .' }'."\n" - .'}', - ], + 'schema' => ['description' => 'OPPO流体云的意图共享数据结构[IntelligentIntent](https://open.oppomobile.com/documentation/page/info?id=13565)的JSON字符串,开发接入请参考文档[OPPO流体云推送指南](https://help.aliyun.com/document_detail/2997310.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "intentName": "Example.Progress",'."\n" + .' "identifier": "d71ebd3119877b12ecdb6c4fe96b068e",'."\n" + .' "timestamp": 1729485000989,'."\n" + .' "serviceId": {'."\n" + .' "launcher": "999800001",'."\n" + .' "fluidCloud": "999900001"'."\n" + .' },'."\n" + .' "intentAction": {'."\n" + .' "actionStatus": 0'."\n" + .' },'."\n" + .' "intentEntity": {'."\n" + .' "entityName": "TAXI"'."\n" + .' }'."\n" + .'}'], ], [ 'name' => 'AndroidOppoDeleteIntentData', 'in' => 'query', - 'schema' => [ - 'description' => 'OPPO流体云的意图删除数据结构[data](https://open.oppomobile.com/documentation/page/info?id=13578)的JSON字符串,当AndroidOppoIntelligentIntent参数已填写时此参数无效,开发接入请参考文档[OPPO流体云推送指南](https://help.aliyun.com/document_detail/2997310.html)', - 'type' => 'string', - 'required' => false, - 'example' => '{'."\n" - .' "intentName": "Example.Progress",'."\n" - .' "entityIds": ['."\n" - .' "A580202509130712"'."\n" - .' ],'."\n" - .' "serviceId": {'."\n" - .' "launcher": "999800001",'."\n" - .' "fluidCloud": "999900001"'."\n" - .' }'."\n" - .'}', - ], + 'schema' => ['description' => 'OPPO流体云的意图删除数据结构[data](https://open.oppomobile.com/documentation/page/info?id=13578)的JSON字符串,当AndroidOppoIntelligentIntent参数已填写时此参数无效,开发接入请参考文档[OPPO流体云推送指南](https://help.aliyun.com/document_detail/2997310.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "intentName": "Example.Progress",'."\n" + .' "entityIds": ['."\n" + .' "A580202509130712"'."\n" + .' ],'."\n" + .' "serviceId": {'."\n" + .' "launcher": "999800001",'."\n" + .' "fluidCloud": "999900001"'."\n" + .' }'."\n" + .'}'], + ], + [ + 'name' => 'AndroidVivoLiveMessage', + 'in' => 'query', + 'schema' => ['description' => 'vivo原子岛数据结构[liveMessage](https://dev.vivo.com.cn/documentCenter/doc/896#s-fdagzbd4)的JSON字符串,开发接入请参考文档[vivo原子岛推送指南](https://help.aliyun.com/zh/document_detail/3030718.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "operation": 0,'."\n" + .' "scene": "HEALTH_REGISTER",'."\n" + .' "templateType": 1,'."\n" + .' "showNotify": true,'."\n" + .' "changeRecord": 999,'."\n" + .' "capsuleData": {'."\n" + .' "bgColor": "#32d4d4"'."\n" + .' }'."\n" + .'}'], + ], + [ + 'name' => 'AndroidXiaomiFocusParam', + 'in' => 'query', + 'schema' => ['description' => '小米超级岛数据结构[miui.focus.param](https://dev.mi.com/xiaomihyperos/documentation/detail?pId=2131)的JSON字符串,开发接入请参考文档[小米超级岛推送指南](https://help.aliyun.com/zh/document_detail/3037956.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "param_v2": {'."\n" + .' "business": "taxi",'."\n" + .' "updatable": true,'."\n" + .' "orderId": "A580202509130712",'."\n" + .' "param_island": {'."\n" + .' "islandProperty": 1,'."\n" + .' "bigIslandArea": {'."\n" + .' "imageTextInfoLeft": {'."\n" + .' "type": 1'."\n" + .' }'."\n" + .' }'."\n" + .' }'."\n" + .' }'."\n" + .'}'], + ], + [ + 'name' => 'AndroidXiaomiFocusPics', + 'in' => 'query', + 'schema' => ['description' => '小米超级岛数据图片[miui.focus.pic_xxx](https://dev.mi.com/xiaomihyperos/documentation/detail?pId=2131)的JSON字符串,开发接入请参考文档[小米超级岛推送指南](https://help.aliyun.com/zh/document_detail/3037956.html)', 'type' => 'string', 'required' => false, 'example' => '{'."\n" + .' "miui.focus.pic_ticker": "https://example.com/ticker.jpg",'."\n" + .' "miui.focus.pic_aod": "https://example.com/aod.jpg",'."\n" + .' "miui.focus.pic_imageText": "https://example.com/imageText.jpg"'."\n" + .'}'], ], ], 'responses' => [ @@ -3060,104 +3934,37 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'MessageId' => [ - 'description' => '标志一次推送的消息ID。', - 'type' => 'string', - 'example' => '501029', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], + 'MessageId' => ['description' => '标志一次推送的消息ID。', 'type' => 'string', 'example' => '501029'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], ], + 'description' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidPeriod.ExceedDays', - 'errorMessage' => 'The period between specified EndTime and StartTime exceeds %s days.', - ], - [ - 'errorCode' => 'Invalid%s.Format', - 'errorMessage' => 'The specified %s format is invalid.', - ], - [ - 'errorCode' => 'AccountDisabled', - 'errorMessage' => 'Your account is not enabled.', - ], - [ - 'errorCode' => 'FileNotExist', - 'errorMessage' => 'The specified file does not exist.', - ], - [ - 'errorCode' => 'IncorrectPassword', - 'errorMessage' => 'The password is incorrect.', - ], - [ - 'errorCode' => 'NotApnsCertificate', - 'errorMessage' => 'The Certificate is not an APNs certificate.', - ], - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => 'The specified AppKey is not authorized.', - ], - [ - 'errorCode' => 'SendSpeedNotSupported', - 'errorMessage' => 'SendSpeed is not supported for specified Target.', - ], - [ - 'errorCode' => 'SmsProfileConfigFailed', - 'errorMessage' => 'Failed to configure SMS profile.', - ], - [ - 'errorCode' => 'SmsProfileGetFailed', - 'errorMessage' => 'Failed to get SMS profile.', - ], - [ - 'errorCode' => 'SmsRoleAuthorizeFailed', - 'errorMessage' => 'Failed to authorize SMS role.', - ], - [ - 'errorCode' => 'SmsRoleUnauthorized', - 'errorMessage' => 'The SMS role is unauthorized.', - ], - [ - 'errorCode' => 'TagsNumberBeyondLimit', - 'errorMessage' => 'The number of tags bound to this app exceeds the limit.', - ], - [ - 'errorCode' => 'Invalid%s.LengthExceed', - 'errorMessage' => 'The specified %s length cannot be greater than %s.', - ], - [ - 'errorCode' => 'Invalid%s.BytesExceed', - 'errorMessage' => 'The specified %s exceeds the %s bytes limit.', - ], - [ - 'errorCode' => 'Invalid%s.Empty', - 'errorMessage' => 'The specified %s cannot be empty.', - ], - [ - 'errorCode' => 'Invalid.Parameter', - 'errorMessage' => 'The specified parameter is invalid: %s.', - ], - [ - 'errorCode' => 'TargetNotSupported', - 'errorMessage' => 'Target is not supported for batch push.', - ], + ['errorCode' => 'InvalidPeriod.ExceedDays', 'errorMessage' => 'The period between specified EndTime and StartTime exceeds %s days.', 'description' => '开始时间和结束时间超过%s天。'], + ['errorCode' => 'Invalid%s.Format', 'errorMessage' => 'The specified %s format is invalid.', 'description' => '参数格式错误。'], + ['errorCode' => 'AccountDisabled', 'errorMessage' => 'Your account is not enabled.', 'description' => '功能未启用。'], + ['errorCode' => 'FileNotExist', 'errorMessage' => 'The specified file does not exist.', 'description' => '指定的文件不存在。'], + ['errorCode' => 'IncorrectPassword', 'errorMessage' => 'The password is incorrect.', 'description' => '密码错误。'], + ['errorCode' => 'NotApnsCertificate', 'errorMessage' => 'The Certificate is not an APNs certificate.', 'description' => '不是APNs证书。'], + ['errorCode' => 'PermissionDenied', 'errorMessage' => 'The specified AppKey is not authorized.', 'description' => ''], + ['errorCode' => 'SendSpeedNotSupported', 'errorMessage' => 'SendSpeed is not supported for specified Target.', 'description' => '制定目标不支持SendSpeed参数。'], + ['errorCode' => 'SmsProfileConfigFailed', 'errorMessage' => 'Failed to configure SMS profile.', 'description' => 'SMS配置失败。'], + ['errorCode' => 'SmsProfileGetFailed', 'errorMessage' => 'Failed to get SMS profile.', 'description' => 'SMS配置获取失败。'], + ['errorCode' => 'SmsRoleAuthorizeFailed', 'errorMessage' => 'Failed to authorize SMS role.', 'description' => 'SMS角色授权失败。'], + ['errorCode' => 'SmsRoleUnauthorized', 'errorMessage' => 'The SMS role is unauthorized.', 'description' => 'SMS角色没有授权。'], + ['errorCode' => 'TagsNumberBeyondLimit', 'errorMessage' => 'The number of tags bound to this app exceeds the limit.', 'description' => '当前app绑定的tag数量超过限制。'], + ['errorCode' => 'Invalid%s.LengthExceed', 'errorMessage' => 'The specified %s length cannot be greater than %s.', 'description' => '参数长度超限。'], + ['errorCode' => 'Invalid%s.BytesExceed', 'errorMessage' => 'The specified %s exceeds the %s bytes limit.', 'description' => '参数的字节数超限。'], + ['errorCode' => 'Invalid%s.Empty', 'errorMessage' => 'The specified %s cannot be empty.', 'description' => '参数不能为空。'], + ['errorCode' => 'Invalid.Parameter', 'errorMessage' => 'The specified parameter is invalid: %s.', 'description' => '参数%s无效。'], + ['errorCode' => 'TargetNotSupported', 'errorMessage' => 'Target is not supported for batch push.', 'description' => '批量推送不支持的Target。'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', - ], - [ - 'errorCode' => 'Timeout', - 'errorMessage' => 'The request processing is timeout.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', 'description' => '服务端错误,建议重试,仍然失败则提工单'], + ['errorCode' => 'Timeout', 'errorMessage' => 'The request processing is timeout.', 'description' => '请求处理超时。'], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', @@ -3244,17 +4051,61 @@ .'System.out.printf("RequestId: %s, MessageId: %s\\n",'."\n" .' pushResponse.getRequestId(), pushResponse.getMessageId());'."\n" .'```', - ], - 'MassPush' => [ - 'summary' => '批量给不同的设备推送不同的消息/通知。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + 'changeSet' => [ + ['createdAt' => '2025-11-25T08:17:08.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2025-09-19T03:03:01.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2025-09-18T09:24:49.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2025-09-09T08:21:44.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2025-08-21T11:21:59.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2025-03-21T09:22:04.000Z', 'description' => '错误码发生变更、请求参数发生变更'], + ['createdAt' => '2025-01-16T07:23:21.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-11-13T03:09:40.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-10-23T08:32:10.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-10-23T08:32:10.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-10-10T01:26:31.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-08-07T05:34:11.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-06-25T04:40:41.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2023-12-18T11:18:34.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2023-10-12T07:14:53.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2023-03-15T14:04:19.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2022-06-07T11:29:17.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2021-09-15T06:53:20.000Z', 'description' => '请求参数发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '1000000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'Push'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:Push', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + ], + 'PushMessageToAndroid' => [ + 'summary' => '推送消息到Android设备端,消息通过阿里云推送自有通道下发。设备上App接收到消息后,需要自行处理后续动作,比如实现业务行为,或者构造本地通知弹出等。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -3262,1231 +4113,62 @@ ], 'operationType' => 'readAndWrite', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREemasBNY9P0', - 'FEATUREemasTZ8VEZ', - ], - ], + 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'paid'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'docRequired' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], ], [ - 'name' => 'PushTask', - 'in' => 'formData', - 'style' => 'repeatList', + 'name' => 'Target', + 'in' => 'query', 'schema' => [ - 'description' => '独立推送任务组成的数组。', - 'type' => 'array', - 'items' => [ - 'description' => '独立推送任务。', - 'type' => 'object', - 'properties' => [ - 'PushType' => [ - 'description' => '推送类型。取值:'."\n" - ."\n" - .'- MESSAGE:表示消息。'."\n" - .'- NOTICE:表示通知。', - 'type' => 'string', - 'required' => true, - 'enumValueTitles' => [ - 'MESSAGE' => 'MESSAGE', - 'NOTICE' => 'NOTICE', - ], - 'example' => 'MESSAGE', - ], - 'DeviceType' => [ - 'description' => '设备类型,取值范围为:'."\n" - ."\n" - .'- HARMONY:鸿蒙设备'."\n" - .'- iOS:iOS设备'."\n" - .'- ANDROID:Android设备'."\n" - .'- ALL:当AppKey为旧版本双端应用时,代表同时推送Android和iOS设备;当AppKey为新版本单端应用时,效果和指定该应用类型对应的设备类型一样。', - 'type' => 'string', - 'required' => true, - 'enumValueTitles' => [ - 'ALL' => 'ALL', - 'ANDROID' => 'ANDROID', - 'iOS' => 'iOS', - ], - 'example' => 'HARMONY', - ], - 'Target' => [ - 'description' => '推送目标。可取值:'."\n" - ."\n" - .'- DEVICE:根据设备推送。'."\n" - .'- ACCOUNT:根据账号推送。'."\n" - .'- ALIAS:根据别名推送。', - 'type' => 'string', - 'required' => true, - 'enumValueTitles' => [ - 'ACCOUNT' => 'ACCOUNT', - 'ALIAS' => 'ALIAS', - 'DEVICE' => 'DEVICE', - ], - 'example' => 'DEVICE', - ], - 'TargetValue' => [ - 'description' => '根据Target来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" - ."\n" - .'- Target=DEVICE,值如`deviceid1,deviceid2`(最多支持1000个)。'."\n" - .'- Target=ACCOUNT,值如`account1,account2`(最多支持1000个)。'."\n" - .'- Target=ALIAS,值如`alias1,alias2`(最多支持1000个)。', - 'type' => 'string', - 'required' => true, - 'example' => 'deviceid1,deviceid2', - ], - 'StoreOffline' => [ - 'description' => '离线消息/通知是否保存。StoreOffline默认设置为false。'."\n" - ."\n" - .'若保存,在推送时候用户不在线,在过期时间(ExpireTime)内用户上线时会被再次发送。ExpireTime默认为72小时。iOS通知走APNs链路,不受StoreOffline影响。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'SendChannels' => [ - 'description' => '指定发送通道,取值如下:'."\n" - ."\n" - .'- accs:阿里云自有通道'."\n" - .'- huawei:华为通道'."\n" - .'- honor:荣耀通道'."\n" - .'- xiaomi:小米通道'."\n" - .'- oppo:OPPO通道'."\n" - .'- vivo:vivo通道'."\n" - .'- meizu:魅族通道'."\n" - .'- gcm:谷歌GCM通道(旧版HTTP)'."\n" - .'- fcm: 谷歌Firebase通道(HTTP v1 API)'."\n" - .'- apns:APNs通道'."\n" - .'- harmony: 鸿蒙通道'."\n" - ."\n" - .'>- 如果未配置此参数,则代表所有通道均可使用。'."\n" - .'>- 如果配置了此参数,则严格使用参数中的通道。'."\n" - .'>- 如果配置的通道和发送策略冲突(如iOS通知仅走APNs通道,但本参数中不包含apns),则不实施发送。'."\n" - .'>- 若配置gcm,则可以走谷歌GCM和FCM通道,若配置fcm,则只能走谷歌FCM通道。', - 'type' => 'string', - 'required' => false, - 'example' => 'accs,huawei,xiaomi', - ], - 'PushTime' => [ - 'description' => '用于定时发送。不设置缺省是立即发送。'."\n" - ."\n" - .'时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ。', - 'type' => 'string', - 'required' => false, - 'example' => '2019-02-20T00:00:00Z', - ], - 'ExpireTime' => [ - 'description' => '离线消息/通知的过期时间,和StoreOffline配合使用,过期则不会再被发送,最长保存72小时。默认为72小时。'."\n" - ."\n" - .'时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ,过期时间不能小于当前时间或者定时发送时间加上3秒(`ExpireTime > PushTime+3秒`),3秒是为了冗余网络和系统延迟造成的误差。建议单推不小于1分钟,全推、批量推送不少于10分钟。', - 'type' => 'string', - 'required' => false, - 'example' => '2019-02-20T00:00:00Z', - ], - 'JobKey' => [ - 'description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](~~434651~~)。', - 'type' => 'string', - 'required' => false, - 'example' => '123', - ], - 'Title' => [ - 'description' => '推送时通知/消息的标题,长度限制:200字节。'."\n" - .'在Android推送和Harmony推送时必填;在iOS推送通知时非必填,如果填写,则:'."\n" - .'* iOS 10+通知显示标题。'."\n" - .'* iOS 8.2 <= iOS系统 < iOS 10:替换通知应用名称。', - 'type' => 'string', - 'required' => false, - 'example' => 'title', - ], - 'Body' => [ - 'description' => 'Android和Harmony推送时通知的内容/消息的内容;iOS消息/通知内容,推送的内容大小是有限制的,参见[产品限制](~~92832~~)。', - 'type' => 'string', - 'required' => false, - 'example' => 'hello', - ], - 'Trim' => [ - 'description' => '是否自动对过长标题、内容进行截断。'."\n" - .'注:仅支持明确限制标题、内容的厂商通道,对APNs、华为、荣耀通道等不限制标题、内容,只限制总请求体大小的不适用。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], - 'iOSApnsEnv' => [ - 'description' => 'iOS的通知是通过APNs中心来发送的,需要填写对应的环境信息。'."\n" - ."\n" - .'- DEV:开发环境,适用于Xcode直接安装调试的应用。'."\n" - .'- PRODUCT:生产环境,适用于 App Store、TestFlight、Ad Hoc 及企业分发的应用。', - 'type' => 'string', - 'required' => false, - 'enumValueTitles' => [ - 'DEV' => 'DEV', - 'PRODUCT' => 'PRODUCT', - ], - 'example' => 'DEV', - ], - 'iOSRemind' => [ - 'description' => '消息推送时设备不在线(即与移动推送的服务端的长连接通道不通),则这条推送会做为通知,通过苹果的APNs通道送达一次。'."\n" - ."\n" - .'> 离线消息转通知仅适用于生产环境。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'iOSSubtitle' => [ - 'description' => 'iOS通知副标题内容(iOS 10+)。', - 'type' => 'string', - 'required' => false, - 'example' => 'subtitle', - ], - 'iOSRemindBody' => [ - 'description' => 'iOS消息转通知时使用的iOS通知内容,仅当iOSApnsEnv=PRODUCT && iOSRemind为true时有效。', - 'type' => 'string', - 'required' => false, - 'example' => 'ios通知body', - ], - 'iOSMusic' => [ - 'description' => 'iOS通知声音。指定存放在app bundle或沙盒Library/Sounds目录下的音频文件名,请参见:iOS推送如何设定通知声音。'."\n" - ."\n" - .'若指定为空串(””),通知为静音;若不设置,默认填充default为系统提示音。', - 'type' => 'string', - 'required' => false, - 'example' => '””', - ], - 'iOSBadge' => [ - 'description' => 'iOS应用图标右上角角标。'."\n" - ."\n" - .'> 若iOSBadgeAutoIncrement设置为True,则此项必须为空。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], - 'iOSBadgeAutoIncrement' => [ - 'description' => '是否开启角标自增功能,默认为false。'."\n" - ."\n" - .'>当该项为true时,iOSBadge必须为空。'."\n" - ."\n" - .'角标自增功能由推送服务端维护每个设备的角标计数,需要用户使用V1.9.5以上版本的SDK,并且需要用户主动同步角标数字到服务端。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'iOSSilentNotification' => [ - 'description' => '是否开启iOS静默通知。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'iOSMutableContent' => [ - 'description' => 'iOS通知处理扩展标记(iOS 10+)。如果设为true,则APNs推送的通知在弹出前,可先到达Extension进行处理。静默通知时,必须设为true。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'iOSNotificationCategory' => [ - 'description' => '指定iOS通知Category(iOS 10+)。', - 'type' => 'string', - 'required' => false, - 'example' => 'ios', - ], - 'iOSNotificationCollapseId' => [ - 'description' => '设备收到有相同CollapseId的消息,会合并成一条。设备不在线,连续发相同CollapseId的消息,通知栏只会显示一条,iOS 10+支持设置此参数。', - 'type' => 'string', - 'required' => false, - 'example' => 'ZD2011', - ], - 'iOSNotificationThreadId' => [ - 'description' => '通过该属性对iOS的远程通知进行分组,标记折叠的组别识别名。仅支持iOS 12.0+版本。', - 'type' => 'string', - 'required' => false, - 'example' => 'abc', - ], - 'iOSInterruptionLevel' => [ - 'description' => '中断级别,取值:'."\n" - ."\n" - .'- passive:系统在不点灯、不播放声音的情况下将通知添加到通知列表中。'."\n" - ."\n" - .'- active:系统立即显示通知,点亮屏幕,并可以播放声音。'."\n" - ."\n" - .'- time-sensitive:系统立即呈现通知,点亮屏幕,并可以播放声音,但不会突破系统通知控制。'."\n" - ."\n" - .'- critical:系统立即显示通知,屏幕亮起,并绕过静音开关播放声音。'."\n", - 'type' => 'string', - 'required' => false, - 'enumValueTitles' => [ - 'critical' => 'critical', - 'time-sensitive' => 'time-sensitive', - 'active' => 'active', - 'passive' => 'passive', - ], - 'example' => 'active', - ], - 'iOSRelevanceScore' => [ - 'description' => '摘要突出显示分数。取值范围:\\[0,1\\]的浮点数。', - 'type' => 'number', - 'format' => 'double', - 'required' => false, - 'example' => '0.01', - ], - 'iOSExtParameters' => [ - 'description' => 'iOS通知的扩展属性。'."\n" - ."\n" - .'iOS10+可以在此指定富媒体推送通知的资源Url:`{"attachment": "https://xxxx.xxx/notification_pic.png"} `。该参数要以JSON map的格式传入,否则会解析出错。', - 'type' => 'string', - 'required' => false, - 'example' => '{"attachment": "https://xxxx.xxx/notification_pic.png"} ', - ], - 'iOSLiveActivityEvent' => [ - 'description' => '启动、更新、结束实时活动。'."\n" - ."\n" - .'- 枚举:start | update | end', - 'type' => 'string', - 'required' => false, - 'example' => 'start', - 'enum' => [ - 'start', - 'update', - 'end', - ], - ], - 'iOSLiveActivityId' => [ - 'description' => '由设备上报到用户服务器的Live Activity ID,Live Activity的唯一标识符。', - 'type' => 'string', - 'required' => false, - 'example' => '66B94673-B32E-4CA7-863C-3E523054FD46', - ], - 'iOSLiveActivityAttributesType' => [ - 'description' => '待启动的Live Activity类型。'."\n" - .'> iOSLiveActivityEvent为start时必填', - 'type' => 'string', - 'required' => false, - 'example' => 'OrderActivityAttributes', - ], - 'iOSLiveActivityAttributes' => [ - 'description' => 'JSON字符串,灵动岛推送透传静态参数。包含静态的用户自定义信息,如产品编号、订单信息等。'."\n" - ."\n" - .'> iOSLiveActivityEvent为start时必填', - 'type' => 'string', - 'required' => false, - 'example' => '{"orderId": "12345", "product": "Shoes"}', - ], - 'iOSLiveActivityContentState' => [ - 'description' => '灵动岛推送透传动态参数,包含实时更新信息,如价格、库存变化等', - 'type' => 'string', - 'required' => false, - 'example' => '{"status": "delivered", "estimatedArrival": "2023-12-31T12:00:00Z"}', - ], - 'iOSLiveActivityDismissalDate' => [ - 'description' => '结束的Live Activity在锁屏上会保留到该指定时间,最长为4小时。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1743131967', - ], - 'iOSLiveActivityStaleDate' => [ - 'description' => '秒级时间戳,标记该活动的内容过期时间。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1743131967', - ], - 'AndroidNotifyType' => [ - 'description' => '通知的提醒方式。可取值:'."\n" - ."\n" - .'- **VIBRATE**:振动(默认值)'."\n" - .'- **SOUND**:声音'."\n" - .'- **BOTH**:声音和振动'."\n" - .'- **NONE**:静音', - 'type' => 'string', - 'required' => false, - 'enumValueTitles' => [ - 'SOUND' => 'SOUND', - 'NONE' => 'NONE', - 'VIBRATE' => 'VIBRATE', - 'BOTH' => 'BOTH', - ], - 'example' => 'VIBRATE', - ], - 'AndroidRemind' => [ - 'description' => '推送类型为消息时设备不在线,则这条推送会使用辅助弹窗功能。默认值为false,仅当PushType=MESSAGE时生效。'."\n" - ."\n" - .'如果消息转通知推送成功,收到通知是展示的数据为服务端设置的AndroidPopupTitle和AndroidPopupBody参数值,点击通知在辅助弹窗的onSysNoticeOpened方法中获取到的数据是服务端设置的Title和Body参数值。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'AndroidOpenType' => [ - 'description' => '点击通知后动作。可取值:'."\n" - ."\n" - .'- APPLICATION:打开应用(默认值)'."\n" - .'- ACTIVITY:打开应用AndroidActivity'."\n" - .'- URL:打开URL'."\n" - .'- NONE:无跳转', - 'type' => 'string', - 'required' => false, - 'enumValueTitles' => [ - 'APPLICATION' => 'APPLICATION', - 'NONE' => 'NONE', - 'ACTIVITY' => 'ACTIVITY', - 'URL' => 'URL', - ], - 'example' => 'APPLICATION', - ], - 'AndroidActivity' => [ - 'description' => '设定通知打开的activity。'."\n" - ."\n" - .'仅当PushTask.N.AndroidOpenType=”Activity”时传入,如:`com.alibaba.cloudpushdemo.bizactivity`。', - 'type' => 'string', - 'required' => false, - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - ], - 'AndroidOpenUrl' => [ - 'description' => 'Android收到推送后打开对应的url。仅当PushTask.N.AndroidOpenType=”URL”时传入。', - 'type' => 'string', - 'required' => false, - 'example' => 'https://xxxx.xxx', - ], - 'AndroidPopupActivity' => [ - 'description' => '指定点击通知后跳转的Activity。', - 'type' => 'string', - 'required' => false, - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - ], - 'AndroidPopupTitle' => [ - 'description' => '辅助弹窗模式下标题内容。AndroidPopupActivity参数不为空时,该参数必填。 '."\n" - ."\n" - .'长度限制:50个字符,中英文都算一个字符。'."\n" - ."\n" - .'如使用厂商通道,则需同时符合厂商通道的限制,具体内容参见:[Android端辅助通道推送限制](~~165253~~)。', - 'type' => 'string', - 'required' => false, - 'example' => 'hello', - ], - 'AndroidPopupBody' => [ - 'description' => '辅助弹窗模式下Body内容。AndroidPopupActivity参数不为空时,该参数必填。'."\n" - ."\n" - .'长度限制:200个字符,中英文都算一个字符。'."\n" - ."\n" - .'如使用厂商通道,则需同时符合厂商通道的限制,具体内容参见:[Android端辅助通道推送限制](~~165253~~)。', - 'type' => 'string', - 'required' => false, - 'example' => 'hello', - ], - 'AndroidRenderStyle' => [ - 'description' => '通知样式,取值为:'."\n" - .'- **0**:标准模式(默认)'."\n" - .'- **1**:长文本模式(支持华为、荣耀、小米、OPPO、魅族、自有通道)'."\n" - .'- **2**:大图模式(支持自有通道,不支持小米机型)'."\n" - .'- **3**:列表模式(支持华为、荣耀、小米、OPPO、自有通道)'."\n" - .'> 若使用非标准模式,此参数必须提供。', - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], - 'AndroidBigTitle' => [ - 'description' => '长文本模式下的标题,长度限制:200个字节(1个汉字算作3字节)。'."\n" - ."\n" - .'- 当前仅支持荣耀通道和华为通道EMUI11及以上版本。'."\n" - ."\n" - .'- 若长文本模式下未提供此参数,则从Title、AndroidPopupTitle里取第一个非空值。', - 'type' => 'string', - 'required' => false, - 'example' => '示例长标题', - ], - 'AndroidBigBody' => [ - 'description' => '长文本模式下的body,长度限制:1000字节(1个汉字算作3字节),发送时受具体厂商通道的限制。'."\n" - ."\n" - .'当前支持:'."\n" - .'- 华为:EMUI10及以上'."\n" - .'- 荣耀:Magic UI 4.0及以上'."\n" - .'- 小米:MIUI10及以上'."\n" - .'- OPPO:ColorOS5.0以上'."\n" - .'- 魅族:Flyme'."\n" - .'- 自有通道:安卓SDK3.6.0及以上'."\n" - ."\n" - .'若长文本模式下未提供此参数,则从Body、AndroidPopupBody里取第一个非空值。', - 'type' => 'string', - 'required' => false, - 'example' => '示例长文本', - ], - 'AndroidBigPictureUrl' => [ - 'description' => '大图模式下的图片URL,当前支持:自有通道:安卓SDK3.6.0及以上。', - 'type' => 'string', - 'required' => false, - 'example' => 'https://imag.example.com/image.png', - ], - 'AndroidXiaomiBigPictureUrl' => [ - 'description' => '该参数已废弃,小米从 2023.08 开始,官方在新设备/系统已经不再支持推送时动态设置小图标、右侧图标、大图片功能。', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => 'https://f6.market.xiaomi.com/download/MiPass/aaa/bbb.png', - ], - 'AndroidImageUrl' => [ - 'description' => '大图标URL。当前支持:'."\n" - .'- 华为EMUI(仅长文本模式、Inbox模式下适用)'."\n" - .'- 荣耀Magic UI(仅长文本模式下适用)'."\n" - .'- 自有通道:安卓SDK3.5.0及以上'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'https://imag.example.com/image.png', - ], - 'AndroidXiaomiImageUrl' => [ - 'description' => '该参数已废弃,小米从 2023.08 开始,官方在新设备/系统已经不再支持推送时动态设置小图标、右侧图标、大图片功能。', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => 'https://imag.example.com/image.png', - ], - 'AndroidInboxBody' => [ - 'description' => 'Inbox模式下的正文,内容为合法的JSON Array,且元素不超过5个。当前支持:'."\n" - ."\n" - .'- 华为:EMUI9及以上'."\n" - .'- 荣耀:Magic UI 4.0及以上'."\n" - .'- 小米:MIUI10及以上'."\n" - .'- OPPO:ColorOS 5.0以上'."\n" - .'- 自有通道:安卓SDK3.6.0及以上', - 'type' => 'string', - 'required' => false, - 'example' => '["第一行","第二行"]', - ], - 'AndroidNotificationBarType' => [ - 'description' => 'Android自定义通知栏样式,取值:1-100。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], - 'AndroidNotificationBarPriority' => [ - 'description' => 'Android通知在通知栏展示时排列位置的优先级。可取值: -2,-1,0,1,2。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], - 'AndroidNotificationNotifyId' => [ - 'description' => '标识每条消息在通知显示时的唯一标识,不同的通知栏消息可以相同的NotifyId,实现新的通知栏消息覆盖老的,当前支持除FCM通道外的其他厂商通道。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '100001', - ], - 'AndroidNotificationChannel' => [ - 'description' => 'Android app的channelId,需要与app中的channelId能对应上。'."\n" - .'- 设置NotificationChannel参数,具体用途请参见[常见问题:Android 8.0以上设备通知接收不到](~~67398~~)。'."\n" - .'- 因OPPO通知私信通道的channel_id与app的channelId相同,故OPPO通道推送时,channel_id取此值。'."\n" - .'- 华为、FCM、阿里云自有通道推送中,channel_id取此值。', - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], - 'AndroidNotificationHuaweiChannel' => [ - 'description' => '设置Huawei通知消息分类importance参数,决定用户设备消息通知行为,取值如下:'."\n" - ."\n" - .'- LOW:资讯营销类消息'."\n" - .'- NORMAL:服务与通讯类消息'."\n" - ."\n" - .'>- 当前华为通道建议使用AndroidMessageHuaweiCategory进行通知分类,可不再使用AndroidNotificationHuaweiChannel。'."\n" - .'>- 需要在Huawei平台申请,[申请链接](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section893184112272)。', - 'type' => 'string', - 'required' => false, - 'enumValueTitles' => [ - 'LOW' => 'LOW', - 'NORMAL' => 'NORMAL', - ], - 'example' => 'LOW', - ], - 'AndroidNotificationHonorChannel' => [ - 'description' => '设置荣耀通知消息分类importance参数,决定用户设备消息通知行为,取值如下:'."\n" - ."\n" - .'- LOW:资讯营销类消息'."\n" - ."\n" - .'- NORMAL:服务与通讯类消息'."\n" - ."\n" - .'需要在荣耀平台申请,[申请链接](https://developer.honor.com/cn/docs/11002/guides/notification-class#%E8%87%AA%E5%88%86%E7%B1%BB%E6%9D%83%E7%9B%8A%E7%94%B3%E8%AF%B7)。', - 'type' => 'string', - 'required' => false, - 'enumValueTitles' => [ - 'LOW' => 'LOW', - 'NORMAL' => 'NORMAL', - ], - 'example' => 'LOW', - ], - 'AndroidNotificationXiaomiChannel' => [ - 'description' => '设置小米通知类型的channelId,需要在小米平台申请,详见:[申请链接](https://dev.mi.com/console/doc/detail?pId=2422#_4)。'."\n" - .'>- 小米通道单个应用最多可申请8个channel,请提前做好规划。', - 'type' => 'string', - 'required' => false, - 'example' => 'michannel', - ], - 'AndroidNotificationVivoChannel' => [ - 'description' => '设置vivo通知消息分类,取值为:'."\n" - ."\n" - .'- 0:运营类消息(默认)'."\n" - .'- 1:系统类消息'."\n" - ."\n" - .'>- 当前vivo通道建议使用AndroidMessageVivoCategory进行通知分类,可不再使用AndroidNotificationVivoChannel。'."\n" - .'>- 需要在vivo平台申请,详见:[申请链接](https://dev.vivo.com.cn/documentCenter/doc/359)。', - 'type' => 'string', - 'required' => false, - 'enumValueTitles' => [ - '0', - '1', - ], - 'example' => '0', - ], - 'AndroidNotificationGroup' => [ - 'description' => '消息分组,同一组消息在通知栏里只显示最新一条和当前该组接受到的消息总数目,不会展示所有消息也无法展开。当前支持:'."\n" - ."\n" - .'- 华为'."\n" - .'- 荣耀'."\n" - .'- 自有通道', - 'type' => 'string', - 'required' => false, - 'example' => 'group-1', - ], - 'AndroidNotificationThreadId' => [ - 'description' => '消息分组,同一组消息在通知栏里折叠展示,可展开,不同组通知分开展示。当前支持:'."\n" - ."\n" - .'- 自有通道 安卓 SDK3.9.2 及以上', - 'type' => 'string', - 'required' => false, - 'example' => 'thread-1', - ], - 'AndroidExtParameters' => [ - 'description' => '设定通知的扩展属性。当推送类型PushType设置为MESSAGE消息类型时,该属性不生效。'."\n" - ."\n" - .'该参数要以JSON map的格式传入,否则会解析出错。', - 'type' => 'string', - 'required' => false, - 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}', - ], - 'AndroidMessageHuaweiUrgency' => [ - 'description' => '华为通道透传消息投递优先级,取值如下:'."\n" - ."\n" - .'- HIGH'."\n" - ."\n" - .'- NORMAL'."\n" - ."\n" - .'需要申请权限,具体请参见:[申请链接](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509)。'."\n", - 'type' => 'string', - 'required' => false, - 'enumValueTitles' => [ - 'HIGH' => 'HIGH', - 'NORMAL' => 'NORMAL', - ], - 'example' => 'HIGH', - ], - 'AndroidMessageHuaweiCategory' => [ - 'description' => '作用一:完成[自分类权益申请](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835?#section3410731125514)后,用于标识消息类型,确定[消息提醒方式](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#ZH-CN_TOPIC_0000001149358835__p3850133955718),对特定类型消息加快发送,取值请参考华为推送官方文档的[消息分类标准](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section1076611477914),填写文档表格中的“云端通知category取值”或“本地通知category取值”。'."\n" - ."\n" - .'作用二:[申请特殊权限](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509)后,用于标识高优先级透传场景,取值如下:'."\n" - .'- VOIP:音视频通话'."\n" - .'- PLAY_VOICE:语音播报'."\n" - ."\n" - .'> 对于“云端通知category取值”为“不涉及”的一概走阿里云自有通道,对于“本地通知category取值”为“不涉及”的一概走华为通道。', - 'type' => 'string', - 'required' => false, - 'example' => 'SUBSCRIPTION', - ], - 'AndroidMessageOppoCategory' => [ - 'description' => 'OPPO将消息分类:通讯与服务、内容与营销两个类别进行管理。'."\n" - ."\n" - .'通讯与服务(需申请权限):'."\n" - .'- IM:即时聊天、音频、视频通话'."\n" - .'- ACCOUNT:个人账号与资产变化'."\n" - .'- DEVICE_REMINDER:个人设备提醒'."\n" - .'- ORDER:个人订单/物流状态变化'."\n" - .'- TODO:个人日程/待办'."\n" - .'- SUBSCRIPTION:个人订阅'."\n" - ."\n" - .'内容与营销:'."\n" - .'- NEWS:新闻资讯'."\n" - .'- CONTENT:内容推荐'."\n" - .'- MARKETING:平台活动'."\n" - .'- SOCIAL:社交动态'."\n" - ."\n" - .'详细请参考[OPUSH消息分类细则](https://open.oppomobile.com/new/developmentDoc/info?id=13189)', - 'type' => 'string', - 'required' => false, - 'example' => 'MARKETING', - ], - 'AndroidMessageOppoNotifyLevel' => [ - 'description' => 'OPPO通道通知栏消息提醒等级。可取值为:'."\n" - .'- 1:通知栏'."\n" - .'- 2:通知栏、锁屏、铃声、振动(通讯与服务类消息默认通知级别)'."\n" - .'- 16:通知栏、锁屏、铃声、振动、横幅(需申请权限)'."\n" - ."\n" - .'> 使用AndroidMessageOppoNotifyLevel参数时,必须同时传AndroidMessageOppoCategory参数。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], - 'AndroidMessageVivoCategory' => [ - 'description' => 'vivo将消息分为:系统消息、运营消息两个类别进行管理。 '."\n" - ."\n" - .'系统消息:'."\n" - .'- IM:即时消息'."\n" - .'- ACCOUNT:账号与资产'."\n" - .'- TODO:日程待办'."\n" - .'- DEVICE_REMINDER:设备信息'."\n" - .'- ORDER:订单与物流'."\n" - .'- SUBSCRIPTION:订阅提醒'."\n" - ."\n" - .'运营消息:'."\n" - .'- NEWS:新闻'."\n" - .'- CONTENT:内容推荐'."\n" - .'- MARKETING:运营活动'."\n" - .'- SOCIAL:社交动态'."\n" - .'> 详细请参考[分类说明](https://dev.vivo.com.cn/documentCenter/doc/359#s-ef3qugc3)', - 'type' => 'string', - 'required' => false, - 'example' => 'TODO', - ], - 'AndroidTargetUserType' => [ - 'description' => '设置厂商通道通知类型:'."\n" - .'- **0**:正式通知(默认)。'."\n" - .'- **1**:测试通知。'."\n" - ."\n" - .'>- 本参数配置后等价于同时配置AndroidHuaweiTargetUserType、AndroidHonorTargetUserType、AndroidVivoPushMode、AndroidOppoIntentEnv四个参数,具体厂商通道的对应参数能覆盖本参数。'."\n" - .'>- 当前支持:华为通道、荣耀通道、vivo通道、OPPO流体云。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidHuaweiTargetUserType' => [ - 'description' => '设置华为通道通知类型:'."\n" - .'- **0**:正式通知(默认)。'."\n" - .'- **1**:测试通知。'."\n" - ."\n" - .'> 每个应用每日可发送该测试通知500条且不受每日单设备推送数量上限要求。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'enumValueTitles' => [ - '0', - '1', - ], - 'example' => '1', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidHonorTargetUserType' => [ - 'description' => '设置荣耀通道通知类型:'."\n" - .'- **0**:正式通知(默认)。'."\n" - .'- **1**:测试通知。'."\n" - ."\n" - .'> 每个应用每日可发送该测试通知1000条且不受每日单设备推送数量上限要求。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidVivoPushMode' => [ - 'description' => '设置vivo通道通知类型:'."\n" - .'- **0**:正式推送(默认)。'."\n" - .'- **1**:测试推送。'."\n" - ."\n" - .'> 测试推送请事先在vivo控制台配置测试设备。测试设备RegId可在设备启动日志中搜索“onReceiveRegId regId”获得。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'enumValueTitles' => [ - '0', - '1', - ], - 'example' => '1', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidOppoIntentEnv' => [ - 'description' => '设置OPPO流体云推送环境'."\n" - .'- **0**:正式环境(默认)。'."\n" - .'- **1**:测试环境。'."\n" - ."\n" - .'> OPPO流体云测试环境需要参考[环境搭建](https://open.oppomobile.com/documentation/page/info?id=13590)在客户端搭建', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidHuaweiBusinessType' => [ - 'description' => '设置华为快通知参数'."\n" - .'- **0**:发送华为普通通知(默认)。'."\n" - .'- **1**:发送华为快通知。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidHuaweiReceiptId' => [ - 'description' => '华为通道回执ID,该回执ID可以在华为通道推送运营平台的回执参数配置中查看。'."\n" - ."\n" - .'> 如果在华为通道推送运营平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云EMAS移动推送控制台中配置华为通道默认回执ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'RCP4C123456', - ], - 'AndroidVivoReceiptId' => [ - 'description' => 'vivo通道回执ID,该回执ID可以在vivo开放平台推送服务的应用信息中查看。'."\n" - ."\n" - .'> 如果在vivo开放平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云EMAS移动推送控制台中配置vivo通道默认回执ID。', - 'type' => 'string', - 'required' => false, - 'example' => '123', - ], - 'AndroidBadgeClass' => [ - 'description' => '角标设置应用入口Activity的全类名'."\n" - ."\n" - .'> 仅华为/荣耀产商通道推送时有效', - 'type' => 'string', - 'required' => false, - 'example' => 'com.alibaba.cloudpushdemo.bizactivity'."\n", - ], - 'AndroidBadgeAddNum' => [ - 'description' => '设置角标累加值,在原角标的基础上进行累加,取值范围[1~99]。'."\n" - .'> 仅华为/荣耀厂商通道推送时有效。AndroidBadgeAddNum 与 AndroidBadgeSetNum 同时存在时,以AndroidBadgeSetNum为准', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], - 'AndroidBadgeSetNum' => [ - 'description' => '设置角标数字固定值,取值范围[0~99]。'."\n" - ."\n" - .'> 厂商通道推送时仅华为、荣耀通道生效。 阿里云自有通道推送时仅华为机型、荣耀机型与vivo机型上生效。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5', - 'default' => '0', - ], - 'AndroidMusic' => [ - 'description' => '华为厂商通道通知声音。指定存放在客户端项目 app/src/main/res/raw/目录下的音频文件名,不需要携带文件格式后缀名。'."\n" - ."\n" - .'若不设置,则使用默认铃声。', - 'type' => 'string', - 'required' => false, - 'example' => 'alicloud_notification_sound', - ], - 'HarmonyRemind' => [ - 'description' => '推送类型为消息时设备不在线,则这条推送会使用辅助弹窗功能。默认值为false,仅当PushType=MESSAGE时生效。'."\n" - ."\n" - .'如果消息转通知推送成功,收到通知是展示的数据为服务端设置的HarmonyRemindTitle和HarmonyRemindBody参数值。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], - 'HarmonyRemindTitle' => [ - 'description' => 'Harmony消息转通知时使用的Harmony通知标题,仅当HarmonyRemind为true时有效。', - 'type' => 'string', - 'required' => false, - 'example' => '新消息', - ], - 'HarmonyRemindBody' => [ - 'description' => 'Harmony消息转通知时使用的Harmony通知内容,仅当HarmonyRemind为true时有效。', - 'type' => 'string', - 'required' => false, - 'example' => '您有一条新消息,请查收', - ], - 'HarmonyCategory' => [ - 'description' => '通知消息类别。完成申请通知消息自分类权益后,用于标识消息类型,不同的通知消息类型影响消息展示和提醒方式。取值如下:'."\n" - ."\n" - .'- IM:即时聊天'."\n" - .'- VOIP:音视频通话'."\n" - .'- SUBSCRIPTION:订阅'."\n" - .'- TRAVEL:出行'."\n" - .'- HEALTH:健康'."\n" - .'- WORK:工作事项提醒'."\n" - .'- ACCOUNT:账号动态'."\n" - .'- EXPRESS:订单&物流'."\n" - .'- FINANCE:财务'."\n" - .'- DEVICE_REMINDER:设备提醒'."\n" - .'- MAIL:邮件'."\n" - .'- CUSTOMER_SERVICE:客服消息'."\n" - .'- MARKETING:新闻、内容推荐、社交动态、产品促销、财经动态、生活资讯、调研、功能推荐、运营活动(仅对内容进行标识,不会加快消息发送),统称为资讯营销类消息'."\n" - ."\n" - .'详情参见鸿蒙官网 [Notification.category](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', - 'type' => 'string', - 'required' => false, - 'example' => 'IM', - 'enum' => [ - 'IM', - 'VOIP', - 'SUBSCRIPTION', - 'TRAVEL', - 'HEALTH', - 'WORK', - 'ACCOUNT', - 'EXPRESS', - 'FINANCE', - 'DEVICE_REMINDER', - 'MAIL', - 'CUSTOMER_SERVICE', - 'MARKETING', - ], - ], - 'HarmonyNotificationSlotType' => [ - 'description' => '使用指定类型的通知渠道。仅在阿里云自有通道在线时有效。'."\n" - ."\n" - .'- SOCIAL_COMMUNICATION: 社交通信。'."\n" - .'- SERVICE_INFORMATION: 服务提醒。'."\n" - .'- CONTENT_INFORMATION: 内容资讯。'."\n" - .'- CUSTOMER_SERVICE: 客服消息。该类型用于用户与商家之间的客服消息,需由用户主动发起。'."\n" - .'- OTHER_TYPES: 其他。'."\n" - ."\n" - .'详情参见鸿蒙官网 [SlotType](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-notificationmanager-V5#slottype)', - 'type' => 'string', - 'required' => false, - 'example' => 'SOCIAL_COMMUNICATION', - 'enum' => [ - 'SOCIAL_COMMUNICATION', - 'SERVICE_INFORMATION', - 'CONTENT_INFORMATION', - 'CUSTOMER_SERVICE', - 'OTHER_TYPES', - ], - ], - 'HarmonyNotifyId' => [ - 'description' => '每条消息在通知显示时的唯一标识。不携带时,推送服务自动为每条消息生成一个唯一标识;不同的通知消息可以拥有相同的notifyId,实现新消息覆盖旧消息功能。'."\n" - ."\n" - .'详情参见鸿蒙官网 [Notification.notifyId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], - 'HarmonyActionType' => [ - 'description' => '点击通知后动作。可取值:'."\n" - ."\n" - .'- APP_HOME_PAGE:打开应用首页'."\n" - .'- APP_CUSTOM_PAGE:打开应用自定义页面', - 'type' => 'string', - 'required' => false, - 'example' => 'APP_HOME_PAGE', - 'enum' => [ - 'APP_HOME_PAGE', - 'APP_CUSTOM_PAGE', - ], - ], - 'HarmonyAction' => [ - 'description' => '应用内置页面ability对应的action。'."\n" - ."\n" - .'><notice>当HarmonyActionType为APP_CUSTOM_PAGE时,字段HarmonyUri和HarmonyAction至少填写一个。></notice>'."\n" - ."\n" - .'详情参见鸿蒙官网 [ClickAction.action](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section152462191216)', - 'type' => 'string', - 'required' => false, - 'example' => 'com.example.action', - ], - 'HarmonyUri' => [ - 'description' => '应用内置页面ability对应的uri。'."\n" - .'><notice>当HarmonyActionType为APP_CUSTOM_PAGE时,字段HarmonyUri和HarmonyAction至少填写一个。当存在多个Ability时,分别填写不同Ability的action和uri,优先使用action查找对应的应用内置页面。></notice>'."\n" - ."\n" - .'详情参见鸿蒙官网 [ClickAction.uri](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section152462191216)', - 'type' => 'string', - 'required' => false, - 'example' => 'https://www.example.com:8080/push/example', - ], - 'HarmonyRenderStyle' => [ - 'description' => '通知消息样式:'."\n" - .'- NORMAL: 普通通知(默认值)'."\n" - .'- MULTI_LINE: 多行文本样式', - 'type' => 'string', - 'required' => false, - 'example' => 'NORMAL', - 'enum' => [ - 'NORMAL', - 'MULTI_LINE', - ], - ], - 'HarmonyImageUrl' => [ - 'description' => '通知右侧大图标URL,URL使用的协议必须是HTTPS协议。'."\n" - ."\n" - .'> 支持图片格式为png、jpg、jpeg、heif、gif、bmp,图片长*宽<25000像素。'."\n" - ."\n" - .'详情参见鸿蒙官网 [Notification.image](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', - 'type' => 'string', - 'required' => false, - 'example' => 'https://example.com/xxx.png', - ], - 'HarmonyInboxContent' => [ - 'description' => '多行文本样式的内容,当HarmonyRenderStyle为MULTI_LINE时,本字段必填,最多支持3条内容。', - 'type' => 'string', - 'required' => false, - 'example' => '["1.content1","2.content2","3.content3"]'."\n", - ], - 'HarmonyExtParameters' => [ - 'description' => '设定通知的扩展属性。当推送类型PushType设置为MESSAGE消息类型时,该属性不生效。'."\n" - ."\n" - .'该参数要以JSON map的格式传入,否则会解析出错。', - 'type' => 'string', - 'required' => false, - 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}'."\n", - ], - 'HarmonyTestMessage' => [ - 'description' => '测试消息标识:'."\n" - ."\n" - .'- false:正常消息(默认值)'."\n" - .'- true:测试消息'."\n" - ."\n" - .'详情参见鸿蒙官网 [pushOptions.testMessage](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212)', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'HarmonyReceiptId' => [ - 'description' => '鸿蒙通道回执ID,该回执ID可以在鸿蒙通道推送运营平台的回执参数配置中查看。'."\n" - ."\n" - .'> 如果在鸿蒙通道推送运营平台配置的默认回执配置是阿里云回执,则无需提供,如果不是,建议优先在阿里云EMAS移动推送控制台中配置鸿蒙通道默认回执ID。'."\n" - ."\n" - .'详情参见鸿蒙官网 [pushOptions.receiptId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212)', - 'type' => 'string', - 'required' => false, - 'example' => 'RCPB***DFD5'."\n", - ], - 'HarmonyExtensionPush' => [ - 'description' => 'PushType为NOTICE时,是否为鸿蒙通知扩展消息。'."\n" - ."\n" - .'- true:发送通知扩展消息'."\n" - .'- false:发送普通通知(默认值)'."\n" - ."\n" - .'通知扩展消息需要先在鸿蒙侧申请权限才能发送,相关内容请参考鸿蒙文档[发送通知扩展消息](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-send-extend-noti-V5)。</br>'."\n" - .'鸿蒙SDK1.2.0版本开始支持。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'HarmonyExtensionExtraData' => [ - 'description' => '通知扩展消息的额外数据。</br>'."\n" - .'发送鸿蒙通知扩展消息时有效。</br>'."\n" - .'概念上等同鸿蒙通知扩展消息的extraData字段,具体定义参考[鸿蒙ExtensionPayload说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section161192514234)。</br>'."\n" - .'鸿蒙SDK1.2.0版本开始支持。', - 'type' => 'string', - 'required' => false, - 'example' => '示例额外数据', - ], - 'HarmonyBadgeAddNum' => [ - 'description' => '鸿蒙应用角标累加数字。参考[鸿蒙角标addNum字段说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145)。</br>'."\n" - .'鸿蒙SDK1.2.0版本开始支持。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], - 'HarmonyBadgeSetNum' => [ - 'description' => '鸿蒙应用角标设置数字。参考[鸿蒙角标setNum字段说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145)。</br>'."\n" - .'鸿蒙SDK1.2.0版本开始支持。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], - 'SendSpeed' => [ - 'description' => '该参数已废弃。', - 'type' => 'integer', - 'format' => 'int32', - 'deprecated' => true, - 'required' => false, - 'example' => '0', - ], - 'AndroidXiaoMiNotifyTitle' => [ - 'description' => '该参数已废弃,所有第三方辅助弹窗都由新参数**AndroidPopupTitle**统一支持。', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => '无', - ], - 'AndroidXiaoMiNotifyBody' => [ - 'description' => '该参数已废弃,所有第三方辅助弹窗都由新参数**AndroidPopupBody**统一支持。', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => '无', - ], - 'AndroidXiaoMiActivity' => [ - 'description' => '该参数已废弃,所有第三方辅助弹窗都由新参数**AndroidPopupActivity**统一支持。', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => '无', - ], - 'AndroidMeizuNoticeMsgType' => [ - 'description' => '魅族消息类型'."\n" - ."\n" - .'- 0 公信消息(默认)'."\n" - .'- 1 私信消息', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'enumValueTitles' => [ - '公信消息(默认)', - '私信消息', - ], - 'example' => '0', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidOppoPrivateMsgTemplateId' => [ - 'title' => 'Oppo私信模板ID,已废弃,如需使用请使用Push接口,或升级MassPushV2', - 'description' => 'OPPO 私信模板 ID'."\n" - ."\n" - .'><warning>OPPO 私信模板功能已不再由 MaasPush 支持。如需使用该功能,请改用 Push、PushV2 或 MassPushV2 接口></warning>', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => '687557242b1634hzef3zd5013', - ], - 'AndroidOppoPrivateTitleParameters' => [ - 'title' => 'Oppo私信模板title参数,已废弃,如需使用请使用Push接口,或升级MassPushV2', - 'description' => 'OPPO 私信模版标题参数', - 'type' => 'object', - 'deprecated' => true, - 'required' => false, - 'additionalProperties' => [ - 'type' => 'string', - 'description' => 'OPPO 私信模版标题中的变量名,变量值', - 'example' => 'my_title', - ], - ], - 'AndroidOppoPrivateContentParameters' => [ - 'title' => 'Oppo私信模板content参数,已废弃,如需使用请使用Push接口,或升级MassPushV2', - 'description' => 'OPPO 私信模版内容参数', - 'type' => 'object', - 'deprecated' => true, - 'required' => false, - 'additionalProperties' => [ - 'type' => 'string', - 'description' => 'OPPO 私信模版内容中的变量名,变量值', - 'example' => 'my_content', - ], - ], - 'HarmonyLiveViewPayload' => [ - 'description' => '鸿蒙实况窗数据结构 [LiveViewPayload](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/push-scenariozed-api-request-param-V13#section66881469306) 的 JSON 字符串,开发接入请参考文档[HarmonyOS 实况窗推送指南](https://help.aliyun.com/document_detail/2982112.html)', - 'type' => 'string', - 'required' => false, - 'example' => '{'."\n" - .' "activityId": 1,'."\n" - .' "operation": 0,'."\n" - .' "event": "TAXI",'."\n" - .' "status": "DRIVER_ON_THE_WAY",'."\n" - .' "activityData": {'."\n" - .' "notificationData": {'."\n" - .' "type": 3'."\n" - .' }'."\n" - .' }'."\n" - .'}', - ], - 'AndroidHuaweiLiveNotificationPayload' => [ - 'description' => '华为安卓实况窗数据结构 [LiveNotificationPayload](https://developer.huawei.com/consumer/cn/doc/HMSCore-References/rest-live-0000001562939968#ZH-CN_TOPIC_0000001700850537__p195121620102511) 的 JSON 字符串,开发接入请参考文档[华为实况窗推送指南](https://help.aliyun.com/document_detail/2983768.html)', - 'type' => 'string', - 'required' => false, - 'example' => '{'."\n" - .' "activityId": 1,'."\n" - .' "operation": 1,'."\n" - .' "event": "TAXI",'."\n" - .' "activityData": {'."\n" - .' "notificationData": {'."\n" - .' "type": 3'."\n" - .' }'."\n" - .' }'."\n" - .'}', - ], - 'AndroidOppoIntelligentIntent' => [ - 'description' => 'OPPO流体云的意图共享数据结构[IntelligentIntent](https://open.oppomobile.com/documentation/page/info?id=13565)的JSON字符串,开发接入请参考文档[OPPO流体云推送指南](https://help.aliyun.com/document_detail/2997310.html)', - 'type' => 'string', - 'required' => false, - 'example' => '{'."\n" - .' "intentName": "Example.Progress",'."\n" - .' "identifier": "d71ebd3119877b12ecdb6c4fe96b068e",'."\n" - .' "timestamp": 1729485000989,'."\n" - .' "serviceId": {'."\n" - .' "launcher": "999800001",'."\n" - .' "fluidCloud": "999900001"'."\n" - .' },'."\n" - .' "intentAction": {'."\n" - .' "actionStatus": 0'."\n" - .' },'."\n" - .' "intentEntity": {'."\n" - .' "entityName": "TAXI"'."\n" - .' }'."\n" - .'}', - ], - 'AndroidOppoDeleteIntentData' => [ - 'description' => 'OPPO流体云的意图删除数据结构[data](https://open.oppomobile.com/documentation/page/info?id=13578)的JSON字符串,当AndroidOppoIntelligentIntent参数已填写时此参数无效,开发接入请参考文档[OPPO流体云推送指南](https://help.aliyun.com/document_detail/2997310.html)', - 'type' => 'string', - 'required' => false, - 'example' => '{'."\n" - .' "intentName": "Example.Progress",'."\n" - .' "entityIds": ['."\n" - .' "A580202509130712"'."\n" - .' ],'."\n" - .' "serviceId": {'."\n" - .' "launcher": "999800001",'."\n" - .' "fluidCloud": "999900001"'."\n" - .' }'."\n" - .'}', - ], - ], - 'required' => false, - ], + 'description' => '推送目标。可取值:'."\n" + ."\n" + .'- **DEVICE**:根据设备推送'."\n" + .'- **ACCOUNT**:根据账号推送'."\n" + .'- **ALIAS**:根据别名推送'."\n" + .'- **TAG**:根据标签推送'."\n" + .'- **ALL**:推送给全部设备', + 'type' => 'string', 'required' => true, - 'maxItems' => 100, + 'example' => 'ALL', + 'enum' => ['ALL', 'DEVICE', 'ACCOUNT', 'ALIAS', 'TAG'], ], ], [ - 'name' => 'IdempotentToken', + 'name' => 'TargetValue', 'in' => 'query', - 'schema' => [ - 'description' => '用于防止API调用端重试造成服务端重复推送的一个幂等参数。15分钟内使用相同IdempotentToken进行调用时,只会进行一次推送,后续返回第一次成功推送的结果。'."\n" - ."\n" - .'> '."\n" - .'> - 参数格式为标准36位UUID(8-4-4-4-12),每个有效字符是0-9 或 a-f 范围内的一个十六进制的数字,不区分大小写。'."\n" - .'> - 此参数仅用于避免重试造成的重复推送,无法避免并发调用造成的重复推送。', - 'type' => 'string', - 'required' => false, - 'example' => 'c8016d13-6e76-410c-9bda-769383d11787', - 'maxLength' => 36, - 'minLength' => 36, - ], + 'schema' => ['description' => '根据Target来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" + ."\n" + .'- Target=DEVICE,值如`deviceid111,deviceid1111`(最多支持1000个)。'."\n" + .'- Target=ACCOUNT,值如`account111,account222`(最多支持1000个)。'."\n" + .'- Target=ALIAS,值如`alias111,alias222`(最多支持1000个)。'."\n" + .'- Target=TAG,支持单Tag和多Tag,格式请参见[标签格式](~~434847~~)。'."\n" + .'- Target=ALL,值为**all**。', 'type' => 'string', 'required' => true, 'example' => 'all'], + ], + [ + 'name' => 'Title', + 'in' => 'query', + 'schema' => ['description' => '发送的消息的标题。', 'type' => 'string', 'required' => true, 'example' => 'my title'], + ], + [ + 'name' => 'Body', + 'in' => 'query', + 'schema' => ['description' => '发送的消息内容。', 'type' => 'string', 'required' => true, 'example' => 'my body'], + ], + [ + 'name' => 'StoreOffline', + 'in' => 'query', + 'schema' => ['description' => '消息是否离线保存。StoreOffline默认设置为false。'."\n" + ."\n" + .'若保存,在推送时候用户不在线,在过期时间(ExpireTime)内用户上线时会被再次发送。ExpireTime默认为72小时。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], + ], + [ + 'name' => 'JobKey', + 'in' => 'query', + 'schema' => ['description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](~~434651~~)。', 'type' => 'string', 'required' => false, 'example' => '123'], ], ], 'responses' => [ @@ -4494,196 +4176,64 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'MessageIds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'MessageId' => [ - 'description' => '批量消息ID列表,每个消息ID对应传入的PushTask的推送结果', - 'type' => 'array', - 'items' => [ - 'description' => '消息ID', - 'type' => 'string', - 'example' => '501030', - ], - ], - ], - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], + 'MessageId' => ['description' => '标志一次推送的消息ID。', 'type' => 'string', 'example' => '501029'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], ], + 'description' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Invalid%s.Format', - 'errorMessage' => 'The specified %s format is invalid.', - ], - [ - 'errorCode' => 'AccountDisabled', - 'errorMessage' => 'Your account is not enabled.', - ], - [ - 'errorCode' => 'FileNotExist', - 'errorMessage' => 'The specified file does not exist.', - ], - [ - 'errorCode' => 'IncorrectPassword', - 'errorMessage' => 'The password is incorrect.', - ], - [ - 'errorCode' => 'NotApnsCertificate', - 'errorMessage' => 'The Certificate is not an APNs certificate.', - ], - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => 'The specified AppKey is not authorized.', - ], - [ - 'errorCode' => 'SendSpeedNotSupported', - 'errorMessage' => 'SendSpeed is not supported for specified Target.', - ], - [ - 'errorCode' => 'SmsProfileConfigFailed', - 'errorMessage' => 'Failed to configure SMS profile.', - ], - [ - 'errorCode' => 'SmsProfileGetFailed', - 'errorMessage' => 'Failed to get SMS profile.', - ], - [ - 'errorCode' => 'SmsRoleAuthorizeFailed', - 'errorMessage' => 'Failed to authorize SMS role.', - ], - [ - 'errorCode' => 'SmsRoleUnauthorized', - 'errorMessage' => 'The SMS role is unauthorized.', - ], - [ - 'errorCode' => 'TagsNumberBeyondLimit', - 'errorMessage' => 'The number of tags bound to this app exceeds the limit.', - ], - [ - 'errorCode' => 'Invalid%s.LengthExceed', - 'errorMessage' => 'The specified %s length cannot be greater than %s.', - ], - [ - 'errorCode' => 'Invalid%s.BytesExceed', - 'errorMessage' => 'The specified %s exceeds the %s bytes limit.', - ], - [ - 'errorCode' => 'Invalid%s.Empty', - 'errorMessage' => 'The specified %s cannot be empty.', - ], - [ - 'errorCode' => 'Invalid.Parameter', - 'errorMessage' => 'The specified parameter is invalid: %s.', - ], - [ - 'errorCode' => 'TargetNotSupported', - 'errorMessage' => 'Target is not supported for batch push.', - ], + ['errorCode' => 'Invalid%s.Format', 'errorMessage' => 'The specified %s format is invalid.', 'description' => '参数格式错误。'], + ['errorCode' => 'Invalid%s.Empty', 'errorMessage' => 'The specified %s cannot be empty.', 'description' => '参数不能为空。'], + ['errorCode' => 'Invalid.Parameter', 'errorMessage' => 'The specified parameter is invalid: %s.', 'description' => '参数%s无效。'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', - ], - [ - 'errorCode' => 'Timeout', - 'errorMessage' => 'The request processing is timeout.', - ], + ['errorCode' => 'Timeout', 'errorMessage' => 'The request processing is timeout.', 'description' => '请求处理超时。'], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', 'description' => '服务端错误,建议重试,仍然失败则提工单'], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageIds\\": {\\n \\"MessageId\\": [\\n \\"501030\\"\\n ]\\n },\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', - 'title' => '批量推送', - 'description' => '**请确保在使用该接口前,已充分了解EMAS移动推送产品的[收费方式和价格](~~434638~~)。**'."\n" - ."\n" - .'在某种业务场景中,可能需要在极短时间内大量向不同设备单推不同消息,在设备数、消息数极大时,会产生较高QPS,达到我们单来源IP的QPS限制,造成部分推送失败。'."\n" - ."\n" - .'本接口针对此问题设计。它支持单次调用最大传入100个独立的推送任务,通过聚合请求的方式有效降低QPS,提高大量单推的稳定性和成功率。批量推送单账号限制每秒500次调用。'."\n" - ."\n" - .'每个独立推送任务仅支持根据设备/账号/别名三类推送目标,且暂不支持短信融合配置。'."\n" + 'title' => '推送消息给Android设备', + 'description' => '**这个接口即将废弃,请使用具备更多推送能力的[高级推送接口](~~2249916~~),在该接口中指定推送平台`DeviceType`为`ANDROID`,推送类型`PushType`为`MESSAGE`,即可达到同样效果。**'."\n" ."\n" - .'> SDK需升级到3.11.0及以上版本。'."\n" + .'**请确保在使用该接口前,以充分了解EMAS移动推送产品的[收费方式和价格](~~434638~~)。**'."\n" ."\n" - .'## PushTask属性'."\n" - ."\n\n" - .'- PushTask属性格式为:PushTask.N.Property。包含:'."\n" - .' - 推送目标(destination)'."\n" - .' - 推送配置(config)'."\n" - .' - iOS通知任务配置'."\n" - .' - Android通知任务配置'."\n" - .' - Android辅助弹窗功能配置'."\n" - .' - HarmonyOS通知任务配置 '."\n" - .' - 推送控制(push control)'."\n" - .'- 每一个PushTask表示一个独立推送任务,最大支持100个,推送相关配置,和Push接口一致。'."\n" - .'- PushTask.N.Target参数只支持DEVICE、ACCOUNT、ALIAS三种类型。'."\n" - .'- PushTask不支持短信联动配置。'."\n" - .'- 父节点和子节点的乘积不能超过10000,否则视为参数无效。', - 'extraInfo' => '## Java示例代码'."\n" - .'```'."\n" - .'MassPushRequest massPushRequest = new MassPushRequest();'."\n" - .'massPushRequest.setAppKey(appKey);'."\n" - .'List<MassPushRequest.PushTask> pushTasks = new ArrayList<>();'."\n" - .'for (int i = 0; i < 100; i++) {'."\n" - .' MassPushRequest.PushTask pushTask = new MassPushRequest.PushTask();'."\n" - .' // 推送目标'."\n" - .' pushTask.setTarget("DEVICE"); //推送目标: DEVICE:推送给设备; ACCOUNT:推送给指定账号,TAG:推送给自定义标签; ALIAS: 按别名推送; ALL: 全推'."\n" - .' pushTask.setTargetValue("device1,device2,device3"); //根据Target来设定,如Target=DEVICE, 则对应的值为设备id1,设备id2。多个值使用逗号分隔(账号与设备有一次最多100个的限制)。'."\n" - .' pushTask.setDeviceType("iOS"); // 设备类型deviceType, iOS设备: "iOS"; Android设备: "ANDROID"; 全部: "ALL", 这是默认值.'."\n" - .' // 推送配置'."\n" - .' pushTask.setPushType("MESSAGE"); // MESSAGE:表示消息(默认), NOTICE:表示通知'."\n" - .' pushTask.setTitle("Hello-" + i); // 消息的标题'."\n" - .' pushTask.setBody("PushRequest body" + i); // 消息的内容'."\n" - .' // 推送配置: iOS'."\n" - .' pushTask.setIOSBadge(5); // iOS应用图标右上角角标'."\n" - .' pushTask.setIOSMusic("default"); // iOS通知声音'."\n" - .' pushTask.setIOSApnsEnv("PRODUCT");//iOS的通知是通过APNs中心来发送的,需要填写对应的环境信息。\'DEV\': 表示开发环境 \'PRODUCT\': 表示生产环境'."\n" - .' pushTask.setIOSRemind(true); // 消息推送时设备不在线(既与移动推送的服务端的长连接通道不通),则这条推送会做为通知,通过苹果的APNs通道送达一次。注意:**离线消息转通知仅适用于`生产环境`**'."\n" - .' pushTask.setIOSRemindBody("PushRequest summary"); // iOS消息转通知时使用的iOS通知内容,仅当iOSApnsEnv=`PRODUCT` && iOSRemind为true时有效'."\n" - .' pushTask.setIOSExtParameters("{\\"k1\\":\\"ios\\",\\"k2\\":\\"v2\\"}"); //通知的扩展属性(注意 : 该参数要以json map的格式传入,否则会解析出错)'."\n" - .' // 推送配置: Android'."\n" - .' pushTask.setAndroidOpenType("ACTIVITY"); // 点击通知后动作 \'APPLICATION\': 打开应用 \'ACTIVITY\': 打开应用AndroidActivity \'URL\': 打开URL \'NONE\': 无跳转'."\n" - .' pushTask.setAndroidNotifyType("SOUND"); // 通知的提醒方式 ‘VIBRATE\': 振动 \'SOUND\': 声音 \'DEFAULT\': 声音和振动 \'NONE\': 不做处理,用户自定义'."\n" - .' pushTask.setAndroidOpenUrl("http://www.alibaba.com");'."\n" - .' pushTask.setAndroidMusic("alicloud_notification_sound"); // 华为厂商通道通知声音'."\n" - .' pushTask.setAndroidActivity("com.alibaba.push.PushActivity"); // Android收到推送后打开对应的ACTIVITY,仅当`AndroidOpenType="ACTIVITY"`有效'."\n" - .' pushTask.setAndroidPopupActivity("com.alibaba.push.PopupActivity"); //设置该参数后启动辅助弹窗功能, 此处指定通知点击后跳转的Activity(辅助弹窗的前提条件:1. 集成第三方辅助通道;2. StoreOffline参数设为true)'."\n" - .' pushTask.setAndroidPopupTitle("Popup Title"); //设置辅助弹窗通知的标题'."\n" - .' pushTask.setAndroidPopupBody("Popup Body"); //设置辅助弹窗通知的内容'."\n" - .' pushTask.setAndroidNotificationBarType(50); //Android自定义通知栏样式,取值:1-100'."\n" - .' pushTask.setAndroidNotificationBarPriority(2); //Android通知在通知栏展示时排列位置的优先级 -2 -1 0 1 2'."\n" - .' pushTask.setAndroidExtParameters("{\\"k1\\":\\"android\\",\\"k2\\":\\"v2\\"}"); //设定通知的扩展属性。(注意 : 该参数要以 json map 的格式传入,否则会解析出错)'."\n" - .' // 推送控制'."\n" - .' final Date pushDate = new Date(System.currentTimeMillis() + 3600 * 1000); //用于定时发送。不设置缺省是立即发送。时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为`YYYY-MM-DDThh:mm:ssZ`。'."\n" - .' final String pushTime = ParameterHelper.getISO8601Time(pushDate);'."\n" - .' pushTask.setPushTime(pushTime); // 延后推送。可选,如果不设置表示立即推送'."\n" - .' pushTask.setStoreOffline(true); // 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到'."\n" - .' final String expireTime = ParameterHelper.getISO8601Time(new Date(System.currentTimeMillis() + 12 * 3600 * 1000)); // 12小时后消息失效, 不会再发送'."\n" - .' pushTask.setExpireTime(expireTime);'."\n" - .' pushTasks.add(pushTask);'."\n" - .'}'."\n" - .'massPushRequest.setPushTasks(pushTasks);'."\n" - .'MassPushResponse massPushResponse = client.getAcsResponse(massPushRequest);'."\n" - .'System.out.printf("RequestId: %s, MessageIds: %s\\n", massPushResponse.getRequestId(), massPushResponse.getMessageIds().toString());'."\n" - .'```', - ], - 'ContinuouslyPush' => [ - 'summary' => '执行预定义的持续推送任务。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + .'该接口默认只把消息发送给在线设备,若设备离线,则需要设置`StoreOffline`参数,推送系统会保存该消息,等到设备上线后再自动下发信息。', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-01-22T14:27:51.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:51.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:51.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2023-10-12T07:14:53.000Z', 'description' => '请求参数发生变更、错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'PushMessageToAndroid'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:PushMessageToAndroid', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', + ], + 'PushMessageToiOS' => [ + 'summary' => '推送消息到iOS设备端,消息通过阿里云推送自有通道下发。设备上App接收到消息后,需要自行处理后续动作,比如实现业务行为,或者构造本地通知弹出等。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -4691,73 +4241,62 @@ ], 'operationType' => 'readAndWrite', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'paid', - ], + 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'paid'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'docRequired' => true, - 'example' => '23267207', - ], - ], - [ - 'name' => 'MessageId', - 'in' => 'query', - 'schema' => [ - 'description' => '消息ID。'."\n" - ."\n" - .'调用Push接口,设置Target为TBD,调用后获得的MessageId。它代表了一个已经保存到推送系统的消息。', - 'type' => 'string', - 'required' => true, - 'docRequired' => true, - 'example' => '500131', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '24780725'], ], [ 'name' => 'Target', 'in' => 'query', 'schema' => [ - 'description' => '推送目标:'."\n" + 'description' => '推送目标。可取值:'."\n" ."\n" .'- **DEVICE**:根据设备推送'."\n" .'- **ACCOUNT**:根据账号推送'."\n" .'- **ALIAS**:根据别名推送'."\n" - ."\n" - .'持续推送只支持这3种目标类型。', + .'- **TAG**:根据标签推送'."\n" + .'- **ALL**:推送给全部设备', 'type' => 'string', 'required' => true, - 'docRequired' => true, - 'example' => 'DEVICE', - 'enum' => [ - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - ], + 'example' => 'ALL', + 'enum' => ['ALL', 'DEVICE', 'ACCOUNT', 'ALIAS', 'TAG'], ], ], [ 'name' => 'TargetValue', 'in' => 'query', - 'schema' => [ - 'description' => '根据Target来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" - ."\n" - .'- Target=DEVICE,值如`deviceid1,deviceid2`(最多支持1000个)。'."\n" - .'- Target=ACCOUNT,值如`account1,account2`(最多支持1000个)。'."\n" - .'- Target=ALIAS,值如`alias1,alias2`(最多支持1000个)。', - 'type' => 'string', - 'required' => true, - 'docRequired' => true, - 'example' => 'a692961a92534047ad3625****', - ], + 'schema' => ['description' => '根据Target来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" + ."\n" + .'- Target=DEVICE,值如`deviceid111,deviceid1111`(最多支持1000个)。'."\n" + .'- Target=ACCOUNT,值如`account111,account222`(最多支持1000个)。'."\n" + .'- Target=ALIAS,值如`alias111,alias222`(最多支持1000个)。'."\n" + .'- Target=TAG,支持单Tag和多Tag,格式请参见[标签格式](~~434847~~)。'."\n" + .'- Target=ALL,值为**all**。', 'type' => 'string', 'required' => true, 'example' => 'all'], + ], + [ + 'name' => 'Title', + 'in' => 'query', + 'schema' => ['description' => '发送的消息的标题。', 'type' => 'string', 'required' => true, 'example' => 'my title'], + ], + [ + 'name' => 'Body', + 'in' => 'query', + 'schema' => ['description' => '发送的消息内容。', 'type' => 'string', 'required' => true, 'example' => 'my body'], + ], + [ + 'name' => 'StoreOffline', + 'in' => 'query', + 'schema' => ['description' => '消息是否离线保存。StoreOffline默认设置为false。'."\n" + ."\n" + .'若保存,在推送时候用户不在线,在过期时间(ExpireTime)内用户上线时会被再次发送。ExpireTime默认为72小时。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], + ], + [ + 'name' => 'JobKey', + 'in' => 'query', + 'schema' => ['description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](~~434651~~)。', 'type' => 'string', 'required' => false, 'example' => '123'], ], ], 'responses' => [ @@ -4765,58 +4304,50 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'MessageId' => [ - 'description' => '标志一次推送的消息ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '500131', - ], + 'MessageId' => ['description' => '标志一次推送的消息ID。', 'type' => 'string', 'example' => '501029'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], ], + 'description' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"MessageId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"RequestId\\": \\"500131\\"\\n}","errorExample":""},{"type":"xml","example":"\\n<ContinuouslyPushResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId> \\n <MessageId>500131</MessageId>\\n</ContinuouslyPushResponse>","errorExample":""}]', - 'title' => '持续推送', - 'description' => '本接口是用于解决[Push高级推送接口](~~2249916~~)中,无论是按设备推、按账号推、按别名推,在单次调用中都存在目标个数上限的问题。'."\n" - ."\n" - .'- 使用持续推送意味着业务场景是要往大量设备上,发送同一条消息。这时候,应当合理调用持续推送接口,每次调用,聚合一组设备进行推送(目前按设备推、按账号推、按别名推,单次推送目标个数上限是1000)。我们会限制在同一个 MessageId 上推送的总次数为10000 。如确实需要更高限额,请联系技术支持评估具体场景。'."\n" - ."\n" - .'- 使用这个接口前,需要调用Push接口,将Target设置为TBD(To Be Determined),填入消息内容,调用获得该消息在推送系统中的MessageId。然后,可以基于这个MessageId,重复调用此接口,指定不同的目标组,将此消息推送到这些目标上。'."\n" + 'title' => '推送消息给iOS设备', + 'description' => '**这个接口即将废弃,请使用具备更多推送能力的[高级推送接口](~~2249916~~),在该接口中指定推送平台`DeviceType`为`iOS`,推送类型`PushType`为`MESSAGE`,即可达到同样效果。**'."\n" ."\n" - .'- 调用Push接口设置目标为TBD获得MessageId后,这个消息默认会在推送系统保存24个小时,过期之前,可以随时使用本接口进行指定目标推送。过期后不再允许推送。超出总次数上限后不再允许推送。'."\n" + .'**请确保在使用该接口前,以充分了解EMAS移动推送产品的[收费方式和价格](~~434638~~)。**'."\n" ."\n" - .'- 每次调用本接口指定设备时,消息都是立即推出,不支持设置定时推送。', + .'该接口默认只把消息发送给在线设备,若设备离线,则需要设置`StoreOffline`参数,推送系统会保存该消息,等到设备上线后再自动下发信息。', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => '## Java示例代码'."\n" - .'```'."\n" - .'ContinuouslyPushRequest continuouslyPushRequest = new ContinuouslyPushRequest();'."\n" - .'continuouslyPushRequest.setAppKey(appKey);'."\n" - .'// 设置持续推送的消息Id'."\n" - .'continuouslyPushRequest.setMessageId("500131");'."\n" - .'// 指定推送目标'."\n" - .'// 可以继续用同一个`MessageId`,调用此接口指定其它设备,继续推送'."\n" - .'continuouslyPushRequest.setTarget("DEVICE");'."\n" - .'continuouslyPushRequest.setTargetValue("a692961a92534047ad362575f31f57b7");'."\n" - .'ContinuouslyPushResponse continuouslyPushResponse = client.getAcsResponse(continuouslyPushRequest);'."\n" - .'System.out.printf("RequestId: %s, MessageId: %s\\n",'."\n" - .' continuouslyPushResponse.getRequestId(), continuouslyPushResponse.getMessageId());'."\n" - .'```', - ], - 'CompleteContinuouslyPush' => [ - 'summary' => '手动结束持续推送任务。', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2023-10-12T07:14:53.000Z', 'description' => '请求参数发生变更、错误码发生变更'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'PushMessageToiOS'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:PushMessageToiOS', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', + ], + 'PushNoticeToAndroid' => [ + 'summary' => '推送通知到Android设备端,并直接在设备通知栏弹出。通知根据不同情况,可能会走阿里云自有通道,或者手机厂商通道下发。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -4824,104 +4355,67 @@ ], 'operationType' => 'readAndWrite', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'paid'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], ], [ - 'name' => 'MessageId', + 'name' => 'Target', 'in' => 'query', 'schema' => [ - 'description' => '消息ID。'."\n" + 'description' => '推送目标。可取值:'."\n" ."\n" - .'调用Push接口,设置Target为TBD,调用后获得的MessageId。它代表了一个已经保存到推送系统的消息。', + .'- **DEVICE**:根据设备推送'."\n" + .'- **ACCOUNT**:根据账号推送'."\n" + .'- **ALIAS**:根据别名推送'."\n" + .'- **TAG**:根据标签推送'."\n" + .'- **ALL**:推送给全部设备', 'type' => 'string', 'required' => true, - 'example' => '500131', + 'example' => 'ALL', + 'enum' => ['ALL', 'DEVICE', 'ACCOUNT', 'ALIAS', 'TAG'], ], ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'MessageId' => [ - 'description' => '标志一次推送的消息ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '500131', - ], - ], - ], + [ + 'name' => 'TargetValue', + 'in' => 'query', + 'schema' => ['description' => '根据Target来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" + ."\n" + .'- Target=DEVICE,值如`deviceid111,deviceid1111`(最多支持1000个)。'."\n" + .'- Target=ACCOUNT,值如`account111,account222`(最多支持1000个)。'."\n" + .'- Target=ALIAS,值如`alias111,alias222`(最多支持1000个)。'."\n" + .'- Target=TAG,支持单Tag和多Tag,格式请参见[标签格式](~~434847~~)。'."\n" + .'- Target=ALL,值为**ALL**。', 'type' => 'string', 'required' => true, 'example' => 'ALL'], ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"MessageId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"RequestId\\": \\"500131\\"\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<ContinuouslyPushResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId> \\n <MessageId>500131</MessageId>\\n</ContinuouslyPushResponse>","errorExample":""}]', - 'title' => '完成持续推送任务', - 'description' => '若不调用此接口以手动形式结束持续推送任务,持续推送任务将会在到达过期时间时自动结束。', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - ], - 'CancelPush' => [ - 'summary' => '取消某次尚未执行的定时推送任务。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ [ - 'AK' => [], + 'name' => 'Title', + 'in' => 'query', + 'schema' => ['description' => '发送的通知标题。', 'type' => 'string', 'required' => true, 'example' => 'title'], ], - ], - 'operationType' => 'write', - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'free', - ], - 'parameters' => [ [ - 'name' => 'AppKey', + 'name' => 'Body', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => '发送的通知内容。', 'type' => 'string', 'required' => true, 'example' => 'body'], ], [ - 'name' => 'MessageId', + 'name' => 'StoreOffline', 'in' => 'query', - 'schema' => [ - 'description' => '某次推送任务的消息ID。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '501029', - ], + 'schema' => ['description' => '通知是否离线保存。StoreOffline默认设置为false。'."\n" + ."\n" + .'若保存,在推送时候用户不在线,在过期时间(ExpireTime)内用户上线时会被再次发送。ExpireTime默认为72小时。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], + ], + [ + 'name' => 'JobKey', + 'in' => 'query', + 'schema' => ['description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](~~434651~~)。', 'type' => 'string', 'required' => false, 'example' => '123'], + ], + [ + 'name' => 'ExtParameters', + 'in' => 'query', + 'schema' => ['description' => '自定义的KV结构,供开发者扩展使用,针对Android设备。该参数要以JSON map的格式传入。', 'type' => 'string', 'required' => false, 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}'], ], ], 'responses' => [ @@ -4929,202 +4423,175 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], + 'MessageId' => ['description' => '标志一次推送的消息ID。', 'type' => 'string', 'example' => '501029'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], ], + 'description' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n<PushMessageToAndroidResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n</PushMessageToAndroidResponse>","errorExample":""}]', - 'title' => '取消定时推送任务', - ], - 'PushV2' => [ - 'summary' => '高级推送接口V2。', - 'methods' => [ - 'post', + 'title' => '推送通知给Android设备', + 'description' => '**这个接口即将废弃,请使用具备更多推送能力的[高级推送接口](~~2249916~~),在该接口中指定推送平台`DeviceType`为`ANDROID`,推送类型`PushType`为`NOTICE`,即可达到同样效果。**'."\n" + ."\n" + .'**请确保在使用该接口前,以充分了解EMAS移动推送产品的[收费方式和价格](~~434638~~)。**', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2023-10-12T07:14:53.000Z', 'description' => '请求参数发生变更、错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'PushNoticeToAndroid'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:PushNoticeToAndroid', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', + ], + 'PushNoticeToiOS' => [ + 'summary' => '推送通知到 iOS 设备端,通知通过苹果APNs通道下发,并直接在设备通知栏弹出。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREemasBNY9P0', - 'FEATUREemasTZ8VEZ', - ], - ], + 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'paid'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'docRequired' => true, - 'example' => '****530646', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '24780725'], ], [ - 'name' => 'IdempotentToken', + 'name' => 'Target', 'in' => 'query', 'schema' => [ - 'description' => '用于防止API调用端重试造成服务端重复推送的一个幂等参数。15分钟内使用相同IdempotentToken进行调用时,只会进行一次推送,后续返回第一次成功推送的结果。'."\n" + 'description' => '推送目标。可取值:'."\n" ."\n" - .'> '."\n" - .'> - 参数格式为标准36位UUID(8-4-4-4-12),每个有效字符是0-9 或 a-f 范围内的一个十六进制的数字,不区分大小写。'."\n" - .'> - 此参数仅用于避免重试造成的重复推送,无法避免并发调用造成的重复推送。', + .'- **DEVICE**:根据设备推送'."\n" + .'- **ACCOUNT**:根据账号推送'."\n" + .'- **ALIAS**:根据别名推送'."\n" + .'- **TAG**:根据标签推送'."\n" + .'- **ALL**:推送给全部设备', 'type' => 'string', - 'required' => false, - 'example' => 'c8016d13-6e76-****-9bda-769383d11787', - 'maxLength' => 36, - 'minLength' => 36, + 'required' => true, + 'example' => 'ALL', + 'enum' => ['ALL', 'DEVICE', 'ACCOUNT', 'ALIAS', 'TAG'], ], ], [ - 'name' => 'PushTask', + 'name' => 'TargetValue', + 'in' => 'query', + 'schema' => ['description' => '根据Target来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" + ."\n" + .'- Target=DEVICE,值如`deviceid111,deviceid1111`(最多支持1000个)。'."\n" + .'- Target=ACCOUNT,值如`account111,account222`(最多支持1000个)。'."\n" + .'- Target=ALIAS,值如`alias111,alias222`(最多支持1000个)。'."\n" + .'- Target=TAG,支持单Tag和多Tag,格式请参见[标签格式](~~434847~~)。'."\n" + .'- Target=ALL,值为**ALL**。', 'type' => 'string', 'required' => true, 'example' => 'ALL'], + ], + [ + 'name' => 'ApnsEnv', 'in' => 'query', - 'style' => 'json', 'schema' => [ - 'description' => '推送任务。', + 'description' => 'iOS的通知是通过APNS中心来发送的,需要填写对应的环境信息。'."\n" + .'- DEV:表示开发环境'."\n" + .'- PRODUCT:表示生产环境', + 'type' => 'string', 'required' => true, - '$ref' => '#/components/schemas/PushTask', + 'example' => 'DEV', + 'enum' => ['DEV', 'PRODUCT'], ], ], + [ + 'name' => 'Title', + 'in' => 'query', + 'schema' => ['description' => '推送的通知的标题。'."\n" + .'- iOS 10+通知显示标题。'."\n" + .'- iOS 8.2 <= iOS系统 < iOS 10:替换通知应用名称。', 'type' => 'string', 'required' => false, 'example' => 'title'], + ], + [ + 'name' => 'Body', + 'in' => 'query', + 'schema' => ['description' => '推送的通知内容。', 'type' => 'string', 'required' => true, 'example' => 'Hello World'], + ], + [ + 'name' => 'JobKey', + 'in' => 'query', + 'schema' => ['description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](~~434651~~)。', 'type' => 'string', 'required' => false, 'example' => '123'], + ], + [ + 'name' => 'ExtParameters', + 'in' => 'query', + 'schema' => ['description' => '自定义的KV结构,开发者扩展用。'."\n" + ."\n" + .'> 针对iOS设备,该参数要以JSON map的格式传入,否则会解析出错。', 'type' => 'string', 'required' => false, 'example' => '{"k1":"ios","k2":"v2"}'], + ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'MessageId' => [ - 'description' => '标志一次推送的消息ID。', - 'type' => 'string', - 'example' => '11747540****88320', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '159E4422-6624-****-8943-DFD98D34858C', - ], + 'MessageId' => ['description' => '标志一次推送的消息ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '501029'], ], + 'description' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidPeriod.ExceedDays', - 'errorMessage' => 'The period between specified EndTime and StartTime exceeds %s days.', - ], - [ - 'errorCode' => 'Invalid%s.Format', - 'errorMessage' => 'The specified %s format is invalid.', - ], - [ - 'errorCode' => 'AccountDisabled', - 'errorMessage' => 'Your account is not enabled.', - ], - [ - 'errorCode' => 'FileNotExist', - 'errorMessage' => 'The specified file does not exist.', - ], - [ - 'errorCode' => 'IncorrectPassword', - 'errorMessage' => 'The password is incorrect.', - ], - [ - 'errorCode' => 'NotApnsCertificate', - 'errorMessage' => 'The Certificate is not an APNs certificate.', - ], - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => 'The specified AppKey is not authorized.', - ], - [ - 'errorCode' => 'SendSpeedNotSupported', - 'errorMessage' => 'SendSpeed is not supported for specified Target.', - ], - [ - 'errorCode' => 'SmsProfileConfigFailed', - 'errorMessage' => 'Failed to configure SMS profile.', - ], - [ - 'errorCode' => 'SmsProfileGetFailed', - 'errorMessage' => 'Failed to get SMS profile.', - ], - [ - 'errorCode' => 'SmsRoleAuthorizeFailed', - 'errorMessage' => 'Failed to authorize SMS role.', - ], - [ - 'errorCode' => 'SmsRoleUnauthorized', - 'errorMessage' => 'The SMS role is unauthorized.', - ], - [ - 'errorCode' => 'TagsNumberBeyondLimit', - 'errorMessage' => 'The number of tags bound to this app exceeds the limit.', - ], - [ - 'errorCode' => 'Invalid%s.LengthExceed', - 'errorMessage' => 'The specified %s length cannot be greater than %s.', - ], - [ - 'errorCode' => 'Invalid%s.BytesExceed', - 'errorMessage' => 'The specified %s exceeds the %s bytes limit.', - ], - [ - 'errorCode' => 'Invalid%s.Empty', - 'errorMessage' => 'The specified %s cannot be empty.', - ], - [ - 'errorCode' => 'Invalid.Parameter', - 'errorMessage' => 'The specified parameter is invalid: %s.', - ], - [ - 'errorCode' => 'TargetNotSupported', - 'errorMessage' => 'Target is not supported for batch push.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', - ], - [ - 'errorCode' => 'Timeout', - 'errorMessage' => 'The request processing is timeout.', + 'title' => '推送通知给iOS设备', + 'description' => '**这个接口即将废弃,请使用具备更多推送能力的[高级推送接口](~~2249916~~),在该接口中指定推送平台`DeviceType`为`iOS`,推送类型`PushType`为`NOTICE`,即可达到同样效果。**'."\n" + ."\n" + .'**请确保在使用该接口前,以充分了解EMAS移动推送产品的[收费方式和价格](~~434638~~)。**', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-01-22T14:27:51.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:51.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-22T14:27:51.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'PushNoticeToiOS'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:PushNoticeToiOS', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"11747540****88320\\",\\n \\"RequestId\\": \\"159E4422-6624-****-8943-DFD98D34858C\\"\\n}","type":"json"}]', - 'title' => '高级推送', - 'description' => '**请确保在使用该接口前,已充分了解EMAS移动推送产品的[收费方式和价格](~~434638~~)。**'."\n" - ."\n" - .'本接口区分Android、iOS和HarmonyOS平台,对于不同平台的推送调用,需要传入平台对应的AppKey。', - 'requestParamsDescription' => '请您阅读文档[PushV2接口接入指南](https://help.aliyun.com/document_detail/2986583.html)获取更多指导。', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"RequestId\\": \\"501029\\"\\n}","type":"json"}]', ], - 'MassPushV2' => [ - 'summary' => '高级推送接口V2。', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'PushV2' => [ + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -5136,54 +4603,28 @@ 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREemasBNY9P0', - 'FEATUREemasTZ8VEZ', - ], + 'abilityTreeNodes' => ['FEATUREemasBNY9P0', 'FEATUREemasTZ8VEZ'], ], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'docRequired' => true, - 'example' => '23267***', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'example' => '****530646'], ], [ 'name' => 'IdempotentToken', 'in' => 'query', - 'schema' => [ - 'description' => '用于防止API调用端重试造成服务端重复推送的一个幂等参数。15分钟内使用相同IdempotentToken进行调用时,只会进行一次推送,后续返回第一次成功推送的结果。'."\n" - ."\n" - .'> '."\n" - .'> - 参数格式为标准36位UUID(8-4-4-4-12),每个有效字符是0-9 或 a-f 范围内的一个十六进制的数字,不区分大小写。'."\n" - .'> - 此参数仅用于避免重试造成的重复推送,无法避免并发调用造成的重复推送。', - 'type' => 'string', - 'required' => false, - 'example' => 'c8016d13-6e76-****-9bda-769383d11787', - 'maxLength' => 36, - 'minLength' => 36, - ], + 'schema' => ['description' => '用于防止API调用端重试造成服务端重复推送的一个幂等参数。15分钟内使用相同IdempotentToken进行调用时,只会进行一次推送,后续返回第一次成功推送的结果。'."\n" + ."\n" + .'> '."\n" + .'> - 参数格式为标准36位UUID(8-4-4-4-12),每个有效字符是0-9 或 a-f 范围内的一个十六进制的数字,不区分大小写。'."\n" + .'> - 此参数仅用于避免重试造成的重复推送,无法避免并发调用造成的重复推送。', 'type' => 'string', 'required' => false, 'example' => 'c8016d13-6e76-****-9bda-769383d11787', 'maxLength' => 36, 'minLength' => 36], ], [ - 'name' => 'PushTasks', + 'name' => 'PushTask', 'in' => 'query', 'style' => 'json', - 'schema' => [ - 'description' => '批量推送任务', - 'type' => 'array', - 'items' => [ - 'description' => '推送任务', - 'required' => false, - '$ref' => '#/components/schemas/PushTask', - ], - 'required' => true, - ], + 'schema' => ['description' => '推送任务。', 'required' => true, '$ref' => '#/components/schemas/PushTask'], ], ], 'responses' => [ @@ -5191,149 +4632,88 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID', - 'type' => 'string', - 'example' => '159E4422-6624-****-8943-DFD98D34858C', - ], - 'MessageIds' => [ - 'description' => '消息ID列表', - 'type' => 'array', - 'items' => [ - 'description' => '消息ID', - 'type' => 'string', - 'example' => '1091371886864****', - ], - ], + 'MessageId' => ['description' => '标志一次推送的消息ID。', 'type' => 'string', 'example' => '11747540****88320'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '159E4422-6624-****-8943-DFD98D34858C'], ], + 'description' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidPeriod.ExceedDays', - 'errorMessage' => 'The period between specified EndTime and StartTime exceeds %s days.', - ], - [ - 'errorCode' => 'Invalid%s.Format', - 'errorMessage' => 'The specified %s format is invalid.', - ], - [ - 'errorCode' => 'AccountDisabled', - 'errorMessage' => 'Your account is not enabled.', - ], - [ - 'errorCode' => 'FileNotExist', - 'errorMessage' => 'The specified file does not exist.', - ], - [ - 'errorCode' => 'IncorrectPassword', - 'errorMessage' => 'The password is incorrect.', - ], - [ - 'errorCode' => 'NotApnsCertificate', - 'errorMessage' => 'The Certificate is not an APNs certificate.', - ], - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => 'The specified AppKey is not authorized.', - ], - [ - 'errorCode' => 'SendSpeedNotSupported', - 'errorMessage' => 'SendSpeed is not supported for specified Target.', - ], - [ - 'errorCode' => 'SmsProfileConfigFailed', - 'errorMessage' => 'Failed to configure SMS profile.', - ], - [ - 'errorCode' => 'SmsProfileGetFailed', - 'errorMessage' => 'Failed to get SMS profile.', - ], - [ - 'errorCode' => 'SmsRoleAuthorizeFailed', - 'errorMessage' => 'Failed to authorize SMS role.', - ], - [ - 'errorCode' => 'SmsRoleUnauthorized', - 'errorMessage' => 'The SMS role is unauthorized.', - ], - [ - 'errorCode' => 'TagsNumberBeyondLimit', - 'errorMessage' => 'The number of tags bound to this app exceeds the limit.', - ], - [ - 'errorCode' => 'Invalid%s.LengthExceed', - 'errorMessage' => 'The specified %s length cannot be greater than %s.', - ], - [ - 'errorCode' => 'Invalid%s.BytesExceed', - 'errorMessage' => 'The specified %s exceeds the %s bytes limit.', - ], - [ - 'errorCode' => 'Invalid%s.Empty', - 'errorMessage' => 'The specified %s cannot be empty.', - ], - [ - 'errorCode' => 'Invalid.Parameter', - 'errorMessage' => 'The specified parameter is invalid: %s.', - ], - [ - 'errorCode' => 'TargetNotSupported', - 'errorMessage' => 'Target is not supported for batch push.', - ], + ['errorCode' => 'InvalidPeriod.ExceedDays', 'errorMessage' => 'The period between specified EndTime and StartTime exceeds %s days.', 'description' => '开始时间和结束时间超过%s天。'], + ['errorCode' => 'Invalid%s.Format', 'errorMessage' => 'The specified %s format is invalid.', 'description' => '参数格式错误。'], + ['errorCode' => 'AccountDisabled', 'errorMessage' => 'Your account is not enabled.', 'description' => '功能未启用。'], + ['errorCode' => 'FileNotExist', 'errorMessage' => 'The specified file does not exist.', 'description' => '指定的文件不存在。'], + ['errorCode' => 'IncorrectPassword', 'errorMessage' => 'The password is incorrect.', 'description' => '密码错误。'], + ['errorCode' => 'NotApnsCertificate', 'errorMessage' => 'The Certificate is not an APNs certificate.', 'description' => '不是APNs证书。'], + ['errorCode' => 'PermissionDenied', 'errorMessage' => 'The specified AppKey is not authorized.', 'description' => ''], + ['errorCode' => 'SendSpeedNotSupported', 'errorMessage' => 'SendSpeed is not supported for specified Target.', 'description' => '制定目标不支持SendSpeed参数。'], + ['errorCode' => 'SmsProfileConfigFailed', 'errorMessage' => 'Failed to configure SMS profile.', 'description' => 'SMS配置失败。'], + ['errorCode' => 'SmsProfileGetFailed', 'errorMessage' => 'Failed to get SMS profile.', 'description' => 'SMS配置获取失败。'], + ['errorCode' => 'SmsRoleAuthorizeFailed', 'errorMessage' => 'Failed to authorize SMS role.', 'description' => 'SMS角色授权失败。'], + ['errorCode' => 'SmsRoleUnauthorized', 'errorMessage' => 'The SMS role is unauthorized.', 'description' => 'SMS角色没有授权。'], + ['errorCode' => 'TagsNumberBeyondLimit', 'errorMessage' => 'The number of tags bound to this app exceeds the limit.', 'description' => '当前app绑定的tag数量超过限制。'], + ['errorCode' => 'Invalid%s.LengthExceed', 'errorMessage' => 'The specified %s length cannot be greater than %s.', 'description' => '参数长度超限。'], + ['errorCode' => 'Invalid%s.BytesExceed', 'errorMessage' => 'The specified %s exceeds the %s bytes limit.', 'description' => '参数的字节数超限。'], + ['errorCode' => 'Invalid%s.Empty', 'errorMessage' => 'The specified %s cannot be empty.', 'description' => '参数不能为空。'], + ['errorCode' => 'Invalid.Parameter', 'errorMessage' => 'The specified parameter is invalid: %s.', 'description' => '参数%s无效。'], + ['errorCode' => 'TargetNotSupported', 'errorMessage' => 'Target is not supported for batch push.', 'description' => '批量推送不支持的Target。'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', - ], - [ - 'errorCode' => 'Timeout', - 'errorMessage' => 'The request processing is timeout.', + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', 'description' => '服务端错误,建议重试,仍然失败则提工单'], + ['errorCode' => 'Timeout', 'errorMessage' => 'The request processing is timeout.', 'description' => '请求处理超时。'], + ], + ], + 'title' => '高级推送', + 'summary' => '高级推送接口V2。', + 'description' => '**请确保在使用该接口前,已充分了解EMAS移动推送产品的[收费方式和价格](~~434638~~)。**'."\n" + ."\n" + .'本接口区分Android、iOS和HarmonyOS平台,对于不同平台的推送调用,需要传入平台对应的AppKey。', + 'requestParamsDescription' => '请您阅读文档[PushV2接口接入指南](https://help.aliyun.com/document_detail/2986583.html)获取更多指导。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '1000000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'PushV2'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:PushV2', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"159E4422-6624-****-8943-DFD98D34858C\\",\\n \\"MessageIds\\": [\\n \\"1091371886864****\\"\\n ]\\n}","type":"json"}]', - 'title' => '批量推送', - 'description' => '请确保在使用该接口前,已充分了解 EMAS 移动推送产品的[收费方式和价格](https://help.aliyun.com/document_detail/434638.html)。', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"11747540****88320\\",\\n \\"RequestId\\": \\"159E4422-6624-****-8943-DFD98D34858C\\"\\n}","type":"json"}]', ], - 'CheckCertificate' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'QueryAliases' => [ + 'summary' => '查询指定设备绑定的别名列表。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'docRequired' => true, - 'maximum' => '1000000000', - 'minimum' => '0', - 'example' => '23267207', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], + ], + [ + 'name' => 'DeviceId', + 'in' => 'query', + 'schema' => ['description' => '设备在推送的唯一标识,32位,数字和小写字母组合。', 'type' => 'string', 'required' => true, 'example' => 'e2ba19de97604f55b165576****'], ], ], 'responses' => [ @@ -5341,299 +4721,78 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - 'Android' => [ - 'description' => '判断AppKey代表的是否是Android app:'."\n" - .'- true'."\n" - .'- false', - 'type' => 'boolean', - 'enumValueTitles' => [ - 'true' => 'true', - 'false' => 'false', - ], - 'example' => 'false', - ], - 'IOS' => [ - 'description' => '判断AppKey代表的是否是iOS app:'."\n" - .'- true'."\n" - .'- false', - 'type' => 'boolean', - 'enumValueTitles' => [ - 'true' => 'true', - 'false' => 'false', - ], - 'example' => 'true', - ], - 'ProductionCertInfo' => [ - 'description' => '访问生产环境的证书信息。', - 'type' => 'object', - 'properties' => [ - 'Status' => [ - 'description' => '证书状态,取值:'."\n" - ."\n" - .'- **EXPIRED**:已过期'."\n" - .'- **NOT_CONFIGURED**:未配置'."\n" - .'- **NO_PASSWORD**:未配置密码'."\n" - .'- **OK**:正常'."\n" - .'- **REVOKED**:已撤销', - 'type' => 'string', - 'enumValueTitles' => [ - 'REVOKED' => 'REVOKED', - 'NO_PASSWORD' => 'NO_PASSWORD', - 'EXPIRED' => 'EXPIRED', - 'NOT_CONFIGURED' => 'NOT_CONFIGURED', - 'OK' => 'OK', - ], - 'example' => 'OK', - ], - 'ExipreTime' => [ - 'description' => '证书过期时间。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1764561600000', - ], - ], - ], - 'DevelopmentCertInfo' => [ - 'description' => '访问开发环境/沙箱环境的证书信息。', + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '159E4422-6624-4750-8943-DFD98D34858C'], + 'AliasInfos' => [ 'type' => 'object', + 'itemNode' => true, 'properties' => [ - 'Status' => [ - 'description' => '证书状态,取值:'."\n" - ."\n" - .'- **EXPIRED**:已过期'."\n" - .'- **NOT_CONFIGURED**:未配置'."\n" - .'- **NO_PASSWORD**:未配置密码'."\n" - .'- **OK**:正常'."\n" - .'- **REVOKED**:已撤销', - 'type' => 'string', - 'enumValueTitles' => [ - 'REVOKED' => 'REVOKED', - 'NO_PASSWORD' => 'NO_PASSWORD', - 'EXPIRED' => 'EXPIRED', - 'NOT_CONFIGURED' => 'NOT_CONFIGURED', - 'OK' => 'OK', + 'AliasInfo' => [ + 'description' => '别名列表。', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'AliasName' => ['description' => '别名名称。', 'type' => 'string', 'example' => 'test_alias1'], + ], + 'description' => '', ], - 'example' => 'EXPIRED', - ], - 'ExipreTime' => [ - 'description' => '证书过期时间。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1470024000000', ], ], + 'description' => '', ], ], + 'description' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'Invalid%s.NotFound', - 'errorMessage' => 'The specified %s is not found.', - ], - [ - 'errorCode' => 'AccountDisabled', - 'errorMessage' => 'Your account is not enabled.', - ], - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => 'The specified AppKey is not authorized.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', + 'title' => '查询别名', + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:39.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:39.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:39.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryAliases'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryAliases', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"Android\\": false,\\n \\"IOS\\": true,\\n \\"ProductionCertInfo\\": {\\n \\"Status\\": \\"OK\\",\\n \\"ExipreTime\\": 1764561600000\\n },\\n \\"DevelopmentCertInfo\\": {\\n \\"Status\\": \\"EXPIRED\\",\\n \\"ExipreTime\\": 1470024000000\\n }\\n}","errorExample":""}]', - 'title' => '查询证书状态', - 'summary' => '检测指定app的iOS证书过期时间及当前证书状态。', - 'description' => '- 如果返回的ExpireTime大于当前时间戳,并不代表证书一定可用,还需检查Status是否为OK。'."\n" - .'- REVOKED来源于APNs服务器,如果证书处于REVOKED状态时,则对应环境中至少有一条推向APNs的推送失败。', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"159E4422-6624-4750-8943-DFD98D34858C\\",\\n \\"AliasInfos\\": {\\n \\"AliasInfo\\": [\\n {\\n \\"AliasName\\": \\"test_alias1\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<QueryAliasesResponse>\\n <RequestId>159E4422-6624-4750-8943-DFD98D34858C</RequestId>\\n <AliasInfos>\\n <AliasName>test_alias1</AliasName>\\n </AliasInfos>\\n</QueryAliasesResponse>","errorExample":""}]', ], - 'QueryPushRecords' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'QueryDeviceInfo' => [ + 'summary' => '查询指定设备详细信息。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'list', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'docRequired' => true, - 'example' => '333526247', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23419851'], ], [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => '查询的起始时间,UTC时间,ISO-8601格式,格式为YYYY-MM-DDThh:mm:ssZ。', - 'type' => 'string', - 'required' => true, - 'docRequired' => true, - 'example' => '2021-09-15T02:05:24Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => '查询的结束时间,UTC时间,ISO-8601格式,格式为YYYY-MM-DDThh:mm:ssZ。', - 'type' => 'string', - 'required' => true, - 'docRequired' => true, - 'example' => '2021-09-29T06:24:58Z', - ], - ], - [ - 'name' => 'PushType', - 'in' => 'query', - 'schema' => [ - 'description' => '推送类型。取值:'."\n" - ."\n" - .'- **MESSAGE**:表示消息。'."\n" - ."\n" - .'- **NOTICE**:表示通知。', - 'type' => 'string', - 'required' => false, - 'example' => 'NOTICE', - 'enum' => [ - 'MESSAGE', - 'NOTICE', - ], - ], - ], - [ - 'name' => 'Target', - 'in' => 'query', - 'schema' => [ - 'description' => '推送目标:'."\n" - ."\n" - .'- **DEVICE**:根据设备推送。'."\n" - ."\n" - .'- **ACCOUNT**:根据账号推送。'."\n" - ."\n" - .'- **ALIAS**:根据别名推送。'."\n" - ."\n" - .'- **TAG**:根据标签推送。'."\n" - ."\n" - .'- **ALL**:推送给全部设备。'."\n" - ."\n" - .'- **TBD**:初始化持续推送,推送目标由后续的ContinuouslyPush接口指定。', - 'type' => 'string', - 'required' => false, - 'example' => 'DEVICE', - 'enum' => [ - 'ACCOUNT', - 'ALIAS', - 'DEVICE', - 'TAG', - 'TBD', - 'FILE', - 'ALL', - ], - ], - ], - [ - 'name' => 'Source', - 'in' => 'query', - 'schema' => [ - 'description' => '推送来源。可取值:'."\n" - ."\n" - .'- **API**:OpenAPI发起的推送,含OpenAPI平台控制台发起的推送。'."\n" - .'- **CONSOLE**:通过移动推送控制台推送。'."\n" - .'- **OpenAPIExplorer**:通过阿里云OpenAPI Explorer平台推送。', - 'type' => 'string', - 'required' => false, - 'example' => 'API', - 'enum' => [ - 'CONSOLE', - 'API', - 'OpenAPIExplorer', - ], - ], - ], - [ - 'name' => 'Keyword', - 'in' => 'query', - 'schema' => [ - 'description' => '查询关键字,根据MessageId、Title、Body字段进行查询。系统对推送的title和body进行了中文分词,使用分词进行查询,非子字符串匹配查询。', - 'type' => 'string', - 'required' => false, - 'example' => '统计数据测试通知805', - ], - ], - [ - 'name' => 'NextToken', - 'in' => 'query', - 'schema' => [ - 'description' => '废弃参数,不再使用。', - 'type' => 'string', - 'required' => false, - 'example' => 'FFPpkmhCPm*****************xjk=', - ], - ], - [ - 'name' => 'PageSize', + 'name' => 'DeviceId', 'in' => 'query', - 'schema' => [ - 'description' => '每页的条目数量,默认值为20, 最大为100。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '100', - 'minimum' => '1', - 'example' => '10', - 'default' => '20', - ], - ], - [ - 'name' => 'Page', - 'in' => 'query', - 'schema' => [ - 'description' => '推送记录的当前页数, 默认为1,最大10000。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '10000', - 'minimum' => '1', - 'example' => '8', - 'default' => '1', - ], + 'schema' => ['description' => '设备在推送系统中的唯一标识,一次只能查询一个。', 'type' => 'string', 'required' => true, 'example' => 'a64ae296f3b04a58a05b30c9****'], ], ], 'responses' => [ @@ -5641,181 +4800,63 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'NextToken' => [ - 'description' => '废弃参数,不再使用。', - 'type' => 'string', - 'example' => 'i91D***********kXIh/dVBEQ==', - ], - 'PageSize' => [ - 'description' => '每页的条目数量。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9B24B396-249D-55E4-8CA1-66C9B50BB734', - ], - 'Total' => [ - 'description' => '记录总条数。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '193', - ], - 'Page' => [ - 'description' => '推送记录的当前页数。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '11', - ], - 'PushInfos' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '6EEF262B-EA7D-41DC-89B9-20F3D1E28194'], + 'DeviceInfo' => [ + 'description' => '设备详情。', 'type' => 'object', - 'itemNode' => true, 'properties' => [ - 'PushInfo' => [ - 'description' => '具体通知/消息的详情。', - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Status' => [ - 'description' => '消息状态。可取值:'."\n" - ."\n" - .'- **WAITING**:等待中。'."\n" - ."\n" - .'- **SENT**:已推送。'."\n" - ."\n" - .'- **CANCELED**:已取消。'."\n", - 'type' => 'string', - 'example' => 'SENT', - ], - 'MessageId' => [ - 'description' => '消息ID。', - 'type' => 'string', - 'example' => '510431', - ], - 'AppKey' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '333526247', - ], - 'DeviceType' => [ - 'description' => '设备类型。取值:'."\n" - ."\n" - .'- **ALL**:所有类型。'."\n" - ."\n" - .'- **IOS**:iOS设备。'."\n" - ."\n" - .'- **ANDROID**:Android设备。', - 'type' => 'string', - 'enumValueTitles' => [ - 'ALL' => 'ALL', - 'IOS' => 'IOS', - 'ANDROID' => 'ANDROID', - ], - 'example' => 'ANDROID', - ], - 'PushType' => [ - 'description' => '推送类型。取值:'."\n" - ."\n" - .'- **MESSAGE**:消息。'."\n" - ."\n" - .'- **NOTICE**:通知。', - 'type' => 'string', - 'enumValueTitles' => [ - 'MESSAGE' => 'MESSAGE', - 'NOTICE' => 'NOTICE', - ], - 'example' => 'NOTICE', - ], - 'Body' => [ - 'description' => '推送的body字段。', - 'type' => 'string', - 'example' => 'abcd', - ], - 'Title' => [ - 'description' => '推送的title字段。', - 'type' => 'string', - 'example' => 'sssss', - ], - 'Source' => [ - 'description' => '推送源类型。可取值:'."\n" - ."\n" - .'- **API**:OpenAPI发起的推送,含OpenAPI平台控制台发起的推送。'."\n" - ."\n" - .'- **CONSOLE**:通过移动推送控制台推送。', - 'type' => 'string', - 'enumValueTitles' => [ - 'CONSOLE' => 'CONSOLE', - 'API' => 'API', - ], - 'example' => 'DEVICE', - ], - 'PushTime' => [ - 'description' => '推送时间,UTC时间,ISO-8601格式, 格式为 YYYY-MM-DDThh:mm:ssZ。', - 'type' => 'string', - 'example' => '2021-09-15T02:05:24Z', - ], - 'Target' => [ - 'description' => '推送目标:'."\n" - ."\n" - .'- **ACCOUNT**:根据账号推送。'."\n" - ."\n" - .'- **ALIAS**:根据别名推送。'."\n" - ."\n" - .'- **DEVICE**:根据设备推送。'."\n" - ."\n" - .'- **TAG**:根据标签推送。'."\n" - ."\n" - .'- **ALL**:推送给全部设备。'."\n" - ."\n" - .'- **TBD**:初始化持续推送,推送目标由后续的ContinuouslyPush接口指定。', - 'type' => 'string', - 'example' => 'DEVICE', - ], - ], - ], - ], + 'Account' => ['description' => '设备绑定的账户。', 'type' => 'string', 'example' => 'test@aliyun.com'], + 'LastOnlineTime' => ['description' => '最近一次上线时间。', 'type' => 'string', 'example' => '2018-03-27T02:19:40Z'], + 'PhoneNumber' => ['description' => '手机号。', 'type' => 'string', 'example' => '133********'], + 'PushEnabled' => ['description' => '是否开启推送功能。', 'type' => 'boolean', 'example' => 'true'], + 'DeviceType' => ['description' => '设备类型。', 'type' => 'string', 'example' => 'iOS'], + 'DeviceId' => ['description' => '设备ID。', 'type' => 'string', 'example' => 'a64ae296f3b04a58a05b30c95****'], + 'Online' => ['description' => '是否在线。', 'type' => 'boolean', 'example' => 'false'], + 'Tags' => ['description' => '设备绑定的标签。', 'type' => 'string', 'example' => 'test_tag,test_tag2'], + 'DeviceToken' => ['description' => '设备令牌。', 'type' => 'string', 'example' => '5ecc7b4012aaa801b63******5543ccbda6b4930d09629e936e1ac4b762a7df'], + 'Alias' => ['description' => '设备绑定的别名。', 'type' => 'string', 'example' => 'test_alias,test_alias2'], + 'Brand' => ['description' => '设备品牌', 'type' => 'string', 'example' => 'HUAWEI'], + 'Model' => ['description' => '设备型号', 'type' => 'string', 'example' => 'VOG-AL00'], ], ], ], + 'description' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'AccountDisabled', - 'errorMessage' => 'Your account is not enabled.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', - ], - [ - 'errorCode' => 'Timeout', - 'errorMessage' => 'The request processing is timeout.', + 'title' => '查询设备详情', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2023-09-26T08:23:22.000Z', 'description' => '响应参数发生变更、错误码发生变更'], + ['createdAt' => '2023-09-26T08:23:22.000Z', 'description' => '响应参数发生变更、错误码发生变更'], + ['createdAt' => '2023-09-26T08:23:22.000Z', 'description' => '响应参数发生变更、错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryDeviceInfo'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryDeviceInfo', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"i91D***********kXIh/dVBEQ==\\",\\n \\"PageSize\\": 20,\\n \\"RequestId\\": \\"9B24B396-249D-55E4-8CA1-66C9B50BB734\\",\\n \\"Total\\": 193,\\n \\"Page\\": 11,\\n \\"PushInfos\\": {\\n \\"PushInfo\\": [\\n {\\n \\"Status\\": \\"SENT\\",\\n \\"MessageId\\": \\"510431\\",\\n \\"AppKey\\": 333526247,\\n \\"DeviceType\\": \\"ANDROID\\",\\n \\"PushType\\": \\"NOTICE\\",\\n \\"Body\\": \\"abcd\\",\\n \\"Title\\": \\"sssss\\",\\n \\"Source\\": \\"DEVICE\\",\\n \\"PushTime\\": \\"2021-09-15T02:05:24Z\\",\\n \\"Target\\": \\"DEVICE\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<QueryPushRecordsResponse>\\n <Page>1</Page>\\n <PageSize>20</PageSize>\\n <PushInfos>\\n <PushInfo>\\n <AppKey>23419851</AppKey>\\n <Body>云智能测试推送内容</Body>\\n <DeviceType>ANDROID</DeviceType>\\n <MessageId>60**************</MessageId>\\n <PushTime>2023-01-01T08:12:34Z</PushTime>\\n <PushType>NOTICE</PushType>\\n <Source>API</Source>\\n <Status>SENT</Status>\\n <Target>DEVICE</Target>\\n <Title>通知标题</Title>\\n </PushInfo>\\n </PushInfos>\\n <RequestId>DCA3F8E3-8D6A-5492-B059-48F56B022D8E</RequestId>\\n <Total>1</Total>\\n</QueryPushRecordsResponse>","errorExample":""}]', - 'title' => '查询推送记录', - 'summary' => '分页查询推送记录,并提供一些简单的筛选能力。', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6EEF262B-EA7D-41DC-89B9-20F3D1E28194\\",\\n \\"DeviceInfo\\": {\\n \\"Account\\": \\"test@aliyun.com\\",\\n \\"LastOnlineTime\\": \\"2018-03-27T02:19:40Z\\",\\n \\"PhoneNumber\\": \\"133********\\",\\n \\"PushEnabled\\": true,\\n \\"DeviceType\\": \\"iOS\\",\\n \\"DeviceId\\": \\"a64ae296f3b04a58a05b30c95****\\",\\n \\"Online\\": false,\\n \\"Tags\\": \\"test_tag,test_tag2\\",\\n \\"DeviceToken\\": \\"5ecc7b4012aaa801b63******5543ccbda6b4930d09629e936e1ac4b762a7df\\",\\n \\"Alias\\": \\"test_alias,test_alias2\\",\\n \\"Brand\\": \\"HUAWEI\\",\\n \\"Model\\": \\"VOG-AL00\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"<QueryDeviceInfoResponse>\\n <RequestId>6EEF262B-EA7D-41DC-89B9-20F3D1E28194</RequestId>\\n <DeviceInfo>\\n <Account>test@aliyun.com</Account>\\n <LastOnlineTime>2018-03-27T02:19:40Z</LastOnlineTime>\\n <PhoneNumber>133********</PhoneNumber>\\n <PushEnabled>true</PushEnabled>\\n <DeviceType>iOS</DeviceType>\\n <DeviceId>a64ae296f3b04a58a05b30c95****</DeviceId>\\n <Online>false</Online>\\n <Tags>test_tag,test_tag2</Tags>\\n <DeviceToken>5ecc7b4012aaa801b63******5543ccbda6b4930d09629e936e1ac4b762a7df</DeviceToken>\\n <Alias>test_alias,test_alias2</Alias>\\n </DeviceInfo>\\n</QueryDeviceInfoResponse>","errorExample":""}]', ], 'QueryDeviceStat' => [ - 'summary' => '查询app维度的设备统计。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -5823,46 +4864,26 @@ ], 'operationType' => 'read', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => '查询的开始时间。时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ。'."\n" - ."\n" - .'> 统计开始日期为开始时间当天北京时间0点。', - 'type' => 'string', - 'required' => true, - 'example' => '2016-07-28T00:00:00Z', - ], + 'schema' => ['description' => '查询的开始时间。时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ。'."\n" + ."\n" + .'> 统计开始日期为开始时间当天北京时间0点。', 'type' => 'string', 'required' => true, 'example' => '2016-07-28T00:00:00Z'], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => '查询的结束时间。时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ。'."\n" - ."\n" - .'> 统计结束日期为结束时间当天。', - 'type' => 'string', - 'required' => true, - 'example' => '2016-07-29T00:00:00Z', - ], + 'schema' => ['description' => '查询的结束时间。时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ。'."\n" + ."\n" + .'> 统计结束日期为结束时间当天。', 'type' => 'string', 'required' => true, 'example' => '2016-07-29T00:00:00Z'], ], [ 'name' => 'DeviceType', @@ -5877,17 +4898,9 @@ .'- **ALL**:全部类型设备', 'type' => 'string', 'required' => false, - 'enumValueTitles' => [ - 'ALL' => 'ALL', - 'ANDROID' => 'ANDROID', - 'iOS' => 'iOS', - ], + 'enumValueTitles' => ['ALL' => 'ALL', 'ANDROID' => 'ANDROID', 'iOS' => 'iOS'], 'example' => 'iOS', - 'enum' => [ - 'iOS', - 'ANDROID', - 'ALL', - ], + 'enum' => ['iOS', 'ANDROID', 'ALL'], ], ], [ @@ -5901,10 +4914,7 @@ 'type' => 'string', 'required' => true, 'example' => 'TOTAL', - 'enum' => [ - 'NEW', - 'TOTAL', - ], + 'enum' => ['NEW', 'TOTAL'], ], ], ], @@ -5913,11 +4923,7 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], 'AppDeviceStats' => [ 'type' => 'object', 'itemNode' => true, @@ -5929,108 +4935,73 @@ 'description' => '设备统计数据对象AppDeviceStat。', 'type' => 'object', 'properties' => [ - 'Time' => [ - 'description' => '截止时间。时间格式按照ISO8601标准表示,并使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ。', - 'type' => 'string', - 'example' => '2016-07-28T16:00:00Z', - ], - 'DeviceType' => [ - 'description' => '设备类型。', - 'type' => 'string', - 'example' => 'iOS', - ], - 'Count' => [ - 'description' => '设备数。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '100', - ], + 'Time' => ['description' => '截止时间。时间格式按照ISO8601标准表示,并使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ。', 'type' => 'string', 'example' => '2016-07-28T16:00:00Z'], + 'DeviceType' => ['description' => '设备类型。', 'type' => 'string', 'example' => 'iOS'], + 'Count' => ['description' => '设备数。', 'type' => 'integer', 'format' => 'int64', 'example' => '100'], ], ], ], ], + 'description' => '', ], ], + 'description' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"AppDeviceStats\\": {\\n \\"AppDeviceStat\\": [\\n {\\n \\"Time\\": \\"2016-07-28T16:00:00Z\\",\\n \\"DeviceType\\": \\"iOS\\",\\n \\"Count\\": 100\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<QueryDeviceStatResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <AppDeviceStats>\\n <Time>2016-07-27T16:00:00Z</Time>\\n <DeviceType>iOS</DeviceType>\\n <Count>90</Count>\\n </AppDeviceStats>\\n <AppDeviceStats>\\n <Time>2016-07-28T16:00:00Z</Time>\\n <DeviceType>iOS</DeviceType>\\n <Count>100</Count>\\n </AppDeviceStats>\\n</QueryDeviceStatResponse>","errorExample":""}]', 'title' => '设备新增与留存', + 'summary' => '查询app维度的设备统计。', 'description' => '> 目前只支持返回天的数据,天维度最多支持查31天内数据,天以北京时间为准。', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'QueryUniqueDeviceStat' => [ - 'summary' => '查询app维度的去重设备统计。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + 'changeSet' => [ + ['createdAt' => '2024-07-10T08:12:34.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-01-25T04:05:37.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:37.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:37.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '6', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryDeviceStat'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryDeviceStat', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"AppDeviceStats\\": {\\n \\"AppDeviceStat\\": [\\n {\\n \\"Time\\": \\"2016-07-28T16:00:00Z\\",\\n \\"DeviceType\\": \\"iOS\\",\\n \\"Count\\": 100\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<QueryDeviceStatResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <AppDeviceStats>\\n <Time>2016-07-27T16:00:00Z</Time>\\n <DeviceType>iOS</DeviceType>\\n <Count>90</Count>\\n </AppDeviceStats>\\n <AppDeviceStats>\\n <Time>2016-07-28T16:00:00Z</Time>\\n <DeviceType>iOS</DeviceType>\\n <Count>100</Count>\\n </AppDeviceStats>\\n</QueryDeviceStatResponse>","errorExample":""}]', + ], + 'QueryDevicesByAccount' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], ], [ - 'name' => 'StartTime', + 'name' => 'Account', 'in' => 'query', - 'schema' => [ - 'description' => '查询的起始时间,ISO-8601格式,格式为 YYYY-MM-DDThh:mm:ssZ。', - 'type' => 'string', - 'required' => true, - 'example' => '2016-07-25T00:00:00Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => '查询的结束时间,ISO-8601格式,格式为 YYYY-MM-DDThh:mm:ssZ。', - 'type' => 'string', - 'required' => true, - 'example' => '2016-07-26T00:00:00Z', - ], - ], - [ - 'name' => 'Granularity', - 'in' => 'query', - 'schema' => [ - 'description' => '按天或者按月查询。可取值:'."\n" - ."\n" - .'- DAY:天'."\n" - .'- MONTH:月', - 'type' => 'string', - 'required' => true, - 'example' => 'DAY', - 'enum' => [ - 'DAY', - 'MONTH', - ], - ], + 'schema' => ['description' => '账户名称,一次仅支持查询一个。', 'type' => 'string', 'required' => true, 'example' => 'test_account'], ], ], 'responses' => [ @@ -6038,91 +5009,76 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - 'AppDeviceStats' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => 'A8A24108-2AD0-4F6E-81C7-A8A24C2C2AD0'], + 'DeviceIds' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'AppDeviceStat' => [ - 'description' => '设备统计数据AppDeviceStat组成的数组。', + 'DeviceId' => [ + 'description' => '设备ID列表。', 'type' => 'array', - 'items' => [ - 'description' => '设备统计数据对象AppDeviceStat。', - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => '时间片。', - 'type' => 'string', - 'example' => '2016-07-25T00:00:00Z', - ], - 'Count' => [ - 'description' => '去重设备数。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '100', - ], - ], - ], + 'items' => ['description' => '设备ID', 'type' => 'string', 'example' => 'f6e43770afb944a1a879b46130ZZ****'], ], ], + 'description' => '', ], ], + 'description' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"AppDeviceStats\\": {\\n \\"AppDeviceStat\\": [\\n {\\n \\"Time\\": \\"2016-07-25T00:00:00Z\\",\\n \\"Count\\": 100\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<QueryUniqueDeviceStatResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <AppDeviceStats>\\n <AppDeviceStat>\\n <Time>2016-07-25T00:00:00Z</Time>\\n <Count>100</Count>\\n </AppDeviceStat>\\n <AppDeviceStat>\\n <Time>2016-07-26T00:00:00Z</Time>\\n <Count>100</Count>\\n </AppDeviceStat>\\n </AppDeviceStats>\\n</QueryUniqueDeviceStatResponse>","errorExample":""}]', - 'title' => '去重设备统计', - 'description' => '> 目前只支持返回天的数据,天维度最多支持查31天内数据。去重设备统计是以月为周期计数,每个月月初都会清零重新计数。', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'QueryDeviceInfo' => [ - 'summary' => '查询指定设备详细信息。', - 'methods' => [ - 'post', - 'get', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'AccountLimitExceed', 'errorMessage' => 'The number of devices bound to the account exceeds 10000.', 'description' => '设备已绑定10000个账号'], + ], + ], + 'title' => '通过账户查询设备列表', + 'summary' => '通过账户名称查询对应的设备列表。', + 'changeSet' => [ + ['createdAt' => '2022-01-11T10:18:12.000Z', 'description' => '错误码发生变更'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryDevicesByAccount'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryDevicesByAccount', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"A8A24108-2AD0-4F6E-81C7-A8A24C2C2AD0\\",\\n \\"DeviceIds\\": {\\n \\"DeviceId\\": [\\n \\"f6e43770afb944a1a879b46130ZZ****\\"\\n ]\\n }\\n}","type":"json"}]', + ], + 'QueryDevicesByAlias' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23419851', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], ], [ - 'name' => 'DeviceId', + 'name' => 'Alias', 'in' => 'query', - 'schema' => [ - 'description' => '设备在推送系统中的唯一标识,一次只能查询一个。', - 'type' => 'string', - 'required' => true, - 'example' => 'a64ae296f3b04a58a05b30c9****', - ], + 'schema' => ['description' => '别名,一次仅支持查询一个。', 'type' => 'string', 'required' => true, 'example' => 'test_alias'], ], ], 'responses' => [ @@ -6130,97 +5086,56 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '6EEF262B-EA7D-41DC-89B9-20F3D1E28194', - ], - 'DeviceInfo' => [ - 'description' => '设备详情。', + 'DeviceIds' => [ 'type' => 'object', + 'itemNode' => true, 'properties' => [ - 'Account' => [ - 'description' => '设备绑定的账户。', - 'type' => 'string', - 'example' => 'test@aliyun.com', - ], - 'LastOnlineTime' => [ - 'description' => '最近一次上线时间。', - 'type' => 'string', - 'example' => '2018-03-27T02:19:40Z', - ], - 'PhoneNumber' => [ - 'description' => '手机号。', - 'type' => 'string', - 'example' => '133********', - ], - 'PushEnabled' => [ - 'description' => '是否开启推送功能。', - 'type' => 'boolean', - 'example' => 'true', - ], - 'DeviceType' => [ - 'description' => '设备类型。', - 'type' => 'string', - 'example' => 'iOS', - ], 'DeviceId' => [ - 'description' => '设备ID。', - 'type' => 'string', - 'example' => 'a64ae296f3b04a58a05b30c95****', - ], - 'Online' => [ - 'description' => '是否在线。', - 'type' => 'boolean', - 'example' => 'false', - ], - 'Tags' => [ - 'description' => '设备绑定的标签。', - 'type' => 'string', - 'example' => 'test_tag,test_tag2', - ], - 'DeviceToken' => [ - 'description' => '设备令牌。', - 'type' => 'string', - 'example' => '5ecc7b4012aaa801b63******5543ccbda6b4930d09629e936e1ac4b762a7df', - ], - 'Alias' => [ - 'description' => '设备绑定的别名。', - 'type' => 'string', - 'example' => 'test_alias,test_alias2', - ], - 'Brand' => [ - 'description' => '设备品牌', - 'type' => 'string', - 'example' => 'HUAWEI', - ], - 'Model' => [ - 'description' => '设备型号', - 'type' => 'string', - 'example' => 'VOG-AL00', + 'description' => '设备ID列表。', + 'type' => 'array', + 'items' => ['description' => '设备ID', 'type' => 'string', 'example' => 'f6e43770afb944a1a879b4613****'], ], ], + 'description' => '', ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '6A9FD644-35A5-40E4-89B0-2021CAEDC1B4'], ], + 'description' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6EEF262B-EA7D-41DC-89B9-20F3D1E28194\\",\\n \\"DeviceInfo\\": {\\n \\"Account\\": \\"test@aliyun.com\\",\\n \\"LastOnlineTime\\": \\"2018-03-27T02:19:40Z\\",\\n \\"PhoneNumber\\": \\"133********\\",\\n \\"PushEnabled\\": true,\\n \\"DeviceType\\": \\"iOS\\",\\n \\"DeviceId\\": \\"a64ae296f3b04a58a05b30c95****\\",\\n \\"Online\\": false,\\n \\"Tags\\": \\"test_tag,test_tag2\\",\\n \\"DeviceToken\\": \\"5ecc7b4012aaa801b63******5543ccbda6b4930d09629e936e1ac4b762a7df\\",\\n \\"Alias\\": \\"test_alias,test_alias2\\",\\n \\"Brand\\": \\"HUAWEI\\",\\n \\"Model\\": \\"VOG-AL00\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"<QueryDeviceInfoResponse>\\n <RequestId>6EEF262B-EA7D-41DC-89B9-20F3D1E28194</RequestId>\\n <DeviceInfo>\\n <Account>test@aliyun.com</Account>\\n <LastOnlineTime>2018-03-27T02:19:40Z</LastOnlineTime>\\n <PhoneNumber>133********</PhoneNumber>\\n <PushEnabled>true</PushEnabled>\\n <DeviceType>iOS</DeviceType>\\n <DeviceId>a64ae296f3b04a58a05b30c95****</DeviceId>\\n <Online>false</Online>\\n <Tags>test_tag,test_tag2</Tags>\\n <DeviceToken>5ecc7b4012aaa801b63******5543ccbda6b4930d09629e936e1ac4b762a7df</DeviceToken>\\n <Alias>test_alias,test_alias2</Alias>\\n </DeviceInfo>\\n</QueryDeviceInfoResponse>","errorExample":""}]', - 'title' => '查询设备详情', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'QueryPushStatByApp' => [ - 'summary' => '查询app维度的推送统计。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + 'title' => '通过别名查询设备列表', + 'summary' => '通过别名查询对应的设备列表。', + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:37.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:37.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:37.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryDevicesByAlias'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryDevicesByAlias', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DeviceIds\\": {\\n \\"DeviceId\\": [\\n \\"f6e43770afb944a1a879b4613****\\"\\n ]\\n },\\n \\"RequestId\\": \\"6A9FD644-35A5-40E4-89B0-2021CAEDC1B4\\"\\n}","type":"json"}]', + ], + 'QueryPushRecords' => [ + 'summary' => '分页查询推送记录,并提供一些简单的筛选能力。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -6229,168 +5144,232 @@ 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREemasIDMTIS'], ], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'example' => '333526247'], ], [ 'name' => 'StartTime', 'in' => 'query', + 'schema' => ['description' => '查询的起始时间,UTC时间,ISO-8601格式,格式为YYYY-MM-DDThh:mm:ssZ。', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => '2021-09-15T02:05:24Z'], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => '查询的结束时间,UTC时间,ISO-8601格式,格式为YYYY-MM-DDThh:mm:ssZ。', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => '2021-09-29T06:24:58Z'], + ], + [ + 'name' => 'PushType', + 'in' => 'query', 'schema' => [ - 'description' => '查询的起始时间,ISO-8601格式,格式为YYYY-MM-DDThh:mm:ssZ。', + 'description' => '推送类型。取值:'."\n" + ."\n" + .'- **MESSAGE**:表示消息。'."\n" + ."\n" + .'- **NOTICE**:表示通知。'."\n" + ."\n" + .'- **LIVE_ACTIVITY**: 表示灵动岛', 'type' => 'string', - 'required' => true, - 'example' => '2016-07-25T00:00:00Z', + 'required' => false, + 'example' => 'NOTICE', + 'enum' => ['MESSAGE', 'NOTICE', 'LIVE_ACTIVITY'], ], ], [ - 'name' => 'EndTime', + 'name' => 'Target', 'in' => 'query', 'schema' => [ - 'description' => '查询的结束时间,ISO-8601格式,格式为YYYY-MM-DDThh:mm:ssZ。', + 'description' => '推送目标:'."\n" + ."\n" + .'- **DEVICE**:根据设备推送。'."\n" + ."\n" + .'- **ACCOUNT**:根据账号推送。'."\n" + ."\n" + .'- **ALIAS**:根据别名推送。'."\n" + ."\n" + .'- **TAG**:根据标签推送。'."\n" + ."\n" + .'- **ALL**:推送给全部设备。'."\n" + ."\n" + .'- **TBD**:初始化持续推送,推送目标由后续的ContinuouslyPush接口指定。', 'type' => 'string', - 'required' => true, - 'example' => '2016-07-29T00:00:00Z', + 'required' => false, + 'example' => 'DEVICE', + 'enum' => ['ACCOUNT', 'ALIAS', 'DEVICE', 'TAG', 'TBD', 'FILE', 'ALL'], ], ], [ - 'name' => 'Granularity', + 'name' => 'Source', 'in' => 'query', 'schema' => [ - 'description' => '返回的数据粒度,目前只支持按天粒度查询 31 内天数据。取值:'."\n" + 'description' => '推送来源。可取值:'."\n" ."\n" - .'- **DAY**:按天粒度查询。', + .'- **API**:OpenAPI发起的推送,含OpenAPI平台控制台发起的推送。'."\n" + .'- **CONSOLE**:通过移动推送控制台推送。'."\n" + .'- **OpenAPIExplorer**:通过阿里云OpenAPI Explorer平台推送。', 'type' => 'string', - 'required' => true, - 'example' => 'DAY', - 'enum' => [ - 'DAY', - ], + 'required' => false, + 'example' => 'API', + 'enum' => ['CONSOLE', 'API', 'OpenAPIExplorer'], ], ], + [ + 'name' => 'Keyword', + 'in' => 'query', + 'schema' => ['description' => '查询关键字,根据MessageId、Title、Body字段进行查询。系统对推送的title和body进行了中文分词,使用分词进行查询,非子字符串匹配查询。', 'type' => 'string', 'required' => false, 'example' => '统计数据测试通知805'], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => ['description' => '废弃参数,不再使用。', 'type' => 'string', 'required' => false, 'example' => 'FFPpkmhCPm*****************xjk='], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => '每页的条目数量,默认值为20, 最大为100。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '100', 'minimum' => '1', 'example' => '10', 'default' => '20'], + ], + [ + 'name' => 'Page', + 'in' => 'query', + 'schema' => ['description' => '推送记录的当前页数, 默认为1,最大10000。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '10000', 'minimum' => '1', 'example' => '8', 'default' => '1'], + ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - 'AppPushStats' => [ + 'NextToken' => ['description' => '废弃参数,不再使用。', 'type' => 'string', 'example' => 'i91D***********kXIh/dVBEQ=='], + 'PageSize' => ['description' => '每页的条目数量。', 'type' => 'integer', 'format' => 'int32', 'example' => '20'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9B24B396-249D-55E4-8CA1-66C9B50BB734'], + 'Total' => ['description' => '记录总条数。', 'type' => 'integer', 'format' => 'int32', 'example' => '193'], + 'Page' => ['description' => '推送记录的当前页数。', 'type' => 'integer', 'format' => 'int32', 'example' => '11'], + 'PushInfos' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'AppPushStat' => [ - 'description' => 'APP推送统计AppPushStat组成的数据,根据时间粒度返回数据。', + 'PushInfo' => [ + 'description' => '具体通知/消息的详情。', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'Time' => [ - 'description' => '时间。', + 'Status' => ['description' => '消息状态。可取值:'."\n" + ."\n" + .'- **WAITING**:等待中。'."\n" + ."\n" + .'- **SENT**:已推送。'."\n" + ."\n" + .'- **CANCELED**:已取消。'."\n", 'type' => 'string', 'example' => 'SENT'], + 'MessageId' => ['description' => '消息ID。', 'type' => 'string', 'example' => '510431'], + 'AppKey' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'example' => '333526247'], + 'DeviceType' => [ + 'description' => '设备类型。取值:'."\n" + ."\n" + .'- **ALL**:所有类型。'."\n" + ."\n" + .'- **IOS**:iOS设备。'."\n" + ."\n" + .'- **ANDROID**:Android设备。', 'type' => 'string', - 'example' => '2016-07-25T00:00:00Z', - ], - 'DeletedCount' => [ - 'description' => '通知在设备上被清除的数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '10', - ], - 'OpenedCount' => [ - 'description' => '通知在设备上被点击的数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '30', - ], - 'SmsReceiveSuccessCount' => [ - 'description' => '可为空,短信复合推送成功收到的短信数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', - ], - 'SmsSkipCount' => [ - 'description' => '可为空,短信复合推送跳过发送短信的数目,例如未绑手机号。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', - ], - 'SmsReceiveFailedCount' => [ - 'description' => '可为空,短信复合推送发出但是手机未收到的短信数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', - ], - 'SmsFailedCount' => [ - 'description' => '可为空,短信复合推送短信发送失败的数目,例如未开通对应服务、未授权通过、参数错误等。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', - ], - 'ReceivedCount' => [ - 'description' => '实际送达到设备的数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '60', - ], - 'SentCount' => [ - 'description' => '推送服务端实际发出的数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '100', + 'enumValueTitles' => ['ALL' => 'ALL', 'IOS' => 'IOS', 'ANDROID' => 'ANDROID'], + 'example' => 'ANDROID', ], - 'SmsSentCount' => [ - 'description' => '可为空,短信复合推送发出的短信数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', + 'PushType' => [ + 'description' => '推送类型。取值:'."\n" + ."\n" + .'- **MESSAGE**:消息。'."\n" + ."\n" + .'- **NOTICE**:通知。', + 'type' => 'string', + 'enumValueTitles' => ['MESSAGE' => 'MESSAGE', 'NOTICE' => 'NOTICE'], + 'example' => 'NOTICE', ], - 'AcceptCount' => [ - 'description' => '推送服务端接收到的推送数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '120', + 'Body' => ['description' => '推送的body字段。', 'type' => 'string', 'example' => 'abcd'], + 'Title' => ['description' => '推送的title字段。', 'type' => 'string', 'example' => 'sssss'], + 'Source' => [ + 'description' => '推送源类型。可取值:'."\n" + ."\n" + .'- **API**:OpenAPI发起的推送,含OpenAPI平台控制台发起的推送。'."\n" + ."\n" + .'- **CONSOLE**:通过移动推送控制台推送。', + 'type' => 'string', + 'enumValueTitles' => ['CONSOLE' => 'CONSOLE', 'API' => 'API'], + 'example' => 'DEVICE', ], + 'PushTime' => ['description' => '推送时间,UTC时间,ISO-8601格式, 格式为 YYYY-MM-DDThh:mm:ssZ。', 'type' => 'string', 'example' => '2021-09-15T02:05:24Z'], + 'Target' => ['description' => '推送目标:'."\n" + ."\n" + .'- **ACCOUNT**:根据账号推送。'."\n" + ."\n" + .'- **ALIAS**:根据别名推送。'."\n" + ."\n" + .'- **DEVICE**:根据设备推送。'."\n" + ."\n" + .'- **TAG**:根据标签推送。'."\n" + ."\n" + .'- **ALL**:推送给全部设备。'."\n" + ."\n" + .'- **TBD**:初始化持续推送,推送目标由后续的ContinuouslyPush接口指定。', 'type' => 'string', 'example' => 'DEVICE'], ], + 'description' => '', ], ], ], + 'description' => '', ], ], + 'description' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"AppPushStats\\": {\\n \\"AppPushStat\\": [\\n {\\n \\"Time\\": \\"2016-07-25T00:00:00Z\\",\\n \\"DeletedCount\\": 10,\\n \\"OpenedCount\\": 30,\\n \\"SmsReceiveSuccessCount\\": 0,\\n \\"SmsSkipCount\\": 0,\\n \\"SmsReceiveFailedCount\\": 0,\\n \\"SmsFailedCount\\": 0,\\n \\"ReceivedCount\\": 60,\\n \\"SentCount\\": 100,\\n \\"SmsSentCount\\": 0,\\n \\"AcceptCount\\": 120\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<QueryPushStatByAppResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <AppPushStats>\\n <AppPushStat>\\n <Time>2016-07-25T00:00:00Z</Time>\\n <AcceptCount>120</AcceptCount>\\n <SentCount>100</SentCount>\\n <ReceivedCount>60</ReceivedCount>\\n <OpenedCount>30</OpenedCount>\\n <DeletedCount>10</DeletedCount>\\n </AppPushStat>\\n <AppPushStat>\\n <time>2016-07-29T00:00:00Z</time>\\n <AcceptCount>120</AcceptCount>\\n <SentCount>100</SentCount>\\n <ReceivedCount>60</ReceivedCount>\\n <OpenedCount>30</OpenedCount>\\n <DeletedCount>10</DeletedCount>\\n </AppPushStat>\\n </AppPushStats>\\n</QueryPushStatByAppResponse>","errorExample":""}]', - 'title' => 'App维度推送统计', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'QueryPushStatByMsg' => [ - 'summary' => '查询消息维度的推送统计。', - 'methods' => [ - 'post', - 'get', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'AccountDisabled', 'errorMessage' => 'Your account is not enabled.', 'description' => '功能未启用。'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', 'description' => '服务端错误,建议重试,仍然失败则提工单'], + ['errorCode' => 'Timeout', 'errorMessage' => 'The request processing is timeout.', 'description' => '请求处理超时。'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"i91D***********kXIh/dVBEQ==\\",\\n \\"PageSize\\": 20,\\n \\"RequestId\\": \\"9B24B396-249D-55E4-8CA1-66C9B50BB734\\",\\n \\"Total\\": 193,\\n \\"Page\\": 11,\\n \\"PushInfos\\": {\\n \\"PushInfo\\": [\\n {\\n \\"Status\\": \\"SENT\\",\\n \\"MessageId\\": \\"510431\\",\\n \\"AppKey\\": 333526247,\\n \\"DeviceType\\": \\"ANDROID\\",\\n \\"PushType\\": \\"NOTICE\\",\\n \\"Body\\": \\"abcd\\",\\n \\"Title\\": \\"sssss\\",\\n \\"Source\\": \\"DEVICE\\",\\n \\"PushTime\\": \\"2021-09-15T02:05:24Z\\",\\n \\"Target\\": \\"DEVICE\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<QueryPushRecordsResponse>\\n <Page>1</Page>\\n <PageSize>20</PageSize>\\n <PushInfos>\\n <PushInfo>\\n <AppKey>23419851</AppKey>\\n <Body>云智能测试推送内容</Body>\\n <DeviceType>ANDROID</DeviceType>\\n <MessageId>60**************</MessageId>\\n <PushTime>2023-01-01T08:12:34Z</PushTime>\\n <PushType>NOTICE</PushType>\\n <Source>API</Source>\\n <Status>SENT</Status>\\n <Target>DEVICE</Target>\\n <Title>通知标题</Title>\\n </PushInfo>\\n </PushInfos>\\n <RequestId>DCA3F8E3-8D6A-5492-B059-48F56B022D8E</RequestId>\\n <Total>1</Total>\\n</QueryPushRecordsResponse>","errorExample":""}]', + 'title' => '查询推送记录', + 'changeSet' => [ + ['createdAt' => '2024-05-13T08:11:37.000Z', 'description' => '请求参数发生变更'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2021-12-27T12:34:38.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryPushRecords'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'mpush:QueryPushRecords', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + ], + 'QueryPushStatByApp' => [ + 'summary' => '查询app维度的推送统计。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -6398,34 +5377,34 @@ ], 'operationType' => 'read', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], ], [ - 'name' => 'MessageId', + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => '查询的起始时间,ISO-8601格式,格式为YYYY-MM-DDThh:mm:ssZ。', 'type' => 'string', 'required' => true, 'example' => '2016-07-25T00:00:00Z'], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => '查询的结束时间,ISO-8601格式,格式为YYYY-MM-DDThh:mm:ssZ。', 'type' => 'string', 'required' => true, 'example' => '2016-07-29T00:00:00Z'], + ], + [ + 'name' => 'Granularity', 'in' => 'query', 'schema' => [ - 'description' => '推送的消息ID,推送之后会返回该ID。'."\n" - .'> 推送数据隔天展示,不支持查询今日数据。', - 'type' => 'integer', - 'format' => 'int64', + 'description' => '返回的数据粒度,目前只支持按天粒度查询 31 内天数据。取值:'."\n" + ."\n" + .'- **DAY**:按天粒度查询。', + 'type' => 'string', 'required' => true, - 'enumValueTitles' => [], - 'example' => '510427', + 'example' => 'DAY', + 'enum' => ['DAY'], ], ], ], @@ -6434,111 +5413,74 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => 'CF195C34-98FB-491A-98D7-19CBC1FA880B', - ], - 'PushStats' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], + 'AppPushStats' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'PushStat' => [ - 'description' => '消息/通知的推送结果统计PushStat组成的数组。', + 'AppPushStat' => [ + 'description' => 'APP推送统计AppPushStat组成的数据,根据时间粒度返回数据。', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'MessageId' => [ - 'description' => '消息ID。', - 'type' => 'string', - 'example' => '510427', - ], - 'DeletedCount' => [ - 'description' => '通知在设备上被清除的数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '10', - ], - 'OpenedCount' => [ - 'description' => '通知在设备上被点击的数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '30', - ], - 'SmsReceiveSuccessCount' => [ - 'description' => '(可为空)短信复合推送成功收到的短信数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', - ], - 'SmsSkipCount' => [ - 'description' => '(可为空)短信复合推送跳过发送短信的数目,例如未绑手机号。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', - ], - 'SmsReceiveFailedCount' => [ - 'description' => '(可为空)短信复合推送发出但是手机未收到的短信数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', - ], - 'SmsFailedCount' => [ - 'description' => '(可为空)短信复合推送短信发送失败的数目,例如未开通对应服务、未授权通过、参数错误等。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', - ], - 'ReceivedCount' => [ - 'description' => '实际送达到设备的数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '60', - ], - 'SentCount' => [ - 'description' => '推送服务端实际发出的数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '100', - ], - 'SmsSentCount' => [ - 'description' => '(可为空)短信复合推送发出的短信数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', - ], - 'AcceptCount' => [ - 'description' => '推送服务端接收到的推送数目。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '120', - ], + 'Time' => ['description' => '时间。', 'type' => 'string', 'example' => '2016-07-25T00:00:00Z'], + 'DeletedCount' => ['description' => '通知在设备上被清除的数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '10'], + 'OpenedCount' => ['description' => '通知在设备上被点击的数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '30'], + 'SmsReceiveSuccessCount' => ['description' => '可为空,短信复合推送成功收到的短信数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '0'], + 'SmsSkipCount' => ['description' => '可为空,短信复合推送跳过发送短信的数目,例如未绑手机号。', 'type' => 'integer', 'format' => 'int64', 'example' => '0'], + 'SmsReceiveFailedCount' => ['description' => '可为空,短信复合推送发出但是手机未收到的短信数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '0'], + 'SmsFailedCount' => ['description' => '可为空,短信复合推送短信发送失败的数目,例如未开通对应服务、未授权通过、参数错误等。', 'type' => 'integer', 'format' => 'int64', 'example' => '0'], + 'ReceivedCount' => ['description' => '实际送达到设备的数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '60'], + 'SentCount' => ['description' => '推送服务端实际发出的数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '100'], + 'SmsSentCount' => ['description' => '可为空,短信复合推送发出的短信数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '0'], + 'AcceptCount' => ['description' => '推送服务端接收到的推送数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '120'], ], + 'description' => '', ], ], ], + 'description' => '', ], ], + 'description' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CF195C34-98FB-491A-98D7-19CBC1FA880B\\",\\n \\"PushStats\\": {\\n \\"PushStat\\": [\\n {\\n \\"MessageId\\": \\"510427\\",\\n \\"DeletedCount\\": 10,\\n \\"OpenedCount\\": 30,\\n \\"SmsReceiveSuccessCount\\": 0,\\n \\"SmsSkipCount\\": 0,\\n \\"SmsReceiveFailedCount\\": 0,\\n \\"SmsFailedCount\\": 0,\\n \\"ReceivedCount\\": 60,\\n \\"SentCount\\": 100,\\n \\"SmsSentCount\\": 0,\\n \\"AcceptCount\\": 120\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<QueryPushStatByMsgResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <PushStats>\\n <PushStat>\\n <MessageId>510427</MessageId>\\n <AcceptCount>120</AcceptCount>\\n <SentCount>100</SentCount>\\n <ReceivedCount>60</ReceivedCount>\\n <OpenedCount>30</OpenedCount>\\n <DeletedCount>10</DeletedCount>\\n </PushStat>\\n </PushStats>\\n</QueryPushStatByMsgResponse>","errorExample":""}]', - 'title' => '任务维度推送统计', + 'title' => 'App维度推送统计', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'CheckDevices' => [ - 'summary' => '验证指定的一组设备的有效性。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '6', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryPushStatByApp'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryPushStatByApp', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"AppPushStats\\": {\\n \\"AppPushStat\\": [\\n {\\n \\"Time\\": \\"2016-07-25T00:00:00Z\\",\\n \\"DeletedCount\\": 10,\\n \\"OpenedCount\\": 30,\\n \\"SmsReceiveSuccessCount\\": 0,\\n \\"SmsSkipCount\\": 0,\\n \\"SmsReceiveFailedCount\\": 0,\\n \\"SmsFailedCount\\": 0,\\n \\"ReceivedCount\\": 60,\\n \\"SentCount\\": 100,\\n \\"SmsSentCount\\": 0,\\n \\"AcceptCount\\": 120\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<QueryPushStatByAppResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <AppPushStats>\\n <AppPushStat>\\n <Time>2016-07-25T00:00:00Z</Time>\\n <AcceptCount>120</AcceptCount>\\n <SentCount>100</SentCount>\\n <ReceivedCount>60</ReceivedCount>\\n <OpenedCount>30</OpenedCount>\\n <DeletedCount>10</DeletedCount>\\n </AppPushStat>\\n <AppPushStat>\\n <time>2016-07-29T00:00:00Z</time>\\n <AcceptCount>120</AcceptCount>\\n <SentCount>100</SentCount>\\n <ReceivedCount>60</ReceivedCount>\\n <OpenedCount>30</OpenedCount>\\n <DeletedCount>10</DeletedCount>\\n </AppPushStat>\\n </AppPushStats>\\n</QueryPushStatByAppResponse>","errorExample":""}]', + ], + 'QueryPushStatByMsg' => [ + 'summary' => '查询消息维度的推送统计。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -6546,31 +5488,24 @@ ], 'operationType' => 'read', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23419851', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], ], [ - 'name' => 'DeviceIds', + 'name' => 'MessageId', 'in' => 'query', 'schema' => [ - 'description' => '设备在推送的唯一标识,32位,数字和小写字母组合,多个设备查询用“,”分隔,一次最多查100个。', - 'type' => 'string', + 'description' => '推送的消息ID,推送之后会返回该ID。'."\n" + .'> 推送数据隔天展示,不支持查询今日数据。', + 'type' => 'integer', + 'format' => 'int64', 'required' => true, - 'example' => 'ae296f3b04a58a05b30c95f****,ae296f3b04a58a05b30c95f****,ae296f3b04a58a05b30c95f****', + 'enumValueTitles' => [], + 'example' => '510427', ], ], ], @@ -6579,372 +5514,91 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - 'DeviceCheckInfos' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => 'CF195C34-98FB-491A-98D7-19CBC1FA880B'], + 'PushStats' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'DeviceCheckInfo' => [ - 'description' => '批量设备有效性检查结果。', + 'PushStat' => [ + 'description' => '消息/通知的推送结果统计PushStat组成的数组。', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'DeviceId' => [ - 'description' => '设备ID。', - 'type' => 'string', - 'example' => 'ae296f3b04a58a05b30c95f****', - ], - 'Available' => [ - 'description' => '是否可用。', - 'type' => 'boolean', - 'example' => 'true', - ], + 'MessageId' => ['description' => '消息ID。', 'type' => 'string', 'example' => '510427'], + 'DeletedCount' => ['description' => '通知在设备上被清除的数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '10'], + 'OpenedCount' => ['description' => '通知在设备上被点击的数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '30'], + 'SmsReceiveSuccessCount' => ['description' => '(可为空)短信复合推送成功收到的短信数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '0'], + 'SmsSkipCount' => ['description' => '(可为空)短信复合推送跳过发送短信的数目,例如未绑手机号。', 'type' => 'integer', 'format' => 'int64', 'example' => '0'], + 'SmsReceiveFailedCount' => ['description' => '(可为空)短信复合推送发出但是手机未收到的短信数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '0'], + 'SmsFailedCount' => ['description' => '(可为空)短信复合推送短信发送失败的数目,例如未开通对应服务、未授权通过、参数错误等。', 'type' => 'integer', 'format' => 'int64', 'example' => '0'], + 'ReceivedCount' => ['description' => '实际送达到设备的数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '60'], + 'SentCount' => ['description' => '推送服务端实际发出的数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '100'], + 'SmsSentCount' => ['description' => '(可为空)短信复合推送发出的短信数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '0'], + 'AcceptCount' => ['description' => '推送服务端接收到的推送数目。', 'type' => 'integer', 'format' => 'int64', 'example' => '120'], ], + 'description' => '', ], ], ], + 'description' => '', ], ], + 'description' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"DeviceCheckInfos\\": {\\n \\"DeviceCheckInfo\\": [\\n {\\n \\"DeviceId\\": \\"ae296f3b04a58a05b30c95f****\\",\\n \\"Available\\": true\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<CheckDevicesResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <DeviceCheckInfos>\\n <DeviceCheckInfo>\\n <DeviceId>ae296f3b04a58a05b30c95f1****</DeviceId>\\n <Available>true</Available>\\n </DeviceCheckInfo>\\n <DeviceCheckInfo>\\n <DeviceId>ae296f3b04a58a05b30c95f1****</DeviceId>\\n <Available>true</Available>\\n </DeviceCheckInfo>\\n <DeviceCheckInfo>\\n <DeviceId>ae296f3b04a58a05b30c95f1****</DeviceId>\\n <Available>false</Available>\\n </DeviceCheckInfo>\\n </DeviceCheckInfos>\\n</CheckDevicesResponse>","errorExample":""}]', - 'title' => '批量检查设备有效性', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'BindTag' => [ - 'summary' => '将TAG绑定到指定的目标(设备、账号或别名),TAG绑定在10分钟内生效。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'write', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], - ], - [ - 'name' => 'ClientKey', - 'in' => 'query', - 'schema' => [ - 'description' => '设备或account或alias,多个key用逗号分隔,最多支持1000个。', - 'type' => 'string', - 'required' => true, - 'example' => 'e2ba19de97604f55b16557673****', - ], - ], - [ - 'name' => 'KeyType', - 'in' => 'query', - 'schema' => [ - 'description' => 'ClientKey的类型。可取值:'."\n" - ."\n" - .'- **DEVICE**:设备'."\n" - .'- **ACCOUNT**:账号'."\n" - .'- **ALIAS**:别名', - 'type' => 'string', - 'required' => true, - 'example' => 'DEVICE', - 'enum' => [ - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - ], - ], - ], - [ - 'name' => 'TagName', - 'in' => 'query', - 'schema' => [ - 'description' => '绑定的标签,多个标签用英文逗号(,)分隔,单次最多绑定 10 个标签。'."\n" - .'标签名称不超过 128 个字符(中文计 1 个字符),每个应用最多创建 10,000 个标签,单个设备可绑定多个标签。'."\n" - ."\n" - .'><notice>'."\n" - ."\n" - .'不建议单个标签绑定超过 10 万台设备,否则推送处理时间会延长,影响响应速度。'."\n" - .'如需对大量设备推送,建议采用以下方式:'."\n" - ."\n" - .'- 使用全推功能直接推送给所有设备'."\n" - .'- 将设备集合拆分到多个细粒度标签,分批调用推送接口'."\n" - ."\n" - .'></notice>'."\n" - ."\n" - .'> - 重复绑定相同标签时系统将自动去重'."\n" - .'> - 设备卸载应用后,相关标签会自动解绑(存在一定延迟)', - 'type' => 'string', - 'required' => true, - 'example' => 'test_tag,test_tag2', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '82FD0A09-5BB8-40FB-8221-9A11FE92D620', - ], - ], - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'AccountDisabled', - 'errorMessage' => 'Your account is not enabled.', - ], - [ - 'errorCode' => 'Invalid%s.Format', - 'errorMessage' => 'The specified %s format is invalid.', - ], - [ - 'errorCode' => 'Invalid%s.NotFound', - 'errorMessage' => 'The specified %s is not found.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', - ], - ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"82FD0A09-5BB8-40FB-8221-9A11FE92D620\\"\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<BindTagResponse>\\n <RequestId>82FD0A09-5BB8-40FB-8221-9A11FE92D620</RequestId>\\n</BindTagResponse>","errorExample":""}]', - 'title' => '绑定标签', + 'title' => '任务维度推送统计', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'UnbindTag' => [ - 'summary' => '解绑指定的TAG和其目标之间的关系。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'write', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], - ], - [ - 'name' => 'ClientKey', - 'in' => 'query', - 'schema' => [ - 'description' => '设备、账号或别名,多个key用逗号分隔,最多支持1000个。', - 'type' => 'string', - 'required' => true, - 'example' => 'e2ba19de97604f55b16557673****', - ], - ], - [ - 'name' => 'KeyType', - 'in' => 'query', - 'schema' => [ - 'description' => 'ClientKey的类型。可取值:'."\n" - ."\n" - .'- **DEVICE**:设备'."\n" - .'- **ACCOUNT**:账号'."\n" - .'- **ALIAS**:别名', - 'type' => 'string', - 'required' => true, - 'example' => 'DEVICE', - 'enum' => [ - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - ], - ], - ], - [ - 'name' => 'TagName', - 'in' => 'query', - 'schema' => [ - 'description' => '绑定的Tag,多个Tag用逗号分隔,系统总共支持1万个Tag,此接口一次最多能解绑10个Tag。长度限制:不大于128字符。', - 'type' => 'string', - 'required' => true, - 'example' => 'test_tag1,test_tag2', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '159E4422-6624-4750-8943-DFD98D34858C', - ], - ], - ], - ], - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"159E4422-6624-4750-8943-DFD98D34858C\\"\\n}","type":"json"}]', - 'title' => '解绑标签', - ], - 'RemoveTag' => [ - 'summary' => '删除app下的TAG。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'write', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], - ], - [ - 'name' => 'TagName', - 'in' => 'query', - 'schema' => [ - 'description' => '要删除的Tag名称。单次只能删除一个Tag。长度限制:不大于128字符。', - 'type' => 'string', - 'required' => true, - 'example' => 'test_tag', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '23000F3C-0EFE-4C89-82EE-E04F42D37B3C', - ], + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryPushStatByMsg'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryPushStatByMsg', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"23000F3C-0EFE-4C89-82EE-E04F42D37B3C\\"\\n}","type":"json"}]', - 'title' => '删除标签', - 'description' => '标签删除需要一定的删除时间,这个时间根据绑定该标签的目标数而定,请勿在删除标签后短时间内重新创建同名标签,或批量删除标签后批量重新创建标签。建议同一个app删除和创建同一名称tag的间隔时间不小于5分钟,批量删除后创建tag建议间隔时间不小于删除数量×5分钟。', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CF195C34-98FB-491A-98D7-19CBC1FA880B\\",\\n \\"PushStats\\": {\\n \\"PushStat\\": [\\n {\\n \\"MessageId\\": \\"510427\\",\\n \\"DeletedCount\\": 10,\\n \\"OpenedCount\\": 30,\\n \\"SmsReceiveSuccessCount\\": 0,\\n \\"SmsSkipCount\\": 0,\\n \\"SmsReceiveFailedCount\\": 0,\\n \\"SmsFailedCount\\": 0,\\n \\"ReceivedCount\\": 60,\\n \\"SentCount\\": 100,\\n \\"SmsSentCount\\": 0,\\n \\"AcceptCount\\": 120\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<QueryPushStatByMsgResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <PushStats>\\n <PushStat>\\n <MessageId>510427</MessageId>\\n <AcceptCount>120</AcceptCount>\\n <SentCount>100</SentCount>\\n <ReceivedCount>60</ReceivedCount>\\n <OpenedCount>30</OpenedCount>\\n <DeletedCount>10</DeletedCount>\\n </PushStat>\\n </PushStats>\\n</QueryPushStatByMsgResponse>","errorExample":""}]', ], 'QueryTags' => [ 'summary' => '查询指定对象(设备、账号或别名)的TAG列表。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], ], [ 'name' => 'ClientKey', 'in' => 'query', - 'schema' => [ - 'description' => '设备、账号或别名, 每次只能查询1个clientKey。', - 'type' => 'string', - 'required' => true, - 'example' => 'e2ba19de97604f55b165576****', - ], + 'schema' => ['description' => '设备、账号或别名, 每次只能查询1个clientKey。', 'type' => 'string', 'required' => true, 'example' => 'e2ba19de97604f55b165576****'], ], [ 'name' => 'KeyType', @@ -6953,17 +5607,9 @@ 'description' => 'ClientKey的类型。', 'type' => 'string', 'required' => true, - 'enumValueTitles' => [ - 'ACCOUNT' => '账号', - 'ALIAS' => '别名', - 'DEVICE' => '设备', - ], + 'enumValueTitles' => ['ACCOUNT' => '账号', 'ALIAS' => '别名', 'DEVICE' => '设备'], 'example' => 'DEVICE', - 'enum' => [ - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - ], + 'enum' => ['DEVICE', 'ACCOUNT', 'ALIAS'], ], ], ], @@ -6972,11 +5618,7 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => 'D68AE5C6-8AAF-46C9-B627-3FDACD1A4168', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => 'D68AE5C6-8AAF-46C9-B627-3FDACD1A4168'], 'TagInfos' => [ 'type' => 'object', 'itemNode' => true, @@ -6987,33 +5629,50 @@ 'items' => [ 'type' => 'object', 'properties' => [ - 'TagName' => [ - 'description' => '绑定的Tag名称。', - 'type' => 'string', - 'example' => 'test_tag2', - ], + 'TagName' => ['description' => '绑定的Tag名称。', 'type' => 'string', 'example' => 'test_tag2'], ], + 'description' => '', ], ], ], + 'description' => '', ], ], + 'description' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"D68AE5C6-8AAF-46C9-B627-3FDACD1A4168\\",\\n \\"TagInfos\\": {\\n \\"TagInfo\\": [\\n {\\n \\"TagName\\": \\"test_tag2\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<QueryTagsResponse>\\n <RequestId>1197FEB8-3644-4355-A96D-E332F45470EA</RequestId>\\n <TagInfos>\\n <TagInfo>\\n <TagName>test_tag2</TagName>\\n </TagInfo>\\n <TagInfo>\\n <TagName>test_tag1</TagName>\\n </TagInfo>\\n </TagInfos>\\n</QueryTagsResponse>","errorExample":""}]', 'title' => '查询标签列表', - ], - 'ListTags' => [ - 'summary' => '查询app的标签列表,最多返回100条记录。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryTags'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryTags', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"D68AE5C6-8AAF-46C9-B627-3FDACD1A4168\\",\\n \\"TagInfos\\": {\\n \\"TagInfo\\": [\\n {\\n \\"TagName\\": \\"test_tag2\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<QueryTagsResponse>\\n <RequestId>1197FEB8-3644-4355-A96D-E332F45470EA</RequestId>\\n <TagInfos>\\n <TagInfo>\\n <TagName>test_tag2</TagName>\\n </TagInfo>\\n <TagInfo>\\n <TagName>test_tag1</TagName>\\n </TagInfo>\\n </TagInfos>\\n</QueryTagsResponse>","errorExample":""}]', + ], + 'QueryUniqueDeviceStat' => [ + 'summary' => '查询app维度的去重设备统计。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -7021,21 +5680,35 @@ ], 'operationType' => 'read', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'list', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => '查询的起始时间,ISO-8601格式,格式为 YYYY-MM-DDThh:mm:ssZ。', 'type' => 'string', 'required' => true, 'example' => '2016-07-25T00:00:00Z'], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => '查询的结束时间,ISO-8601格式,格式为 YYYY-MM-DDThh:mm:ssZ。', 'type' => 'string', 'required' => true, 'example' => '2016-07-26T00:00:00Z'], + ], + [ + 'name' => 'Granularity', + 'in' => 'query', 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', + 'description' => '按天或者按月查询。可取值:'."\n" + ."\n" + .'- DAY:天'."\n" + .'- MONTH:月', + 'type' => 'string', 'required' => true, - 'example' => '23267207', + 'example' => 'DAY', + 'enum' => ['DAY', 'MONTH'], ], ], ], @@ -7044,60 +5717,66 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '6EEF262B-EA7D-41DC-89B9-20F3D1E28194', - ], - 'TagInfos' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC'], + 'AppDeviceStats' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'TagInfo' => [ - 'description' => 'Tag列表。', + 'AppDeviceStat' => [ + 'description' => '设备统计数据AppDeviceStat组成的数组。', 'type' => 'array', 'items' => [ + 'description' => '设备统计数据对象AppDeviceStat。', 'type' => 'object', 'properties' => [ - 'TagName' => [ - 'description' => 'Tag名称。', - 'type' => 'string', - 'example' => 'test_tag2', - ], + 'Time' => ['description' => '时间片。', 'type' => 'string', 'example' => '2016-07-25T00:00:00Z'], + 'Count' => ['description' => '去重设备数。', 'type' => 'integer', 'format' => 'int64', 'example' => '100'], ], ], ], ], + 'description' => '', ], ], + 'description' => '', ], ], ], - 'errorCodes' => [ - 500 => [ - [ - 'errorCode' => 'Timeout', - 'errorMessage' => 'The request processing is timeout.', - ], - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', + 'title' => '去重设备统计', + 'description' => '> 目前只支持返回天的数据,天维度最多支持查31天内数据。去重设备统计是以月为周期计数,每个月月初都会清零重新计数。', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '6', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryUniqueDeviceStat'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryUniqueDeviceStat', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"6EEF262B-EA7D-41DC-89B9-20F3D1E28194\\",\\n \\"TagInfos\\": {\\n \\"TagInfo\\": [\\n {\\n \\"TagName\\": \\"test_tag2\\"\\n }\\n ]\\n }\\n}","type":"json"}]', - 'title' => '获取标签列表', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"AppDeviceStats\\": {\\n \\"AppDeviceStat\\": [\\n {\\n \\"Time\\": \\"2016-07-25T00:00:00Z\\",\\n \\"Count\\": 100\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<QueryUniqueDeviceStatResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <AppDeviceStats>\\n <AppDeviceStat>\\n <Time>2016-07-25T00:00:00Z</Time>\\n <Count>100</Count>\\n </AppDeviceStat>\\n <AppDeviceStat>\\n <Time>2016-07-26T00:00:00Z</Time>\\n <Count>100</Count>\\n </AppDeviceStat>\\n </AppDeviceStats>\\n</QueryUniqueDeviceStatResponse>","errorExample":""}]', ], - 'BindAlias' => [ - 'summary' => '绑定设备和别名的关系。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'RemoveTag' => [ + 'summary' => '删除app下的TAG。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -7105,44 +5784,17 @@ ], 'operationType' => 'write', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], - ], - [ - 'name' => 'DeviceId', - 'in' => 'query', - 'schema' => [ - 'description' => '设备在推送的唯一标识,32位,数字和小写字母组合。', - 'type' => 'string', - 'required' => true, - 'example' => 'e2ba19de97604f55b16557673****', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], ], [ - 'name' => 'AliasName', + 'name' => 'TagName', 'in' => 'query', - 'schema' => [ - 'description' => '需要绑定的别名。'."\n" - ."\n" - .'一次最多只能绑定10个,多个alias用逗号分隔,alias最长128个字节(中文算三个字节),一个设备最多绑定128个别名,一个别名最多允许绑定128个设备。', - 'type' => 'string', - 'required' => true, - 'example' => 'test_alias', - ], + 'schema' => ['description' => '要删除的Tag名称。单次只能删除一个Tag。长度限制:不大于128字符。', 'type' => 'string', 'required' => true, 'example' => 'test_tag'], ], ], 'responses' => [ @@ -7150,55 +5802,43 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '159E4422-6624-4750-8943-DFD98D34858C', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '23000F3C-0EFE-4C89-82EE-E04F42D37B3C'], ], + 'description' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'Invalid%s.Format', - 'errorMessage' => 'The specified %s format is invalid.', - ], - [ - 'errorCode' => 'Invalid%s.BytesExceed', - 'errorMessage' => 'The specified %s exceeds the %s bytes limit.', - ], - [ - 'errorCode' => 'AccountDisabled', - 'errorMessage' => 'Your account is not enabled.', - ], - [ - 'errorCode' => 'Invalid%s.NotFound', - 'errorMessage' => 'The specified %s is not found.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', + 'title' => '删除标签', + 'description' => '标签删除需要一定的删除时间,这个时间根据绑定该标签的目标数而定,请勿在删除标签后短时间内重新创建同名标签,或批量删除标签后批量重新创建标签。建议同一个app删除和创建同一名称tag的间隔时间不小于5分钟,批量删除后创建tag建议间隔时间不小于删除数量×5分钟。', + 'changeSet' => [ + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '1', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RemoveTag'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:RemoveTag', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"159E4422-6624-4750-8943-DFD98D34858C\\"\\n}","errorExample":""},{"type":"xml","example":"<BindAliasResponse>\\n <RequestId>159E4422-6624-4750-8943-DFD98D34858C</RequestId>\\n</BindAliasResponse>","errorExample":""}]', - 'title' => '绑定别名', - 'description' => '一次最多绑定10个别名,绑定之后立即生效。', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"23000F3C-0EFE-4C89-82EE-E04F42D37B3C\\"\\n}","type":"json"}]', ], 'UnbindAlias' => [ - 'summary' => '解绑别名,解绑立即生效。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -7206,56 +5846,31 @@ ], 'operationType' => 'write', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], ], [ 'name' => 'DeviceId', 'in' => 'query', - 'schema' => [ - 'description' => '设备在推送的唯一标识,32位,数字和小写字母组合。', - 'type' => 'string', - 'required' => true, - 'example' => 'e2ba19de97604f55b16557673****', - ], + 'schema' => ['description' => '设备在推送的唯一标识,32位,数字和小写字母组合。', 'type' => 'string', 'required' => true, 'example' => 'e2ba19de97604f55b16557673****'], ], [ 'name' => 'AliasName', 'in' => 'query', - 'schema' => [ - 'description' => '需要绑定的alias。'."\n" - ."\n" - .'Alias支持128个字节(一个中文字符算3个字节),当“UnbindAll”为”false”时该字段必填,一次最多解绑10个,多个alias用逗号分隔。', - 'type' => 'string', - 'required' => false, - 'example' => 'test_alias', - ], + 'schema' => ['description' => '需要绑定的alias。'."\n" + ."\n" + .'Alias支持128个字节(一个中文字符算3个字节),当“UnbindAll”为”false”时该字段必填,一次最多解绑10个,多个alias用逗号分隔。', 'type' => 'string', 'required' => false, 'example' => 'test_alias'], ], [ 'name' => 'UnbindAll', 'in' => 'query', - 'schema' => [ - 'description' => '是否全部解绑,默认为”false”。'."\n" - ."\n" - .'如果值为”true”,则解绑一个设备当前绑定的所有别名;如果值为”false”,则解绑”AliasName”指定的别名。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['description' => '是否全部解绑,默认为”false”。'."\n" + ."\n" + .'如果值为”true”,则解绑一个设备当前绑定的所有别名;如果值为”false”,则解绑”AliasName”指定的别名。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], ], 'responses' => [ @@ -7263,142 +5878,62 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '159E4422-6624-4750-8943-DFD98D34858C', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '159E4422-6624-4750-8943-DFD98D34858C'], ], + 'description' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"159E4422-6624-4750-8943-DFD98D34858C\\"\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<UnbindAliasResponse>\\n <RequestId>82FD0A09-5BB8-40FB-8221-9A11FE92D620</RequestId>\\n</UnbindAliasResponse>","errorExample":""}]', 'title' => '解绑别名', - ], - 'QueryAliases' => [ - 'summary' => '查询指定设备绑定的别名列表。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], - ], - [ - 'name' => 'DeviceId', - 'in' => 'query', - 'schema' => [ - 'description' => '设备在推送的唯一标识,32位,数字和小写字母组合。', - 'type' => 'string', - 'required' => true, - 'example' => 'e2ba19de97604f55b165576****', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '159E4422-6624-4750-8943-DFD98D34858C', - ], - 'AliasInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'AliasInfo' => [ - 'description' => '别名列表。', - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'AliasName' => [ - 'description' => '别名名称。', - 'type' => 'string', - 'example' => 'test_alias1', - ], - ], - ], - ], - ], - ], + 'summary' => '解绑别名,解绑立即生效。', + 'changeSet' => [ + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbindAlias'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:UnbindAlias', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"159E4422-6624-4750-8943-DFD98D34858C\\",\\n \\"AliasInfos\\": {\\n \\"AliasInfo\\": [\\n {\\n \\"AliasName\\": \\"test_alias1\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<QueryAliasesResponse>\\n <RequestId>159E4422-6624-4750-8943-DFD98D34858C</RequestId>\\n <AliasInfos>\\n <AliasName>test_alias1</AliasName>\\n </AliasInfos>\\n</QueryAliasesResponse>","errorExample":""}]', - 'title' => '查询别名', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"159E4422-6624-4750-8943-DFD98D34858C\\"\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<UnbindAliasResponse>\\n <RequestId>82FD0A09-5BB8-40FB-8221-9A11FE92D620</RequestId>\\n</UnbindAliasResponse>","errorExample":""}]', ], - 'QueryDevicesByAlias' => [ - 'summary' => '通过别名查询对应的设备列表。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'UnbindPhone' => [ + 'summary' => '解绑指定设备上已绑定的手机号码。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], ], [ - 'name' => 'Alias', + 'name' => 'DeviceId', 'in' => 'query', - 'schema' => [ - 'description' => '别名,一次仅支持查询一个。', - 'type' => 'string', - 'required' => true, - 'example' => 'test_alias', - ], + 'schema' => ['description' => '设备的唯一标识,32位,数字和小写字母组合。', 'type' => 'string', 'required' => true, 'example' => 'eb5f741d83d04d34807d229999eefa52'], ], ], 'responses' => [ @@ -7406,127 +5941,43 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'DeviceIds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DeviceId' => [ - 'description' => '设备ID列表。', - 'type' => 'array', - 'items' => [ - 'description' => '设备ID', - 'type' => 'string', - 'example' => 'f6e43770afb944a1a879b4613****', - ], - ], - ], - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '6A9FD644-35A5-40E4-89B0-2021CAEDC1B4', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '0D1126F0-F8FF-513D-BAFA-F140447BDED4'], ], + 'description' => '', ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DeviceIds\\": {\\n \\"DeviceId\\": [\\n \\"f6e43770afb944a1a879b4613****\\"\\n ]\\n },\\n \\"RequestId\\": \\"6A9FD644-35A5-40E4-89B0-2021CAEDC1B4\\"\\n}","type":"json"}]', - 'title' => '通过别名查询设备列表', - ], - 'QueryDevicesByAccount' => [ - 'summary' => '通过账户名称查询对应的设备列表。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], - ], - [ - 'name' => 'Account', - 'in' => 'query', - 'schema' => [ - 'description' => '账户名称,一次仅支持查询一个。', - 'type' => 'string', - 'required' => true, - 'example' => 'test_account', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => 'A8A24108-2AD0-4F6E-81C7-A8A24C2C2AD0', - ], - 'DeviceIds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DeviceId' => [ - 'description' => '设备ID列表。', - 'type' => 'array', - 'items' => [ - 'description' => '设备ID', - 'type' => 'string', - 'example' => 'f6e43770afb944a1a879b46130ZZ****', - ], - ], - ], - ], + 'title' => '解绑手机号码', + 'changeSet' => [ + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbindPhone'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:UnbindPhone', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'AccountLimitExceed', - 'errorMessage' => 'The number of devices bound to the account exceeds 10000.', - ], - ], - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"A8A24108-2AD0-4F6E-81C7-A8A24C2C2AD0\\",\\n \\"DeviceIds\\": {\\n \\"DeviceId\\": [\\n \\"f6e43770afb944a1a879b46130ZZ****\\"\\n ]\\n }\\n}","type":"json"}]', - 'title' => '通过账户查询设备列表', + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0D1126F0-F8FF-513D-BAFA-F140447BDED4\\"\\n}","errorExample":""},{"type":"xml","example":"<UnbindPhoneResponse>\\n <RequestId>0D1126F0-F8FF-513D-BAFA-F140447BDED4</RequestId>\\n</UnbindPhoneResponse>","errorExample":""}]', ], - 'BindPhone' => [ - 'summary' => '绑定设备与手机号的关系。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'UnbindTag' => [ + 'summary' => '解绑指定的TAG和其目标之间的关系。', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -7534,1126 +5985,795 @@ ], 'operationType' => 'write', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'enumValueTitles' => [], - 'example' => '27725900', - ], + 'schema' => ['description' => 'AppKey信息。', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207'], ], [ - 'name' => 'DeviceId', + 'name' => 'ClientKey', 'in' => 'query', - 'schema' => [ - 'description' => '设备的唯一标识,32位,数字和小写字母组合。', - 'type' => 'string', - 'required' => true, - 'enumValueTitles' => [], - 'example' => 'eb5f741d83d04d34807d229999eefa52', - ], + 'schema' => ['description' => '设备ID。', 'type' => 'string', 'required' => true, 'example' => 'e2ba19de97604f55b16557673****'], ], [ - 'name' => 'PhoneNumber', + 'name' => 'KeyType', 'in' => 'query', 'schema' => [ - 'description' => '电话号码。', + 'description' => 'ClientKey的类型。可取值:'."\n" + ."\n" + .'- **DEVICE**:设备', 'type' => 'string', 'required' => true, 'enumValueTitles' => [], - 'example' => '1381111****', + 'example' => 'DEVICE', + 'enum' => ['DEVICE', 'ACCOUNT', 'ALIAS'], ], ], + [ + 'name' => 'TagName', + 'in' => 'query', + 'schema' => ['description' => '绑定的Tag,多个Tag用逗号分隔,系统总共支持1万个Tag,此接口一次最多能解绑10个Tag。长度限制:不大于128字符。', 'type' => 'string', 'required' => true, 'example' => 'test_tag1,test_tag2'], + ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '0D1126F0-F8FF-513D-BAFA-F140447BDED4', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '159E4422-6624-4750-8943-DFD98D34858C'], + ], + 'description' => '', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"159E4422-6624-4750-8943-DFD98D34858C\\"\\n}","type":"json"}]', + 'title' => '解绑标签', + 'changeSet' => [ + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => '错误码发生变更'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => '错误码发生变更'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbindTag'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:UnbindTag', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0D1126F0-F8FF-513D-BAFA-F140447BDED4\\"\\n}","errorExample":""},{"type":"xml","example":"<BindPhoneResponse>\\n <RequestId>0D1126F0-F8FF-513D-BAFA-F140447BDED4</RequestId>\\n</BindPhoneResponse>","errorExample":""}]', - 'title' => '绑定手机号码', ], - 'UnbindPhone' => [ - 'summary' => '解绑指定设备上已绑定的手机号码。', - 'methods' => [ - 'post', - 'get', + ], + 'endpoints' => [ + ['regionId' => 'ap-northeast-1', 'regionName' => '日本(东京)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-southeast-1', 'regionName' => '新加坡', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-southeast-2', 'regionName' => '澳大利亚(悉尼)已关停', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-southeast-3', 'regionName' => '马来西亚(吉隆坡)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-southeast-5', 'regionName' => '印度尼西亚(雅加达)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-beijing', 'regionName' => '华北2(北京)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-chengdu', 'regionName' => '西南1(成都)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-hangzhou', 'regionName' => '华东1(杭州)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => 'cloudpush.vpc-proxy.aliyuncs.com'], + ['regionId' => 'cn-hongkong', 'regionName' => '中国香港', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-huhehaote', 'regionName' => '华北5(呼和浩特)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-qingdao', 'regionName' => '华北1(青岛)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => 'cloudpush.vpc-proxy.aliyuncs.com'], + ['regionId' => 'cn-shanghai', 'regionName' => '华东2(上海)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => 'cloudpush.vpc-proxy.aliyuncs.com'], + ['regionId' => 'cn-shenzhen', 'regionName' => '华南1(深圳)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => 'cloudpush.vpc-proxy.aliyuncs.com'], + ['regionId' => 'cn-zhangjiakou', 'regionName' => '华北3(张家口)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => 'cloudpush.vpc-proxy.aliyuncs.com'], + ['regionId' => 'us-west-1', 'regionName' => '美国(硅谷)', 'areaId' => 'europeAmerica', 'areaName' => '欧洲与美洲', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'us-east-1', 'regionName' => '美国(弗吉尼亚)', 'areaId' => 'europeAmerica', 'areaName' => '欧洲与美洲', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'eu-west-1', 'regionName' => '英国(伦敦)', 'areaId' => 'europeAmerica', 'areaName' => '欧洲与美洲', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'eu-central-1', 'regionName' => '德国(法兰克福)', 'areaId' => 'europeAmerica', 'areaName' => '欧洲与美洲', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'me-east-1', 'regionName' => '阿联酋(迪拜)', 'areaId' => 'middleEast', 'areaName' => '中东', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-south-1', 'regionName' => '印度(孟买)已关停', 'areaId' => 'middleEast', 'areaName' => '中东', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-shenzhen-finance-1', 'regionName' => '华南1 金融云', 'areaId' => 'industryCloud', 'areaName' => '行业云', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-shanghai-finance-1', 'regionName' => '华东2 金融云', 'areaId' => 'industryCloud', 'areaName' => '行业云', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-north-2-gov-1', 'regionName' => '北京政务云', 'areaId' => 'industryCloud', 'areaName' => '行业云', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-hangzhou-finance', 'regionName' => '华东1 金融云', 'areaId' => 'industryCloud', 'areaName' => '行业云', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-beijing-finance-1', 'regionName' => '华北2 金融云(邀测)', 'areaId' => 'industryCloud', 'areaName' => '行业云', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ], + 'errorCodes' => [ + ['code' => 'AccountDisabled', 'message' => 'Your account is not enabled.', 'http_code' => 400, 'description' => '功能未启用。'], + ['code' => 'AccountLimitExceed', 'message' => 'The number of devices bound to the account exceeds 10000.', 'http_code' => 400, 'description' => '设备已绑定10000个账号'], + ['code' => 'AliasLimitExceed', 'message' => 'The number of aliases bound to the deviceId exceeds 128.', 'http_code' => 400, 'description' => '别名已绑定128个设备ID'], + ['code' => 'AppNotConfigAndroid', 'message' => 'The PackageName of specified app is not configured.', 'http_code' => null, 'description' => '指定app的PackageName没有配置,请您登录控制台配置对应的packageName。'], + ['code' => 'AppTypeNotIos', 'message' => 'The AppType of specified AppKey is not iOS.', 'http_code' => 400, 'description' => 'AppKey指定的app类型不是iOS。'], + ['code' => 'CertificateExpired', 'message' => 'The certificate has expired.', 'http_code' => 400, 'description' => '证书已过期。'], + ['code' => 'CertificateRevoked', 'message' => 'The certificate is revoked.', 'http_code' => 400, 'description' => '证书已取消。'], + ['code' => 'CertModeNotMatch', 'message' => 'The Certificate does not match the specified environment.', 'http_code' => 400, 'description' => '证书与指定的环境不匹配。'], + ['code' => 'ChannelConfigNotConfigured', 'message' => 'The config of %s channel is not configured.', 'http_code' => 400, 'description' => '指定厂商渠道信息未配置'], + ['code' => 'ChannelConfigNotEmpty', 'message' => 'The configuration of %s channel is not empty.', 'http_code' => 400, 'description' => '通道%s的配置非空。'], + ['code' => 'ContinuousPushNotSupportDelay', 'message' => 'Continuous push does not support delay.', 'http_code' => 400, 'description' => '持续推送不支持延迟。'], + ['code' => 'DeviceLimitExceed', 'message' => 'The number of devices bound to the alias exceeds 128.', 'http_code' => 400, 'description' => '别名已绑定128个设备'], + ['code' => 'FileNotExist', 'message' => 'The specified file does not exist.', 'http_code' => 400, 'description' => '指定的文件不存在。'], + ['code' => 'IncorrectPassword', 'message' => 'The password is incorrect.', 'http_code' => 400, 'description' => '密码错误。'], + ['code' => 'InitialMessageNotExists', 'message' => 'The expected initialization message does not exist.', 'http_code' => 400, 'description' => '期望的初始化消息不存在。'], + ['code' => 'InternalError', 'message' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', 'http_code' => 500, 'description' => '服务端错误,建议重试,仍然失败则提工单'], + ['code' => 'Invalid%s.BytesExceed', 'message' => 'The specified %s exceeds the %s bytes limit.', 'http_code' => 400, 'description' => '参数的字节数超限。'], + ['code' => 'Invalid%s.Duplicated', 'message' => 'The specified %s=%s is duplicated.', 'http_code' => 400, 'description' => '指定的参数%s=%s是重复的。'], + ['code' => 'Invalid%s.Empty', 'message' => 'The specified %s cannot be empty.', 'http_code' => 400, 'description' => '参数不能为空。'], + ['code' => 'Invalid%s.Format', 'message' => 'The specified %s format is invalid.', 'http_code' => 400, 'description' => '参数格式错误。'], + ['code' => 'Invalid%s.LengthExceed', 'message' => 'The specified %s length cannot be greater than %s.', 'http_code' => 400, 'description' => '参数长度超限。'], + ['code' => 'Invalid%s.NotFound', 'message' => 'The specified %s is not found.', 'http_code' => null, 'description' => '参数错误,未找到。'], + ['code' => 'Invalid%s.NotInRange', 'message' => 'The specified %s=%s is not in range.', 'http_code' => 400, 'description' => '指定的参数不在范围内:%s=%s'], + ['code' => 'Invalid.Parameter', 'message' => 'The specified parameter is invalid: %s.', 'http_code' => 400, 'description' => '参数%s无效。'], + ['code' => 'InvalidAppKey.NotFound', 'message' => 'The specified AppKey is not found.', 'http_code' => 400, 'description' => '输入的AppKey未找到。'], + ['code' => 'InvalidCertificateFormat', 'message' => 'The format of the specified certificate is incorrect.', 'http_code' => 400, 'description' => '证书格式错误。'], + ['code' => 'InvalidEndTime.TooEarly', 'message' => 'The StartTime must be earlier than EndTime.', 'http_code' => 400, 'description' => '开始时间不能晚于结束时间。'], + ['code' => 'InvalidExpireTime.TooEarly', 'message' => 'The specified ExpireTime cannot be before the current time plus three seconds.', 'http_code' => 400, 'description' => '过期时间不能早于当前时间加3秒。'], + ['code' => 'InvalidMessageStatus', 'message' => 'The message status is invalid for continuous pushing.', 'http_code' => 400, 'description' => '持续推送不支持消息状态。'], + ['code' => 'InvalidParameterPushPeriodTooShort', 'message' => 'The period between specified ExpireTime and PushTime cannot be less than three seconds.', 'http_code' => 400, 'description' => '过期时间距推送请求时间不能小于3秒。'], + ['code' => 'InvalidPeriod.ExceedDays', 'message' => 'The period between specified EndTime and StartTime exceeds %s days.', 'http_code' => 400, 'description' => '开始时间和结束时间超过%s天。'], + ['code' => 'InvalidPeriod.ExceedMonth', 'message' => 'The period between specified EndTime and StartTime exceeds 31 days.', 'http_code' => 400, 'description' => '开始时间和结束时间超过31天。'], + ['code' => 'InvalidPeriod.ExceedYear', 'message' => 'The period between specified EndTime and StartTime exceeds 366 days.', 'http_code' => 400, 'description' => '开始时间和结束时间超过366天。'], + ['code' => 'InvalidStartTime.TooLate', 'message' => 'The StartTime cannot be later than the current time.', 'http_code' => 400, 'description' => '开始时间不能迟于当前时间。'], + ['code' => 'NotApnsCertificate', 'message' => 'The Certificate is not an APNs certificate.', 'http_code' => 400, 'description' => '不是APNs证书。'], + ['code' => 'PermissionDenied', 'message' => 'The specified AppKey is not authorized.', 'http_code' => null, 'description' => '您没有访问该app的权限,请您检查Appkey参数是否属于该账户。'], + ['code' => 'SendSpeedNotSupported', 'message' => 'SendSpeed is not supported for specified Target.', 'http_code' => 400, 'description' => '制定目标不支持SendSpeed参数。'], + ['code' => 'SlrDeleteCheckFailed', 'message' => 'Check SLR for delete failed.', 'http_code' => 400, 'description' => '删除检查失败。'], + ['code' => 'SmsProfileConfigFailed', 'message' => 'Failed to configure SMS profile.', 'http_code' => 400, 'description' => 'SMS配置失败。'], + ['code' => 'SmsProfileGetFailed', 'message' => 'Failed to get SMS profile.', 'http_code' => 400, 'description' => 'SMS配置获取失败。'], + ['code' => 'SmsRoleAuthorizeFailed', 'message' => 'Failed to authorize SMS role.', 'http_code' => 400, 'description' => 'SMS角色授权失败。'], + ['code' => 'SmsRoleUnauthorized', 'message' => 'The SMS role is unauthorized.', 'http_code' => 400, 'description' => 'SMS角色没有授权。'], + ['code' => 'TagsNumberBeyondLimit', 'message' => 'The number of tags bound to this app exceeds the limit.', 'http_code' => 400, 'description' => '当前app绑定的tag数量超过限制。'], + ['code' => 'TargetNotSupported', 'message' => 'Target is not supported for file push.', 'http_code' => 400, 'description' => '文件推送不支持的Target。'], + ['code' => 'TargetNotSupported', 'message' => 'Target is not supported for batch push.', 'http_code' => 400, 'description' => '批量推送不支持的Target。'], + ['code' => 'TargetNotSupported', 'message' => 'Target is not supported for iOS live activity.', 'http_code' => 400, 'description' => 'iOS灵动岛推送不支持的target'], + ['code' => 'Timeout', 'message' => 'The request processing is timeout.', 'http_code' => 500, 'description' => '请求处理超时。'], + ['code' => 'TraceInfoExpired', 'message' => 'The trace information of specified MessageId has expired.', 'http_code' => 400, 'description' => '指定的MessageId对应跟踪信息已过期。'], + ], + 'changeSet' => [ + [ + 'apis' => [ + ['description' => '错误码发生变更', 'api' => 'MassPush'], + ['description' => '请求参数发生变更', 'api' => 'MassPush'], + ['description' => '错误码发生变更', 'api' => 'Push'], + ['description' => '请求参数发生变更', 'api' => 'Push'], + ], + 'createdAt' => '2025-11-25T08:17:24.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => '请求参数发生变更', 'api' => 'MassPush'], + ['description' => '请求参数发生变更', 'api' => 'Push'], ], - 'schemes' => [ - 'http', - 'https', + 'createdAt' => '2024-10-10T01:26:55.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => '请求参数发生变更', 'api' => 'MassPush'], + ['description' => '请求参数发生变更', 'api' => 'Push'], ], - 'security' => [ - [ - 'AK' => [], - ], + 'createdAt' => '2024-08-07T05:34:23.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => '请求参数发生变更', 'api' => 'QueryDeviceStat'], ], - 'operationType' => 'write', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', + 'createdAt' => '2024-07-10T08:13:05.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => '请求参数发生变更', 'api' => 'MassPush'], + ['description' => '请求参数发生变更', 'api' => 'Push'], ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], - ], - [ - 'name' => 'DeviceId', - 'in' => 'query', - 'schema' => [ - 'description' => '设备的唯一标识,32位,数字和小写字母组合。', - 'type' => 'string', - 'required' => true, - 'example' => 'eb5f741d83d04d34807d229999eefa52', - ], - ], + 'createdAt' => '2024-06-25T04:40:50.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => '请求参数发生变更', 'api' => 'QueryPushRecords'], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '0D1126F0-F8FF-513D-BAFA-F140447BDED4', - ], - ], - ], - ], + 'createdAt' => '2024-05-13T08:11:44.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => '错误码发生变更', 'api' => 'BindPhone'], + ['description' => '错误码发生变更', 'api' => 'QueryAliases'], + ['description' => '错误码发生变更', 'api' => 'QueryDevicesByAlias'], + ['description' => '错误码发生变更', 'api' => 'QueryDeviceStat'], + ['description' => '错误码发生变更', 'api' => 'QueryPushRecords'], + ['description' => '错误码发生变更', 'api' => 'QueryPushStatByApp'], + ], + 'createdAt' => '2024-01-25T04:05:48.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => '错误码发生变更', 'api' => 'CheckDevices'], + ['description' => '错误码发生变更', 'api' => 'ListTags'], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0D1126F0-F8FF-513D-BAFA-F140447BDED4\\"\\n}","errorExample":""},{"type":"xml","example":"<UnbindPhoneResponse>\\n <RequestId>0D1126F0-F8FF-513D-BAFA-F140447BDED4</RequestId>\\n</UnbindPhoneResponse>","errorExample":""}]', - 'title' => '解绑手机号码', + 'createdAt' => '2024-01-24T15:21:59.000Z', + 'description' => '', ], - 'PushMessageToiOS' => [ - 'summary' => '推送消息到iOS设备端,消息通过阿里云推送自有通道下发。设备上App接收到消息后,需要自行处理后续动作,比如实现业务行为,或者构造本地通知弹出等。', - 'methods' => [ - 'post', - 'get', + [ + 'apis' => [ + ['description' => '错误码发生变更', 'api' => 'RemoveTag'], + ['description' => '错误码发生变更', 'api' => 'UnbindAlias'], + ['description' => '错误码发生变更', 'api' => 'UnbindPhone'], + ['description' => '错误码发生变更', 'api' => 'UnbindTag'], + ], + 'createdAt' => '2024-01-24T14:41:33.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => '错误码发生变更', 'api' => 'CancelPush'], + ['description' => '错误码发生变更', 'api' => 'CompleteContinuouslyPush'], + ['description' => '错误码发生变更', 'api' => 'ContinuouslyPush'], + ['description' => '错误码发生变更', 'api' => 'MassPush'], + ['description' => '错误码发生变更', 'api' => 'Push'], + ['description' => '错误码发生变更', 'api' => 'PushMessageToAndroid'], + ['description' => '错误码发生变更', 'api' => 'PushNoticeToiOS'], + ], + 'createdAt' => '2024-01-22T14:28:03.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => '请求参数发生变更', 'api' => 'MassPush'], + ['description' => '请求参数发生变更', 'api' => 'Push'], ], - 'schemes' => [ - 'http', - 'https', + 'createdAt' => '2023-12-18T11:18:44.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => '请求参数发生变更', 'api' => 'MassPush'], + ['description' => '请求参数发生变更', 'api' => 'Push'], + ['description' => '请求参数发生变更、错误码发生变更', 'api' => 'PushMessageToAndroid'], + ['description' => '请求参数发生变更、错误码发生变更', 'api' => 'PushMessageToiOS'], + ['description' => '请求参数发生变更、错误码发生变更', 'api' => 'PushNoticeToAndroid'], + ], + 'createdAt' => '2023-10-12T07:15:03.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => '响应参数发生变更、错误码发生变更', 'api' => 'QueryDeviceInfo'], ], - 'security' => [ - [ - 'AK' => [], - ], + 'createdAt' => '2023-09-26T08:23:28.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => '请求参数发生变更', 'api' => 'MassPush'], + ['description' => '请求参数发生变更', 'api' => 'Push'], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'paid', + 'createdAt' => '2023-03-24T08:22:06.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => '请求参数发生变更', 'api' => 'MassPush'], + ['description' => '请求参数发生变更', 'api' => 'Push'], ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '24780725', - ], - ], - [ - 'name' => 'Target', - 'in' => 'query', - 'schema' => [ - 'description' => '推送目标。可取值:'."\n" - ."\n" - .'- **DEVICE**:根据设备推送'."\n" - .'- **ACCOUNT**:根据账号推送'."\n" - .'- **ALIAS**:根据别名推送'."\n" - .'- **TAG**:根据标签推送'."\n" - .'- **ALL**:推送给全部设备', - 'type' => 'string', - 'required' => true, - 'example' => 'ALL', - 'enum' => [ - 'ALL', - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - 'TAG', - ], - ], - ], - [ - 'name' => 'TargetValue', - 'in' => 'query', - 'schema' => [ - 'description' => '根据Target来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" - ."\n" - .'- Target=DEVICE,值如`deviceid111,deviceid1111`(最多支持1000个)。'."\n" - .'- Target=ACCOUNT,值如`account111,account222`(最多支持1000个)。'."\n" - .'- Target=ALIAS,值如`alias111,alias222`(最多支持1000个)。'."\n" - .'- Target=TAG,支持单Tag和多Tag,格式请参见[标签格式](~~434847~~)。'."\n" - .'- Target=ALL,值为**all**。', - 'type' => 'string', - 'required' => true, - 'example' => 'all', - ], - ], - [ - 'name' => 'Title', - 'in' => 'query', - 'schema' => [ - 'description' => '发送的消息的标题。', - 'type' => 'string', - 'required' => true, - 'example' => 'my title', - ], - ], - [ - 'name' => 'Body', - 'in' => 'query', - 'schema' => [ - 'description' => '发送的消息内容。', - 'type' => 'string', - 'required' => true, - 'example' => 'my body', - ], - ], - [ - 'name' => 'StoreOffline', - 'in' => 'query', - 'schema' => [ - 'description' => '消息是否离线保存。StoreOffline默认设置为false。'."\n" - ."\n" - .'若保存,在推送时候用户不在线,在过期时间(ExpireTime)内用户上线时会被再次发送。ExpireTime默认为72小时。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - ], - [ - 'name' => 'JobKey', - 'in' => 'query', - 'schema' => [ - 'description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](~~434651~~)。', - 'type' => 'string', - 'required' => false, - 'example' => '123', - ], - ], + 'createdAt' => '2022-06-07T11:37:48.000Z', + 'description' => 'fix: 修复AndroidNotificationNotifyId取值范围问题', + ], + [ + 'apis' => [ + ['description' => '错误码发生变更', 'api' => 'CheckDevice'], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'MessageId' => [ - 'description' => '标志一次推送的消息ID。', - 'type' => 'string', - 'example' => '501029', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - ], - ], - ], + 'createdAt' => '2022-03-31T09:28:25.000Z', + 'description' => '修改CheckDevice为废弃,QueryDeviceCount为私有。', + ], + [ + 'apis' => [ + ['description' => '请求参数发生变更', 'api' => 'MassPush'], + ['description' => '请求参数发生变更', 'api' => 'Push'], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', - 'title' => '推送消息给iOS设备', - 'description' => '**这个接口即将废弃,请使用具备更多推送能力的[高级推送接口](~~2249916~~),在该接口中指定推送平台`DeviceType`为`iOS`,推送类型`PushType`为`MESSAGE`,即可达到同样效果。**'."\n" - ."\n" - .'**请确保在使用该接口前,以充分了解EMAS移动推送产品的[收费方式和价格](~~434638~~)。**'."\n" - ."\n" - .'该接口默认只把消息发送给在线设备,若设备离线,则需要设置`StoreOffline`参数,推送系统会保存该消息,等到设备上线后再自动下发信息。', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'createdAt' => '2022-03-30T09:07:12.000Z', + 'description' => '在Push、MassPushAPI中,增加对Trim、AndroidVivoPushMode、iOSInterruptionLevel、iOSRelevanceScore参数的支持。', ], - 'PushNoticeToiOS' => [ - 'summary' => '推送通知到 iOS 设备端,通知通过苹果APNs通道下发,并直接在设备通知栏弹出。', - 'methods' => [ - 'post', - 'get', + [ + 'apis' => [ + ['description' => '错误码发生变更', 'api' => 'QueryDevicesByAccount'], ], - 'schemes' => [ - 'http', - 'https', + 'createdAt' => '2022-01-11T10:18:37.000Z', + 'description' => '完善错误码', + ], + [ + 'apis' => [ + ['description' => '错误码发生变更', 'api' => 'BindAlias'], + ['description' => '错误码发生变更', 'api' => 'BindTag'], + ['description' => '错误码发生变更', 'api' => 'QueryPushRecords'], ], - 'security' => [ - [ - 'AK' => [], + 'createdAt' => '2021-12-28T04:36:06.000Z', + 'description' => '错误码文档更新', + ], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '6', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryDeviceStat'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbindTag'], + ['threshold' => '6', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryPushStatByApp'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CheckCertificate'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CheckDevice'], + ['threshold' => '1000000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'Push'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryDevicesByAlias'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryTags'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbindAlias'], + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'MassPush'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryDeviceInfo'], + ['threshold' => '10000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CompleteContinuouslyPush'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryPushStatByMsg'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryAliases'], + ['threshold' => '6', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryUniqueDeviceStat'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListSummaryApps'], + ['threshold' => '60000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'PushMessageToAndroid'], + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'MassPushV2'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryDevicesByAccount'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BindAlias'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbindPhone'], + ['threshold' => '60000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'PushNoticeToiOS'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CheckDevices'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CancelPush'], + ['threshold' => '1', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RemoveTag'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListTags'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BindTag'], + ['threshold' => '60000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'PushMessageToiOS'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BindPhone'], + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ContinuouslyPush'], + ['threshold' => '60000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'PushNoticeToAndroid'], + ['threshold' => '1000000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'PushV2'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryPushRecords'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ram' => [ + 'productCode' => 'Push', + 'productName' => '移动研发平台', + 'ramCodes' => ['mpush', 'mhub'], + 'ramLevel' => '操作级', + 'ramConditions' => [], + 'ramActions' => [ + [ + 'apiName' => 'RemoveTag', + 'description' => '删除标签', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:RemoveTag', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ + [ + 'apiName' => 'ContinuouslyPush', + 'description' => '持续推送', 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'paid', - ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '24780725', - ], - ], - [ - 'name' => 'Target', - 'in' => 'query', - 'schema' => [ - 'description' => '推送目标。可取值:'."\n" - ."\n" - .'- **DEVICE**:根据设备推送'."\n" - .'- **ACCOUNT**:根据账号推送'."\n" - .'- **ALIAS**:根据别名推送'."\n" - .'- **TAG**:根据标签推送'."\n" - .'- **ALL**:推送给全部设备', - 'type' => 'string', - 'required' => true, - 'example' => 'ALL', - 'enum' => [ - 'ALL', - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - 'TAG', - ], - ], - ], - [ - 'name' => 'TargetValue', - 'in' => 'query', - 'schema' => [ - 'description' => '根据Target来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" - ."\n" - .'- Target=DEVICE,值如`deviceid111,deviceid1111`(最多支持1000个)。'."\n" - .'- Target=ACCOUNT,值如`account111,account222`(最多支持1000个)。'."\n" - .'- Target=ALIAS,值如`alias111,alias222`(最多支持1000个)。'."\n" - .'- Target=TAG,支持单Tag和多Tag,格式请参见[标签格式](~~434847~~)。'."\n" - .'- Target=ALL,值为**ALL**。', - 'type' => 'string', - 'required' => true, - 'example' => 'ALL', - ], - ], - [ - 'name' => 'ApnsEnv', - 'in' => 'query', - 'schema' => [ - 'description' => 'iOS的通知是通过APNS中心来发送的,需要填写对应的环境信息。'."\n" - .'- DEV:表示开发环境'."\n" - .'- PRODUCT:表示生产环境', - 'type' => 'string', - 'required' => true, - 'example' => 'DEV', - 'enum' => [ - 'DEV', - 'PRODUCT', - ], - ], - ], - [ - 'name' => 'Title', - 'in' => 'query', - 'schema' => [ - 'description' => '推送的通知的标题。'."\n" - .'- iOS 10+通知显示标题。'."\n" - .'- iOS 8.2 <= iOS系统 < iOS 10:替换通知应用名称。', - 'type' => 'string', - 'required' => false, - 'example' => 'title', - ], - ], - [ - 'name' => 'Body', - 'in' => 'query', - 'schema' => [ - 'description' => '推送的通知内容。', - 'type' => 'string', - 'required' => true, - 'example' => 'Hello World', - ], - ], - [ - 'name' => 'JobKey', - 'in' => 'query', - 'schema' => [ - 'description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](~~434651~~)。', - 'type' => 'string', - 'required' => false, - 'example' => '123', - ], - ], - [ - 'name' => 'ExtParameters', - 'in' => 'query', - 'schema' => [ - 'description' => '自定义的KV结构,开发者扩展用。'."\n" - ."\n" - .'> 针对iOS设备,该参数要以JSON map的格式传入,否则会解析出错。', - 'type' => 'string', - 'required' => false, - 'example' => '{"k1":"ios","k2":"v2"}', + 'ramAction' => [ + 'action' => 'mpush:ContinuouslyPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'MessageId' => [ - 'description' => '标志一次推送的消息ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '501029', - ], - ], + [ + 'apiName' => 'QueryPushStatByMsg', + 'description' => '任务维度推送统计', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryPushStatByMsg', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"RequestId\\": \\"501029\\"\\n}","type":"json"}]', - 'title' => '推送通知给iOS设备', - 'description' => '**这个接口即将废弃,请使用具备更多推送能力的[高级推送接口](~~2249916~~),在该接口中指定推送平台`DeviceType`为`iOS`,推送类型`PushType`为`NOTICE`,即可达到同样效果。**'."\n" - ."\n" - .'**请确保在使用该接口前,以充分了解EMAS移动推送产品的[收费方式和价格](~~434638~~)。**', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'PushNoticeToAndroid' => [ - 'summary' => '推送通知到Android设备端,并直接在设备通知栏弹出。通知根据不同情况,可能会走阿里云自有通道,或者手机厂商通道下发。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'CheckDevices', + 'description' => '批量检查设备有效性', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:CheckDevices', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ + [ + 'apiName' => 'PushMessageToiOS', + 'description' => '推送消息给iOS设备', 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'paid', - ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', + 'ramAction' => [ + 'action' => 'mpush:PushMessageToiOS', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - [ - 'name' => 'Target', - 'in' => 'query', - 'schema' => [ - 'description' => '推送目标。可取值:'."\n" - ."\n" - .'- **DEVICE**:根据设备推送'."\n" - .'- **ACCOUNT**:根据账号推送'."\n" - .'- **ALIAS**:根据别名推送'."\n" - .'- **TAG**:根据标签推送'."\n" - .'- **ALL**:推送给全部设备', - 'type' => 'string', - 'required' => true, - 'example' => 'ALL', - 'enum' => [ - 'ALL', - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - 'TAG', - ], + ], + [ + 'apiName' => 'PushNoticeToiOS', + 'description' => '推送通知给iOS设备', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:PushNoticeToiOS', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - [ - 'name' => 'TargetValue', - 'in' => 'query', - 'schema' => [ - 'description' => '根据Target来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" - ."\n" - .'- Target=DEVICE,值如`deviceid111,deviceid1111`(最多支持1000个)。'."\n" - .'- Target=ACCOUNT,值如`account111,account222`(最多支持1000个)。'."\n" - .'- Target=ALIAS,值如`alias111,alias222`(最多支持1000个)。'."\n" - .'- Target=TAG,支持单Tag和多Tag,格式请参见[标签格式](~~434847~~)。'."\n" - .'- Target=ALL,值为**ALL**。', - 'type' => 'string', - 'required' => true, - 'example' => 'ALL', + ], + [ + 'apiName' => 'BindAlias', + 'description' => '绑定别名', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:BindAlias', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - [ - 'name' => 'Title', - 'in' => 'query', - 'schema' => [ - 'description' => '发送的通知标题。', - 'type' => 'string', - 'required' => true, - 'example' => 'title', + ], + [ + 'apiName' => 'QueryDeviceInfo', + 'description' => '查询设备详情', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryDeviceInfo', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - [ - 'name' => 'Body', - 'in' => 'query', - 'schema' => [ - 'description' => '发送的通知内容。', - 'type' => 'string', - 'required' => true, - 'example' => 'body', + ], + [ + 'apiName' => 'QueryDeviceStat', + 'description' => '设备新增与留存', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryDeviceStat', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - [ - 'name' => 'StoreOffline', - 'in' => 'query', - 'schema' => [ - 'description' => '通知是否离线保存。StoreOffline默认设置为false。'."\n" - ."\n" - .'若保存,在推送时候用户不在线,在过期时间(ExpireTime)内用户上线时会被再次发送。ExpireTime默认为72小时。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', + ], + [ + 'apiName' => 'PushV2', + 'description' => '高级推送', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:PushV2', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - [ - 'name' => 'JobKey', - 'in' => 'query', - 'schema' => [ - 'description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](~~434651~~)。', - 'type' => 'string', - 'required' => false, - 'example' => '123', + ], + [ + 'apiName' => 'QueryPushStatByApp', + 'description' => 'App维度推送统计', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryPushStatByApp', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - [ - 'name' => 'ExtParameters', - 'in' => 'query', - 'schema' => [ - 'description' => '自定义的KV结构,供开发者扩展使用,针对Android设备。该参数要以JSON map的格式传入。', - 'type' => 'string', - 'required' => false, - 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}', + ], + [ + 'apiName' => 'BindPhone', + 'description' => '绑定手机号码', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:BindPhone', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'MessageId' => [ - 'description' => '标志一次推送的消息ID。', - 'type' => 'string', - 'example' => '501029', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - ], + [ + 'apiName' => 'QueryTags', + 'description' => '查询标签列表', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryTags', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', - 'title' => '推送通知给Android设备', - 'description' => '**这个接口即将废弃,请使用具备更多推送能力的[高级推送接口](~~2249916~~),在该接口中指定推送平台`DeviceType`为`ANDROID`,推送类型`PushType`为`NOTICE`,即可达到同样效果。**'."\n" - ."\n" - .'**请确保在使用该接口前,以充分了解EMAS移动推送产品的[收费方式和价格](~~434638~~)。**', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'PushMessageToAndroid' => [ - 'summary' => '推送消息到Android设备端,消息通过阿里云推送自有通道下发。设备上App接收到消息后,需要自行处理后续动作,比如实现业务行为,或者构造本地通知弹出等。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'BindTag', + 'description' => '绑定标签', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:BindTag', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ + [ + 'apiName' => 'Push', + 'description' => '高级推送', 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'paid', - ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', + 'ramAction' => [ + 'action' => 'mpush:Push', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - [ - 'name' => 'Target', - 'in' => 'query', - 'schema' => [ - 'description' => '推送目标。可取值:'."\n" - ."\n" - .'- **DEVICE**:根据设备推送'."\n" - .'- **ACCOUNT**:根据账号推送'."\n" - .'- **ALIAS**:根据别名推送'."\n" - .'- **TAG**:根据标签推送'."\n" - .'- **ALL**:推送给全部设备', - 'type' => 'string', - 'required' => true, - 'example' => 'ALL', - 'enum' => [ - 'ALL', - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - 'TAG', - ], - ], - ], - [ - 'name' => 'TargetValue', - 'in' => 'query', - 'schema' => [ - 'description' => '根据Target来设定,多个值使用逗号分隔,超过限制需要分多次推送。'."\n" - ."\n" - .'- Target=DEVICE,值如`deviceid111,deviceid1111`(最多支持1000个)。'."\n" - .'- Target=ACCOUNT,值如`account111,account222`(最多支持1000个)。'."\n" - .'- Target=ALIAS,值如`alias111,alias222`(最多支持1000个)。'."\n" - .'- Target=TAG,支持单Tag和多Tag,格式请参见[标签格式](~~434847~~)。'."\n" - .'- Target=ALL,值为**all**。', - 'type' => 'string', - 'required' => true, - 'example' => 'all', + ], + [ + 'apiName' => 'UnbindAlias', + 'description' => '解绑别名', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:UnbindAlias', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - [ - 'name' => 'Title', - 'in' => 'query', - 'schema' => [ - 'description' => '发送的消息的标题。', - 'type' => 'string', - 'required' => true, - 'example' => 'my title', + ], + [ + 'apiName' => 'ListTags', + 'description' => '获取标签列表', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'mpush:ListTags', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - [ - 'name' => 'Body', - 'in' => 'query', - 'schema' => [ - 'description' => '发送的消息内容。', - 'type' => 'string', - 'required' => true, - 'example' => 'my body', + ], + [ + 'apiName' => 'CheckCertificate', + 'description' => '查询证书状态', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:CheckCertificate', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - [ - 'name' => 'StoreOffline', - 'in' => 'query', - 'schema' => [ - 'description' => '消息是否离线保存。StoreOffline默认设置为false。'."\n" - ."\n" - .'若保存,在推送时候用户不在线,在过期时间(ExpireTime)内用户上线时会被再次发送。ExpireTime默认为72小时。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', + ], + [ + 'apiName' => 'ListSummaryApps', + 'description' => '查询用户已创建的app列表', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'mpush:ListSummaryApps', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - [ - 'name' => 'JobKey', - 'in' => 'query', - 'schema' => [ - 'description' => '推送任务自定义标识,当JobKey不为空时,回执日志中会附带该字段。查看回执日志参见[回执日志](~~434651~~)。', - 'type' => 'string', - 'required' => false, - 'example' => '123', + ], + [ + 'apiName' => 'QueryUniqueDeviceStat', + 'description' => '去重设备统计', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryUniqueDeviceStat', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'MessageId' => [ - 'description' => '标志一次推送的消息ID。', - 'type' => 'string', - 'example' => '501029', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - ], + [ + 'apiName' => 'PushNoticeToAndroid', + 'description' => '推送通知给Android设备', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:PushNoticeToAndroid', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'Invalid%s.Format', - 'errorMessage' => 'The specified %s format is invalid.', - ], - [ - 'errorCode' => 'Invalid%s.Empty', - 'errorMessage' => 'The specified %s cannot be empty.', - ], - [ - 'errorCode' => 'Invalid.Parameter', - 'errorMessage' => 'The specified parameter is invalid: %s.', + [ + 'apiName' => 'CompleteContinuouslyPush', + 'description' => '完成持续推送任务', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:CompleteContinuouslyPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - 500 => [ - [ - 'errorCode' => 'Timeout', - 'errorMessage' => 'The request processing is timeout.', - ], - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to some unknown error. Please try again. If the error still exists, submit a ticket.', + ], + [ + 'apiName' => 'MassPushV2', + 'description' => '批量推送', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:MassPushV2', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', - 'title' => '推送消息给Android设备', - 'description' => '**这个接口即将废弃,请使用具备更多推送能力的[高级推送接口](~~2249916~~),在该接口中指定推送平台`DeviceType`为`ANDROID`,推送类型`PushType`为`MESSAGE`,即可达到同样效果。**'."\n" - ."\n" - .'**请确保在使用该接口前,以充分了解EMAS移动推送产品的[收费方式和价格](~~434638~~)。**'."\n" - ."\n" - .'该接口默认只把消息发送给在线设备,若设备离线,则需要设置`StoreOffline`参数,推送系统会保存该消息,等到设备上线后再自动下发信息。', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'CheckDevice' => [ - 'summary' => '验证指定设备的有效性。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'CheckDevice', + 'description' => '验证设备有效性', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:CheckDevice', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], - 'operationType' => 'read', - 'deprecated' => true, - 'systemTags' => [ + [ + 'apiName' => 'QueryAliases', + 'description' => '查询别名', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23419851', + 'ramAction' => [ + 'action' => 'mpush:QueryAliases', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], - [ - 'name' => 'DeviceId', - 'in' => 'query', - 'schema' => [ - 'description' => '设备在推送的唯一标识,32位,数字和小写字母组合。', - 'type' => 'string', - 'required' => true, - 'example' => 'ae296f3b04a58a05b30c95f****', + ], + [ + 'apiName' => 'MassPush', + 'description' => '批量推送', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:MassPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'Available' => [ - 'description' => '是否可用。', - 'type' => 'boolean', - 'example' => 'true', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - ], + [ + 'apiName' => 'QueryPushRecords', + 'description' => '查询推送记录', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'mpush:QueryPushRecords', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], - 'staticInfo' => [ - 'substitutions' => [ - 'Push::2016-08-01::CheckDevices', + [ + 'apiName' => 'UnbindPhone', + 'description' => '解绑手机号码', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:UnbindPhone', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Available\\": true,\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","errorExample":""},{"type":"xml","example":"<?xml version=\'1.0\' encoding=\'UTF-8\'?>\\n<CheckDevicesResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <DeviceCheckInfos>\\n <DeviceCheckInfo>\\n <DeviceId>ae296f3b04a58a05b30c95f1****</DeviceId>\\n <Available>true</Available>\\n </DeviceCheckInfo>\\n <DeviceCheckInfo>\\n <DeviceId>ae296f3b04a58a05b30c95f1****</DeviceId>\\n <Available>true</Available>\\n </DeviceCheckInfo>\\n <DeviceCheckInfo>\\n <DeviceId>ae296f3b04a58a05b30c95f1****</DeviceId>\\n <Available>false</Available>\\n </DeviceCheckInfo>\\n </DeviceCheckInfos>\\n</CheckDevicesResponse>","errorExample":""}]', - 'title' => '验证设备有效性', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'ListSummaryApps' => [ - 'summary' => '查询云账号下所有app的列表。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'UnbindTag', + 'description' => '解绑标签', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:UnbindTag', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'PushMessageToAndroid', + 'description' => '推送消息给Android设备', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:PushMessageToAndroid', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], - 'operationType' => 'read', - 'deprecated' => true, - 'systemTags' => [ - 'operationType' => 'list', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREemasASSZZG', + [ + 'apiName' => 'QueryDevicesByAccount', + 'description' => '通过账户查询设备列表', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryDevicesByAccount', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], - 'tenantRelevance' => 'publicInformation', ], - 'parameters' => [], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - 'SummaryAppInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'SummaryAppInfo' => [ - 'description' => 'app详情,SummaryAppInfo组成的集合。', - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'AppKey' => [ - 'description' => 'AppKey信息。', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '23****07', - ], - 'AppName' => [ - 'description' => '应用的名称。', - 'type' => 'string', - 'example' => 'abc', - ], - ], - ], - ], - ], - ], - ], + [ + 'apiName' => 'QueryDevicesByAlias', + 'description' => '通过别名查询设备列表', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryDevicesByAlias', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], - 'staticInfo' => [ - 'substitutions' => [ - 'Mhub::2017-08-25::ListApps', + [ + 'apiName' => 'CancelPush', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:CancelPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"SummaryAppInfos\\": {\\n \\"SummaryAppInfo\\": [\\n {\\n \\"AppKey\\": 0,\\n \\"AppName\\": \\"abc\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"<ListSummaryAppsResponse>\\n <RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>\\n <SummaryAppInfos>\\n <AppName>abc</AppName>\\n </SummaryAppInfos>\\n</ListSummaryAppsResponse>","errorExample":""}]', - 'title' => '查询用户已创建的app列表', - ], - ], - 'endpoints' => [ - [ - 'regionId' => 'ap-northeast-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'ap-northeast-2-pop', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'ap-south-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-2', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-3', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-5', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-beijing', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-beijing-finance-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-beijing-finance-pop', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-beijing-gov-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-beijing-nu16-b01', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-chengdu', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-edge-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-fujian', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-haidian-cm12-c01', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou-bj-b01', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou-finance', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou-internal-prod-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou-internal-test-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou-internal-test-2', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou-internal-test-3', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou-test-306', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hongkong', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hongkong-finance-pop', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-huhehaote', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-north-2-gov-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-qingdao', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-qingdao-nebula', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shanghai', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shanghai-et15-b01', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shanghai-et2-b01', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shanghai-finance-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shanghai-inner', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shanghai-internal-test-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shenzhen', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shenzhen-finance-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shenzhen-inner', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shenzhen-st4-d01', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shenzhen-su18-b01', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-wuhan', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-yushanfang', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-zhangbei-na61-b01', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-zhangjiakou', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-zhangjiakou-na62-a01', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'cn-zhengzhou-nebula-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'eu-central-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'eu-west-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'eu-west-1-oxs', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'me-east-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'rus-west-1-pop', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'us-east-1', - 'endpoint' => 'cloudpush.aliyuncs.com', - ], - [ - 'regionId' => 'us-west-1', - 'endpoint' => 'cloudpush.aliyuncs.com', ], + 'resourceTypes' => [], ], ]; |
