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/en_us/push/2016-08-01 | |
| parent | 7347bac4ab7e136157fc94777e6cf87ef9e08599 (diff) | |
| download | afterglow-metadata-full-1c7f908ce09f98fdcbf79ed2a8ae21be60eaa634.tar.gz afterglow-metadata-full-1c7f908ce09f98fdcbf79ed2a8ae21be60eaa634.zip | |
update APIs 20260712
Diffstat (limited to 'data/en_us/push/2016-08-01')
| -rw-r--r-- | data/en_us/push/2016-08-01/api-docs.php | 10592 |
1 files changed, 5448 insertions, 5144 deletions
diff --git a/data/en_us/push/2016-08-01/api-docs.php b/data/en_us/push/2016-08-01/api-docs.php index 9b222e0..b889590 100644 --- a/data/en_us/push/2016-08-01/api-docs.php +++ b/data/en_us/push/2016-08-01/api-docs.php @@ -1,2227 +1,4001 @@ <?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' => null, + 'children' => ['Push', 'MassPush', 'ContinuouslyPush', 'CompleteContinuouslyPush', 'CancelPush', 'PushV2', 'MassPushV2'], 'type' => 'directory', - 'children' => [ - 'Push', - 'MassPush', - 'ContinuouslyPush', - 'CompleteContinuouslyPush', - 'CancelPush', - 'PushV2', - 'MassPushV2', - ], + 'title' => 'Push operations', ], [ - 'id' => 165112, - 'title' => null, + 'children' => ['CheckCertificate', 'QueryPushRecords', 'QueryDeviceStat', 'QueryUniqueDeviceStat', 'QueryDeviceInfo', 'QueryPushStatByApp', 'QueryPushStatByMsg', 'CheckDevices'], 'type' => 'directory', - 'children' => [ - 'CheckCertificate', - 'QueryPushRecords', - 'QueryDeviceStat', - 'QueryUniqueDeviceStat', - 'QueryDeviceInfo', - 'QueryPushStatByApp', - 'QueryPushStatByMsg', - 'CheckDevices', - ], + 'title' => 'Query operations', ], [ - 'id' => 95678, - 'title' => null, + 'children' => ['BindTag', 'UnbindTag', 'RemoveTag', 'QueryTags'], 'type' => 'directory', - 'children' => [ - 'BindTag', - 'UnbindTag', - 'RemoveTag', - 'QueryTags', - 'ListTags', - ], + 'title' => 'Tag operations', ], [ - 'id' => 165138, - 'title' => null, + 'children' => ['BindAlias', 'UnbindAlias', 'QueryAliases', 'QueryDevicesByAlias'], 'type' => 'directory', - 'children' => [ - 'BindAlias', - 'UnbindAlias', - 'QueryAliases', - 'QueryDevicesByAlias', - ], + 'title' => 'Alias operations', ], [ - 'id' => 95697, - 'title' => null, + 'children' => ['QueryDevicesByAccount'], 'type' => 'directory', - 'children' => [ - 'QueryDevicesByAccount', - ], + 'title' => 'Account operations', ], [ - 'id' => 95671, - 'title' => null, + 'children' => ['BindPhone', 'UnbindPhone'], 'type' => 'directory', - 'children' => [ - 'BindPhone', - 'UnbindPhone', - ], + 'title' => 'Other operations', ], [ - 'id' => 200051, - 'title' => null, + 'children' => ['PushMessageToiOS', 'PushNoticeToiOS', 'PushNoticeToAndroid', 'PushMessageToAndroid', 'CheckDevice', 'ListSummaryApps'], + 'type' => 'directory', + 'title' => 'Deprecated operations (not recommended)', + ], + [ + 'children' => ['ListTags'], + 'title' => 'Others', 'type' => 'directory', - 'children' => [ - 'PushMessageToiOS', - 'PushNoticeToiOS', - 'PushNoticeToAndroid', - 'PushMessageToAndroid', - 'CheckDevice', - 'ListSummaryApps', - ], ], ], 'components' => [ 'schemas' => [ 'PushTask' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Push task object', 'type' => 'object', 'properties' => [ 'Action' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Push method. Optional parameter, defaults to `PUSH_IMMEDIATELY`.'."\n" + ."\n" + .'><notice>'."\n" + ."\n" + .'The batch push API `MassPushV2` only supports the following push methods:'."\n" + ."\n" + .'- `PUSH_IMMEDIATELY`'."\n" + .'- `SCHEDULED_PUSH`'."\n" + ."\n" + .'></notice>', + 'enumValueTitles' => ['SCHEDULED_PUSH' => 'Scheduled push', 'CREATE_CONTINUOUS_PUSH' => 'Create continuous push task', 'PUSH_IMMEDIATELY' => 'Push immediately', 'CONTINUOUS_PUSH' => 'Continuous push'], 'type' => 'string', 'required' => false, - 'enumValueTitles' => [ - 'SCHEDULED_PUSH' => '', - 'CREATE_CONTINUOUS_PUSH' => '', - 'PUSH_IMMEDIATELY' => '', - 'CONTINUOUS_PUSH' => '', - ], 'example' => 'PUSH_IMMEDIATELY', - 'backendName' => 'action', - 'enum' => [ - 'PUSH_IMMEDIATELY', - 'SCHEDULED_PUSH', - 'CREATE_CONTINUOUS_PUSH', - 'CONTINUOUS_PUSH', - ], + 'enum' => ['PUSH_IMMEDIATELY', 'SCHEDULED_PUSH', 'CREATE_CONTINUOUS_PUSH', 'CONTINUOUS_PUSH'], + 'title' => '', ], 'Target' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Specifies the target of the message push. This parameter is optional when the `Action` is `CREATE_CONTINUOUS_PUSH` (create continuous push task).', 'type' => 'object', 'properties' => [ 'Type' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Push target type.'."\n" + ."\n" + .'><notice>'."\n" + ."\n" + .'The batch push API `MassPushV2` and continuous push `CONTINUOUS_PUSH` only support the following three target types:'."\n" + ."\n" + .'- `DEVICE`'."\n" + .'- `ACCOUNT`'."\n" + .'- `ALIAS`'."\n" + ."\n" + .'></notice>', + 'enumValueTitles' => ['ALL' => 'All', 'ACCOUNT' => 'Account', 'ALIAS' => 'Alias', 'DEVICE' => 'Device', 'TAG' => 'Tag'], 'type' => 'string', 'required' => false, - 'enumValueTitles' => [ - 'ALL' => '', - 'ACCOUNT' => '', - 'ALIAS' => '', - 'DEVICE' => '', - 'TAG' => '', - ], 'example' => 'DEVICE', - 'backendName' => 'type', - 'enum' => [ - 'DEVICE', - 'TAG', - 'ALIAS', - 'ACCOUNT', - 'ALL', - 'FILE', - ], + 'enum' => ['DEVICE', 'TAG', 'ALIAS', 'ACCOUNT', 'ALL', 'FILE'], + 'title' => '', ], + 'Value' => ['description' => 'Sets the push target based on `Target.Type`, with multiple targets separated by commas. The target types and values are described below:'."\n" + ."\n" + .'>* `DEVICE`: Device IDs, e.g., deviceid1,deviceid2, up to 1000.'."\n" + .'>* `ACCOUNT`: Account IDs, e.g., account1,account2, up to 1000.'."\n" + .'>* `ALIAS`: Aliases, e.g., alias1,alias2, up to 1000.'."\n" + .'>* `TAG`: Supports single or multiple tags. See [Tag format specification](https://help.aliyun.com/document_detail/434847.html) for the format.'."\n" + .'>* `ALL`: Push to all devices. No value needs to be set. Pushing to all may increase costs, please use at your discretion.', 'type' => 'string', 'example' => 'value', 'title' => ''], 'Platform' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Platform type. Optional parameter.', + 'enumValueTitles' => ['ALL' => 'Both platforms, only supported by certain dual-platform applications', 'HMOS' => 'HarmonyOS devices', 'ANDROID' => 'Android devices', 'IOS' => 'iOS devices'], 'type' => 'string', 'required' => false, - 'enumValueTitles' => [ - 'ALL' => '', - 'HMOS' => '', - 'ANDROID' => '', - 'IOS' => '', - ], 'example' => 'IOS', - 'backendName' => 'platform', - 'enum' => [ - 'ANDROID', - 'IOS', - 'HMOS', - 'ALL', - ], - ], - 'Value' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'value', - 'backendName' => 'value', + 'enum' => ['ANDROID', 'IOS', 'HMOS', 'ALL'], + 'title' => '', ], ], - 'backendName' => 'target', + 'title' => '', + 'example' => '', ], 'Message' => [ 'title' => '', - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Pass-through message data sent to the device. Total length must not exceed 4000 bytes.'."\n" + ."\n" + .'> Length calculation notes'."\n" + .'> - Length is calculated based on the UTF-8 encoded byte length of the JSON serialized Message object string.'."\n" + .'> - Chinese characters typically occupy 3 bytes in UTF-8 encoding.', 'type' => 'object', 'properties' => [ - 'Title' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'title', - 'backendName' => 'title', - ], - 'Body' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'required' => false, - 'example' => '{"key": "value"}', - 'backendName' => 'body', - ], + 'Title' => ['description' => 'Title of the message to be sent.', 'type' => 'string', 'example' => 'title', 'title' => ''], + 'Body' => ['description' => 'Content of the message to be sent.', 'type' => 'string', 'required' => false, 'example' => '{"key": "value"}', 'title' => ''], ], - 'backendName' => 'message', + 'example' => '', ], 'Notification' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Vendor notification data sent to the device.'."\n" + ."\n" + .'><notice>'."\n" + ."\n" + .'When both `Message` and `Notification` are set, the device will only receive one, following these rules:'."\n" + ."\n" + .'- When the device is online, pass-through message data is sent;'."\n" + .'- When the device is offline, a system notification is sent;'."\n" + ."\n" + .'></notice>', 'type' => 'object', 'properties' => [ 'Title' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', + 'description' => 'Title of the push notification.'."\n" + ."\n" + .'> Length limits:'."\n" + .'> - iOS/Harmony: **byte length** must not exceed 200'."\n" + .'> - Android: **character length** must not exceed 50', 'enumValueTitles' => [], - 'example' => '', - 'backendName' => 'title', - ], - 'Hmos' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'object', - 'properties' => [ - 'InboxContent' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => '', - 'extendType' => 'true', - ], - 'backendName' => 'inboxContent', - ], - 'Action' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'com.example.action', - 'backendName' => 'action', - ], - 'Category' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'enumValueTitles' => [ - 'TRAVEL' => '', - 'IM' => '', - 'VOIP' => '', - 'SUBSCRIPTION' => '', - 'MARKETING' => '', - 'CUSTOMER_SERVICE' => '', - 'ACCOUNT' => '', - 'MAIL' => '', - 'FINANCE' => '', - 'EXPRESS' => '', - 'WORK' => '', - 'HEALTH' => '', - 'DEVICE_REMINDER' => '', - ], - 'example' => 'IM', - 'backendName' => 'category', - 'enum' => [ - 'IM', - 'VOIP', - 'SUBSCRIPTION', - 'TRAVEL', - 'HEALTH', - 'WORK', - 'ACCOUNT', - 'EXPRESS', - 'FINANCE', - 'DEVICE_REMINDER', - 'MAIL', - 'CUSTOMER_SERVICE', - 'MARKETING', - ], - ], - 'RenderStyle' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'enumValueTitles' => [ - 'NORMAL' => '', - 'MULTI_LINE' => '', - ], - 'example' => 'NORMAL', - 'backendName' => 'renderStyle', - 'enum' => [ - 'NORMAL', - 'MULTI_LINE', - ], - ], - 'BadgeAddNum' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - 'backendName' => 'badgeAddNum', - ], - 'ImageUrl' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'https://example.com/xxx.png', - 'backendName' => 'imageUrl', - ], - 'ExtParameters' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => '{"key": "value"}', - 'backendName' => 'extParameters', - ], - 'Uri' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'https://www.example.com:8080/push/example', - 'backendName' => 'uri', - ], - 'SlotType' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'enumValueTitles' => [ - 'CONTENT_INFORMATION' => '', - 'UNKNOWN_TYPE' => '', - 'LIVE_VIEW' => '', - 'SOCIAL_COMMUNICATION' => '', - 'CUSTOMER_SERVICE' => '', - 'OTHER_TYPES' => '', - 'SERVICE_INFORMATION' => '', - ], - 'example' => 'SOCIAL_COMMUNICATION', - 'backendName' => 'slotType', - 'enum' => [ - 'SOCIAL_COMMUNICATION', - 'SERVICE_INFORMATION', - 'CONTENT_INFORMATION', - 'CUSTOMER_SERVICE', - 'OTHER_TYPES', - 'UNKNOWN_TYPE', - 'LIVE_VIEW', - ], - ], - 'ExtensionExtraData' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'text', - 'backendName' => 'extensionExtraData', - ], - 'ReceiptId' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'RCPB***DFD5', - 'backendName' => 'receiptId', - ], - 'ExtensionPush' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'boolean', - 'example' => 'false', - 'backendName' => 'extensionPush', - ], - 'TestMessage' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'boolean', - 'example' => 'true', - 'backendName' => 'testMessage', - ], - 'BadgeSetNum' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - 'backendName' => 'badgeSetNum', - ], - 'NotifyId' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '123456', - 'backendName' => 'notifyId', - ], - ], - 'backendName' => 'hmos', + 'type' => 'string', + 'example' => '您有一条新消息', + 'title' => '', ], + 'Body' => ['description' => 'Content of the push notification.'."\n" + ."\n" + .'> Length limits:'."\n" + .'> - iOS/Harmony/Android: **character length** must not exceed 200', 'type' => 'string', 'example' => '尊敬的客户,您好!您的预约订单已取消成功。 ', 'title' => ''], 'Ios' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'iOS notification configuration', 'type' => 'object', 'properties' => [ - 'CollapseId' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'order_status_update_12345', - 'backendName' => 'collapseId', - ], - 'Category' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'MESSAGE_REPLY', - 'backendName' => 'category', - ], - 'Silent' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'boolean', - 'example' => 'false', - 'backendName' => 'silent', - ], - 'ExtParameters' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => '{"attachment": "https://xxxx.xxx/notification_pic.png"} ', - 'backendName' => 'extParameters', - ], - 'Badge' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - 'backendName' => 'badge', - ], - 'RelevanceScore' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'number', - 'format' => 'double', - 'example' => '0.5', - 'backendName' => 'relevanceScore', - ], - 'ApnsEnv' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'enumValueTitles' => [ - 'DEV' => '', - 'PRODUCT' => '', - ], - 'example' => 'DEV', - 'backendName' => 'apnsEnv', - 'enum' => [ - 'DEV', - 'PRODUCT', - ], - ], - 'Subtitle' => [ - 'description' => '', - 'visibility' => 'Public', + 'Subtitle' => ['description' => 'iOS notification subtitle content.', 'type' => 'string', 'example' => '请查收订单。', 'title' => ''], + 'Music' => ['description' => 'iOS notification sound. Specifies the audio file name stored in the app bundle or sandbox Library/Sounds directory. See: [How to set iOS push notification sound](https://help.aliyun.com/document_detail/48906.html).'."\n" + ."\n" + .'> - If set to an empty string (""), the notification will be silent.'."\n" + .'> - If not set, defaults to the system alert sound.', 'type' => 'string', 'example' => 'default', 'title' => ''], + 'Badge' => ['description' => 'iOS application badge number.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'BadgeAutoIncrement' => ['description' => 'Whether to enable badge auto-increment. Optional parameter, defaults to false.'."\n" + ."\n" + .'> - Cannot be used together with the badge set parameter.'."\n" + .'> - The badge auto-increment feature is maintained by Alibaba Cloud Push server for each device\'s badge count. Requires SDK version 1.9.5 or above. The SDK actively syncs the badge number to the server.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'Silent' => ['description' => 'Controls whether to enable silent push mode.'."\n" + ."\n" + .'> - When sending silent notifications, `title` and `body` parameters can be omitted.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'Mutable' => ['description' => 'Enables notification extension, controlling whether the iOS notification supports Notification Service Extension processing.'."\n" + .'> - Must be set to true when sending silent notifications.'."\n" + .'> - Extension processing time must not exceed 30 seconds.'."\n" + .'> - Timeout will cause the notification to display original content.'."\n" + .'> - Requires adding a Notification Service Extension to the application.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'Category' => ['description' => 'Specifies the category identifier for iOS notifications, used to define the interaction behavior and display style of notifications.'."\n" + ."\n" + .'> - The Category must be pre-registered in the App to take effect.'."\n" + .'> - Different Categories can define different sets of actions.', 'type' => 'string', 'example' => 'MESSAGE_REPLY', 'title' => ''], + 'CollapseId' => ['description' => 'A unique identifier for notification collapsing. Notifications with the same identifier will be replaced and displayed as one.', 'type' => 'string', 'example' => 'order_status_update_12345', 'title' => ''], + 'ThreadId' => ['description' => 'Thread identifier for iOS notification grouping, used to categorize and collapse related notifications.'."\n" + ."\n" + .'> - Notifications with the same thread-id are automatically grouped.'."\n" + .'> - Multiple related notifications are collapsed into one notification group.'."\n" + .'> - Users can expand to view all notifications in the group.', 'type' => 'string', 'example' => 'news_category_tech', 'title' => ''], + 'InterruptionLevel' => [ + 'description' => 'Interruption level. Optional parameter with the following enum values:'."\n" + ."\n" + .'- `passive`: The system adds the notification to the notification list without lighting the screen or playing a sound.'."\n" + .'- `active`: The system immediately displays the notification, lights up the screen, and may play a sound.'."\n" + .'- `time-sensitive`: The system immediately presents the notification, lights up the screen, and may play a sound, but does not break through system notification controls.'."\n" + .'- `critical`: The system immediately displays the notification, lights up the screen, and plays a sound bypassing the mute switch.', 'type' => 'string', - 'example' => '', - 'backendName' => 'subtitle', - ], - 'Mutable' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'boolean', - 'example' => 'true', - 'backendName' => 'mutable', + 'example' => 'active', + 'enum' => ['passive', 'active', 'time-sensitive', 'critical'], + 'title' => '', ], + 'RelevanceScore' => ['description' => 'Relevance score of the notification message, used to control notification priority and display strategy.', 'type' => 'number', 'format' => 'double', 'example' => '0.5', 'title' => ''], + 'ExtParameters' => ['description' => 'Custom extension attributes for iOS notifications.'."\n" + ."\n" + .'> - Parameters must be passed in standard JSON Map format. Incorrect format will cause parsing failure.', 'type' => 'string', 'example' => '{"attachment": "https://xxxx.xxx/notification_pic.png"} ', 'title' => ''], 'LiveActivity' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Live Activity (Dynamic Island) parameter object.'."\n" + ."\n" + .'><notice>'."\n" + ."\n" + .'- Live Activity push only supports pushing to a **single device** by `DEVICE` type.'."\n" + .'- When pushing Live Activities, `title` and `body` parameters can be omitted.'."\n" + ."\n" + .'></notice>', 'type' => 'object', 'properties' => [ - 'AttributesType' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'OrderActivityAttributes', - 'backendName' => 'attributesType', - ], - 'Attributes' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => '', - 'backendName' => 'attributes', - ], - 'StaleDate' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1701425400', - 'backendName' => 'staleDate', - ], + 'Id' => ['description' => 'Unique identifier of the Live Activity, used to associate the device-side activity instance with the server-side push target.'."\n" + ."\n" + .'><notice>'."\n" + ."\n" + .'- This `ID` must be consistent with the `forActivityId` parameter in the client SDK\'s `registerLiveActivityPushToken` method.'."\n" + ."\n" + .'- The server uses this `ID` to locate the specific activity instance.'."\n" + ."\n" + .'></notice>', 'type' => 'string', 'example' => 'FOOD_DELIVERY_ORD20231201001', 'title' => ''], 'Event' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Start, update, or end a Live Activity.', 'type' => 'string', 'required' => false, 'example' => 'start', - 'backendName' => 'event', - 'enum' => [ - 'start', - 'update', - 'end', - ], - ], - 'DismissalDate' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1701439800', - 'backendName' => 'dismissalDate', - ], - 'Id' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'FOOD_DELIVERY_ORD20231201001', - 'backendName' => 'id', - ], - 'ContentState' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => '', - 'backendName' => 'contentState', + 'enum' => ['start', 'update', 'end'], + 'title' => '', ], + 'AttributesType' => ['description' => 'The type of Live Activity to start.'."\n" + ."\n" + .'> Required when `Event` is start.', 'type' => 'string', 'example' => 'OrderActivityAttributes', 'title' => ''], + 'Attributes' => ['description' => 'Static pass-through parameters for iOS Live Activities push, used to pass immutable business identification information.'."\n" + ."\n" + .'> Required when `Event` is start.', 'type' => 'string', 'example' => '{'."\n" + .' "orderId": "ORD20231201001",'."\n" + .' "restaurantName": "美味餐厅",'."\n" + .' "customerAddress": "xx区xx路xx号",'."\n" + .' "orderType": "delivery"'."\n" + .'}', 'title' => ''], + 'ContentState' => ['description' => 'Dynamic pass-through parameters for Live Activity, containing real-time updatable status information and changing data.'."\n" + ."\n" + .'> - Avoid overly frequent updates (recommended interval >= 5 seconds).'."\n" + .'> - Batch update multiple fields to reduce push count.'."\n" + .'> - Consider user experience and avoid UI flickering.'."\n" + .'> - Must be a valid JSON string.', 'type' => 'string', 'example' => '{'."\n" + .' "status": "delivering",'."\n" + .' "estimatedTime": "10分钟",'."\n" + .' "progress": 80,'."\n" + .' "driverName": "李师傅",'."\n" + .' "currentStep": "配送员正在路上"}'."\n" + .'}', 'title' => ''], + 'DismissalDate' => ['description' => 'Sets the retention time of a ended Live Activity on the lock screen, allowing users to still view information after the activity ends. Uses Unix timestamp in seconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1701439800', 'title' => ''], + 'StaleDate' => ['description' => 'Sets the expiration timestamp for iOS Live Activity content. Uses Unix timestamp in seconds.'."\n" + ."\n" + .'> - After the specified time, the system will automatically mark the activity as expired.'."\n" + .'> - Expired activities will be removed from Dynamic Island and the lock screen.'."\n" + .'> - Prevents outdated information from occupying the user interface for extended periods.', 'type' => 'integer', 'format' => 'int64', 'example' => '1701425400', 'title' => ''], ], - 'backendName' => 'liveActivity', + 'title' => '', + 'example' => '', ], - 'InterruptionLevel' => [ - 'description' => '', - 'visibility' => 'Public', + 'ApnsEnv' => [ + 'description' => 'iOS notifications are sent through the APNs center, and the corresponding environment information must be provided. Optional parameter, defaults to production environment.'."\n" + ."\n" + .'- DEV: Development environment, for applications installed and debugged directly through Xcode.'."\n" + .'- PRODUCT: Production environment, for applications distributed via App Store, TestFlight, Ad Hoc, and Enterprise distribution.', + 'enumValueTitles' => ['DEV' => 'Development environment', 'PRODUCT' => 'Production environment'], 'type' => 'string', - 'example' => 'active', - 'backendName' => 'interruptionLevel', - 'enum' => [ - 'passive', - 'active', - 'time-sensitive', - 'critical', + 'example' => 'DEV', + 'enum' => ['DEV', 'PRODUCT'], + 'title' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'Hmos' => [ + 'description' => 'HarmonyOS notification configuration.', + 'type' => 'object', + 'properties' => [ + 'Category' => [ + 'description' => 'Notification message category. Optional parameter, defaults to `MARKETING` category.'."\n" + ."\n" + .'> After completing the notification message self-classification rights application, this is used to identify the message type. Different notification message types affect the message display and alert method. For details, see the HarmonyOS official documentation [Notification.category](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117).', + 'enumValueTitles' => [ + 'TRAVEL' => 'Travel', 'IM' => 'Instant messaging', 'VOIP' => 'Audio/video calls', 'SUBSCRIPTION' => 'Subscription', 'MARKETING' => 'News, content recommendations, social updates, product promotions, financial updates, lifestyle information, surveys, feature recommendations, operational activities (only labels content, does not accelerate message delivery), collectively referred to as information marketing messages', 'CUSTOMER_SERVICE' => 'Customer service messages', 'ACCOUNT' => 'Account updates', 'MAIL' => 'Mail', 'FINANCE' => 'Finance', 'EXPRESS' => 'Orders & logistics', + 'WORK' => 'Work task reminders', 'HEALTH' => 'Health', 'DEVICE_REMINDER' => 'Device reminders', ], + 'type' => 'string', + 'example' => 'IM', + 'enum' => ['IM', 'VOIP', 'SUBSCRIPTION', 'TRAVEL', 'HEALTH', 'WORK', 'ACCOUNT', 'EXPRESS', 'FINANCE', 'DEVICE_REMINDER', 'MAIL', 'CUSTOMER_SERVICE', 'MARKETING'], + 'title' => '', ], - 'ThreadId' => [ - 'description' => '', - 'visibility' => 'Public', + 'SlotType' => [ + 'description' => 'Uses the specified type of notification channel.'."\n" + ."\n" + .'> - Only effective for Alibaba Cloud proprietary channels.'."\n" + .'> - For details, see the HarmonyOS official documentation [SlotType](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-notificationmanager-V5#slottype).', + 'enumValueTitles' => ['CONTENT_INFORMATION' => 'Content information', 'UNKNOWN_TYPE' => 'Unknown type', 'LIVE_VIEW' => 'Live view', 'SOCIAL_COMMUNICATION' => 'Social communication', 'CUSTOMER_SERVICE' => 'Customer service messages. This type is used for customer service messages between users and merchants, which must be initiated by the user.', 'OTHER_TYPES' => 'Other', 'SERVICE_INFORMATION' => 'Service reminders'], 'type' => 'string', - 'example' => 'news_category_tech', - 'backendName' => 'threadId', + 'example' => 'SOCIAL_COMMUNICATION', + 'enum' => ['SOCIAL_COMMUNICATION', 'SERVICE_INFORMATION', 'CONTENT_INFORMATION', 'CUSTOMER_SERVICE', 'OTHER_TYPES', 'UNKNOWN_TYPE', 'LIVE_VIEW'], + 'title' => '', ], - 'Music' => [ - 'description' => '', - 'visibility' => 'Public', + 'NotifyId' => ['description' => 'Specifies the unique identifier for each message displayed in the notification bar (notifyId). If not provided, the push service will automatically generate a unique identifier. Different notification messages can use the same notifyId to enable new messages to overwrite old ones. See HarmonyOS official documentation [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', 'title' => ''], + 'Action' => ['description' => 'Specifies the action corresponding to the in-app page ability.'."\n" + ."\n" + .'> For details, see the HarmonyOS official documentation [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', 'title' => ''], + 'Uri' => ['description' => 'The URI corresponding to the in-app page ability.'."\n" + ."\n" + .'> - When multiple Abilities exist, fill in different actions and URIs for each Ability. The action is used first to find the corresponding in-app page.'."\n" + .'> - For details, see the HarmonyOS official documentation [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', 'title' => ''], + 'RenderStyle' => [ + 'description' => 'Notification message style. Optional parameter, defaults to standard notification.', + 'enumValueTitles' => ['NORMAL' => 'Standard notification (default)', 'MULTI_LINE' => 'Multi-line text style'], 'type' => 'string', - 'example' => 'default', - 'backendName' => 'music', + 'example' => 'NORMAL', + 'enum' => ['NORMAL', 'MULTI_LINE'], + 'title' => '', ], - 'BadgeAutoIncrement' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'boolean', - 'example' => 'false', - 'backendName' => 'badgeAutoIncrement', + 'ImageUrl' => ['description' => 'Large icon URL on the right side of the notification. The URL must use the HTTPS protocol.'."\n" + ."\n" + .'> - Supported image formats: png, jpg, jpeg, heif, gif, bmp. Image height * width must be less than 25000 pixels.'."\n" + .'> - For details, see the HarmonyOS official documentation [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', 'title' => ''], + 'InboxContent' => [ + 'description' => 'When `RenderStyle` is `MULTI_LINE`, this field must be filled in to define the multi-line text style content. Supports up to 3 items.', + 'type' => 'array', + 'items' => ['description' => 'Text content.', 'type' => 'string', 'example' => '1. 您有一个事项待处理', 'title' => ''], + 'title' => '', + 'example' => '', ], - ], - 'backendName' => 'ios', - ], - 'Body' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', + 'ExtParameters' => ['description' => 'Sets custom extension attributes for notification messages, used to pass additional business data.'."\n" + ."\n" + .'> Parameters must be passed in standard JSON Map format. Incorrect format will cause parsing failure.', 'type' => 'string', 'example' => '{"key": "value"}', 'title' => ''], + 'TestMessage' => ['description' => 'Enables test message mode.'."\n" + ."\n" + .'> - For details, see the HarmonyOS push parameter [TestMessage](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212).', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'ReceiptId' => ['description' => 'HarmonyOS channel receipt ID. This receipt ID can be viewed in the receipt parameter configuration of the HarmonyOS channel push operations platform.'."\n" + ."\n" + .'> - If the default receipt configuration on the HarmonyOS channel push operations platform is Alibaba Cloud receipt, this is not required. Otherwise, it is recommended to first configure the HarmonyOS channel default receipt ID in the Alibaba Cloud EMAS Mobile Push console.'."\n" + .'> - For details, see the HarmonyOS official documentation [pushOptions.receiptId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section418321011212).', 'type' => 'string', 'example' => 'RCPB***DFD5', 'title' => ''], + 'ExtensionPush' => ['description' => 'Enables HarmonyOS notification extension.'."\n" + ."\n" + .'> - Notification extension messages require prior permission application on the HarmonyOS official website. For details, see the [HarmonyOS documentation](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-send-extend-noti-V5) on sending notification extension messages.'."\n" + .'> - Supported from HarmonyOS SDK version 1.2.0.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'ExtensionExtraData' => ['description' => 'Extra data for notification extension messages.'."\n" + ."\n" + .'> - Effective when sending HarmonyOS notification extension messages.'."\n" + .'> - Conceptually equivalent to the extraData field of HarmonyOS notification extension messages. For specific definitions, see the HarmonyOS [ExtensionPayload](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section161192514234) documentation.'."\n" + .'> - Supported from HarmonyOS SDK version 1.2.0.', 'type' => 'string', 'example' => 'text', 'title' => ''], + 'BadgeSetNum' => ['description' => 'HarmonyOS application badge set number.'."\n" + ."\n" + .'> - See HarmonyOS badge [setNum field](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145) documentation.'."\n" + .'> - Supported from HarmonyOS SDK version 1.2.0.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'BadgeAddNum' => ['description' => 'HarmonyOS application badge increment number.'."\n" + ."\n" + .'> - Supported from HarmonyOS SDK version 1.2.0.'."\n" + .'> - See HarmonyOS badge [addNum field documentation](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145).', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'LiveViewPayload' => ['description' => 'JSON string of the HarmonyOS Live View data structure [LiveViewPayload](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/push-scenariozed-api-request-param-V13#section66881469306). For development integration, see the [HarmonyOS Live View Push Guide](https://help.aliyun.com/document_detail/2982112.html).', 'type' => 'string', 'title' => '', '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' => 'HarmonyOS custom ringtone file name', 'type' => 'string', 'example' => 'music.mp3'], + 'SoundDuration' => ['title' => '', 'description' => 'Custom notification ringtone duration in seconds, range [1,60]. If the ringtone duration is insufficient, it will loop.', 'type' => 'integer', 'example' => '2', 'format' => 'int32'], + ], + 'title' => '', 'example' => '', - 'backendName' => 'body', ], 'Android' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Android notification configuration', 'type' => 'object', 'properties' => [ + 'VendorChannelActivity' => ['description' => 'Specifies the Activity to navigate to after clicking the notification.'."\n" + ."\n" + .'><warning>This option must be filled in when using Android vendor channels.></warning>', 'type' => 'string', 'example' => 'com.alibaba.cloudpushdemo.bizactivity', 'title' => ''], + 'ChannelId' => ['description' => 'Sets the channelId for the Android app, which must match the channelId in the vendor App.'."\n" + ."\n" + .'> - Since the OPPO notification private channel\'s channel_id is the same as the app\'s channelId, the channel_id takes this value when pushing through the OPPO channel.'."\n" + .'> - For Huawei, FCM, and Alibaba Cloud proprietary channel pushes, the channel_id takes this value.'."\n" + .'> - For specific usage, see FAQ: [Notifications not received on Android 8.0+ devices](https://help.aliyun.com/document_detail/67398.html).', 'type' => 'string', 'example' => '8.0up', 'title' => ''], + 'RenderStyle' => [ + 'description' => 'Notification style. Values:'."\n" + ."\n" + .'- `0`: Standard mode (default)'."\n" + .'- `1`: Long text mode (supports Huawei, Honor, Xiaomi, OPPO, Meizu, proprietary channel)'."\n" + .'- `2`: Large image mode (supports proprietary channel)'."\n" + .'- `3`: List mode (supports Huawei, Honor, Xiaomi, OPPO, proprietary channel)', + 'type' => 'string', + 'example' => '0', + 'enum' => ['NORMAL', 'BIG_TEXT', 'BIG_PICTURE', 'MULTI_LINE'], + 'title' => '', + ], + 'PictureUrl' => ['description' => 'Image URL for large image mode. Currently supported: Proprietary channel: Android SDK 3.6.0 and above.', 'type' => 'string', 'example' => 'https://imag.example.com/image.png', 'title' => ''], + 'ImageUrl' => ['description' => 'Right-side icon URL. Currently supported:'."\n" + ."\n" + .'- `Huawei EMUI` (only applicable in long text mode and Inbox mode).'."\n" + .'- `Honor Magic UI` (only applicable in long text mode).'."\n" + .'- `Proprietary channel` (Android SDK 3.5.0 and above).', 'type' => 'string', 'example' => 'https://imag.example.com/image.png', 'title' => ''], 'InboxContent' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Body content in Inbox mode. Content must be a valid JSON Array with no more than 5 elements. Currently supported:'."\n" + ."\n" + .'- Huawei: EMUI9 and above'."\n" + .'- Honor: Magic UI 4.0 and above'."\n" + .'- Xiaomi: MIUI10 and above'."\n" + .'- OPPO: ColorOS 5.0 and above'."\n" + .'- Proprietary channel: Android SDK 3.6.0 and above', 'type' => 'array', - 'items' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => '', - 'extendType' => 'true', - ], - 'backendName' => 'inboxContent', + 'items' => ['description' => 'Body text', 'type' => 'string', 'example' => '1. 第一条待处理事项', 'title' => ''], + 'title' => '', + 'example' => '', ], + 'NotifyId' => ['description' => 'Unique identifier for Android notification bar messages, used to control notification override and replacement behavior. New notifications with the same NotifyId will automatically override old ones.', 'type' => 'integer', 'format' => 'int32', 'example' => '233856727', 'title' => ''], + 'GroupId' => ['description' => 'Message group. Messages in the same group will only display the latest one and the total message count in the notification bar, without showing all messages or allowing expansion. Currently supported:'."\n" + ."\n" + .'- Huawei vendor channel'."\n" + .'- Honor vendor channel'."\n" + .'- Proprietary channel with Android SDK 3.9.1 and below'."\n" + ."\n" + .'> The proprietary channel no longer supports this parameter from Android SDK 3.9.2 and above.', 'type' => 'string', 'example' => 'group-1', 'title' => ''], + 'ExtParameters' => ['description' => 'Custom extension attributes for Android notifications.'."\n" + ."\n" + .'> - Parameters must be passed in standard JSON Map format. Incorrect format will cause parsing failure.', 'type' => 'string', 'example' => '{"key1":"value1"}', 'title' => ''], + 'Music' => ['description' => 'Huawei vendor channel notification sound. Specifies the audio file name stored in the client project\'s `app/src/main/res/raw/` directory, without the file format extension. If not set, the default ringtone is used.', 'type' => 'string', 'example' => 'alicloud_notification_sound', 'title' => ''], + 'BadgeSetNum' => ['description' => 'Sets a fixed badge number. Value range: [1~99].'."\n" + ."\n" + .'> - For vendor channel push, only effective for Huawei and Honor channels.'."\n" + .'> - For Alibaba Cloud proprietary channel push, only effective on Huawei, Honor, and vivo devices.', 'type' => 'integer', 'format' => 'int32', 'example' => '4', 'title' => ''], + 'BadgeAddNum' => ['description' => 'Sets the badge increment value, added to the existing badge count.'."\n" + ."\n" + .'> - Supports `Huawei` and `Honor` channels.'."\n" + .'> - When both `BadgeAddNum` and `BadgeSetNum` are present, the latter takes precedence.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'BadgeActivity' => ['description' => 'Full class name of the Activity for the badge setting application entry.'."\n" + ."\n" + .'> Only effective for Huawei/Honor vendor channel push.', 'type' => 'string', 'example' => 'com.alibaba.cloudpushdemo.bizactivity', 'title' => ''], + 'TestMessage' => ['description' => 'Sets the vendor channel notification type:'."\n" + ."\n" + .'- `false`: Official notification (default).'."\n" + .'- `true`: Test notification.'."\n" + ."\n" + .'> Currently supported: Huawei channel, Honor channel, vivo channel, OPPO Fluid Cloud.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], 'Options' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Detailed channel configuration.', 'type' => 'object', 'properties' => [ - 'Honor' => [ - 'description' => '', - 'visibility' => 'Public', + 'Accs' => [ + 'description' => 'Alibaba Cloud proprietary channel configuration.'."\n" + ."\n" + .'> Only effective when using the Alibaba Cloud proprietary channel.', 'type' => 'object', 'properties' => [ - 'Importance' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - 'backendName' => 'importance', - 'enum' => [ - '0', - '1', - ], + 'CustomStyle' => ['description' => 'Android custom notification bar style. Value range: 1-100.'."\n" + ."\n" + .'> Requires client-side style preset configuration. See [Custom notification style API](https://help.aliyun.com/document_detail/2834944.html).', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'Priority' => ['description' => 'Priority of Android notification display position in the notification bar. Allowed values: -2, -1, 0, 1, 2.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'ThreadId' => ['description' => 'Message group. Messages in the same group are collapsed in the notification bar and can be expanded. Different groups are displayed separately.'."\n" + ."\n" + .'> Android SDK 3.9.2 and above.', 'type' => 'string', 'example' => 'order_ORD20231201001', 'title' => ''], + 'OpenType' => [ + 'description' => 'Action after clicking the notification. Allowed values:'."\n" + ."\n" + .'- `APPLICATION`: Open application (default)'."\n" + .'- `ACTIVITY`: Open specified page `OpenActivity`'."\n" + .'- `URL`: Open URL'."\n" + .'- `NONE`: No navigation', + 'type' => 'string', + 'example' => 'APPLICATION', + 'enum' => ['APPLICATION', 'ACTIVITY', 'URL', 'NONE'], + 'title' => '', + ], + 'OpenActivity' => ['description' => 'Sets the Activity to open on notification click. Effective when `OpenType` is `ACTIVITY`.', 'type' => 'string', 'example' => 'com.alibaba.cloudpushdemo.bizactivity', 'title' => ''], + 'OpenUrl' => ['description' => 'URL to open when clicking the push notification on Android. Effective when `OpenType` is `URL`.', 'type' => 'string', 'example' => 'www.example.com', 'title' => ''], + 'NotifyType' => [ + 'description' => 'Notification alert method. Allowed values:'."\n" + ."\n" + .'- `VIBRATE`: Vibration (default)'."\n" + .'- `SOUND`: Sound'."\n" + .'- `BOTH`: Sound and vibration'."\n" + .'- `NONE`: Silent', + 'type' => 'string', + 'example' => 'NONE', + 'enum' => ['VIBRATE', 'SOUND', 'BOTH', 'NONE'], + 'title' => '', ], ], - 'backendName' => 'honor', + 'title' => '', + 'example' => '', ], - 'Xiaomi' => [ - 'description' => '', - 'visibility' => 'Public', + 'Huawei' => [ + 'description' => 'Huawei configuration', 'type' => 'object', 'properties' => [ - 'Channel' => [ - 'description' => '', - 'visibility' => 'Public', + 'ReceiptId' => ['description' => 'Huawei channel receipt ID. This receipt ID can be viewed in the receipt parameter configuration of the Huawei channel push operations platform.'."\n" + ."\n" + .'> If the default receipt configuration on the Huawei channel push operations platform is Alibaba Cloud receipt, this is not required. Otherwise, it is recommended to first configure the Huawei channel default receipt ID in the Alibaba Cloud EMAS Mobile Push console.', 'type' => 'string', 'example' => 'RCP4C123456', 'title' => ''], + 'Category' => ['description' => 'Purpose 1: After completing the [self-classification rights](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835?#section3410731125514) application, used to identify the message type and determine the [notification alert method](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#ZH-CN_TOPIC_0000001149358835__p3850133955718). For accelerated delivery of specific message types, refer to the Huawei Push official documentation [message classification standards](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section1076611477914) and fill in the "Cloud notification category value" or "Local notification category value" from the documentation table.'."\n" + ."\n" + .'Purpose 2: After [applying for special permissions](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509), used to identify high-priority pass-through scenarios with the following values:'."\n" + ."\n" + .'- `VOIP`: Audio/video calls'."\n" + .'- `PLAY_VOICE`: Voice broadcast'."\n" + ."\n" + .'> - For "Cloud notification category values" marked as "N/A", these go through the Alibaba Cloud proprietary channel.'."\n" + .'> - For "Local notification category values" marked as "N/A", these go through the Huawei channel.', 'type' => 'string', 'example' => 'VOIP', 'title' => ''], + 'Urgency' => [ + 'description' => 'Huawei channel notification delivery priority. Values:'."\n" + ."\n" + .'- `HIGH`'."\n" + .'- `NORMAL`'."\n" + ."\n" + .'Requires permission application. For details, see: [Application link](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509).', 'type' => 'string', - 'example' => 'michannel', - 'backendName' => 'channel', + 'example' => 'NORMAL', + 'enum' => ['HIGH', 'NORMAL'], + 'title' => '', + ], + 'Importance' => [ + 'description' => 'Sets the Huawei notification message classification importance parameter, which determines the notification behavior on user devices. Values:'."\n" + ."\n" + .'- `0`: Information marketing messages'."\n" + .'- `1`: Service and communication messages'."\n" + ."\n" + .'> It is recommended to use `Category` for notification classification, which requires application on the Huawei platform. [Application link](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section893184112272).', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + 'enum' => ['0', '1'], + 'title' => '', + ], + 'BusinessType' => [ + 'description' => 'Sets the Huawei Quick Notification parameter.'."\n" + .'- **0**: Send standard Huawei notification (default).'."\n" + .'- **1**: Send Huawei Quick Notification.', + 'type' => 'integer', + 'title' => '', + 'example' => '1', + 'format' => 'int32', + 'enum' => ['0', '1'], ], + 'LiveNotificationPayload' => ['description' => 'JSON string of the Huawei Android Live Notification data structure [LiveNotificationPayload](https://developer.huawei.com/consumer/cn/doc/HMSCore-References/rest-live-0000001562939968#ZH-CN_TOPIC_0000001700850537__p195121620102511). For development integration, see the [Huawei Live Notification Push Guide](https://help.aliyun.com/document_detail/2983768.html).', 'type' => 'string', 'title' => '', 'example' => '{'."\n" + .' "activityId": 1,'."\n" + .' "operation": 1,'."\n" + .' "event": "TAXI",'."\n" + .' "activityData": {'."\n" + .' "notificationData": {'."\n" + .' "type": 3'."\n" + .' }'."\n" + .' }'."\n" + .'}'], ], - 'backendName' => 'xiaomi', + 'title' => '', + 'example' => '', ], - 'Vivo' => [ - 'description' => '', - 'visibility' => 'Public', + 'Honor' => [ + 'description' => 'Honor configuration', 'type' => 'object', 'properties' => [ 'Importance' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Sets the Honor notification message classification importance parameter, which determines the notification behavior on user devices. Values:'."\n" + ."\n" + .'- `0`: Information marketing messages'."\n" + .'- `1`: Service and communication messages'."\n" + ."\n" + .'Requires application on the Honor platform. [Application link](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' => 'integer', 'format' => 'int32', 'example' => '0', - 'backendName' => 'importance', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], + 'title' => '', ], + ], + 'title' => '', + 'example' => '', + ], + 'Xiaomi' => [ + 'description' => 'Xiaomi configuration', + 'type' => 'object', + 'properties' => [ + 'Channel' => ['description' => 'Sets the channelId for Xiaomi notification type. Requires application on the Xiaomi platform. See: [Application link](https://dev.mi.com/console/doc/detail?pId=2422#_4).'."\n" + ."\n" + .'> A single application can apply for up to 8 channels on the Xiaomi channel. Please plan ahead.', 'type' => 'string', 'example' => 'michannel', 'title' => ''], + 'FocusParam' => ['description' => 'JSON string of the Xiaomi Super Island data structure [miui.focus.param](https://dev.mi.com/xiaomihyperos/documentation/detail?pId=2131). For development integration, see the [Xiaomi Super Island Push Guide](https://help.aliyun.com/zh/document_detail/3037956.html).', 'type' => 'string', 'title' => '', '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' => 'JSON string of the Xiaomi Super Island data images [miui.focus.pic_xxx](https://dev.mi.com/xiaomihyperos/documentation/detail?pId=2131). For development integration, see the [Xiaomi Super Island Push Guide](https://help.aliyun.com/zh/document_detail/3037956.html).', 'type' => 'string', 'title' => '', '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' => 'Xiaomi private message template ID', 'type' => 'string', 'title' => '', 'example' => 'P10645'], + 'TemplateParams' => ['description' => 'Xiaomi private message template parameters, JSON string', 'type' => 'string', 'title' => '', 'example' => '{"keywords1":"Tom","keywords2":"phone"}'], + ], + 'title' => '', + 'example' => '', + ], + 'Vivo' => [ + 'description' => 'vivo configuration', + 'type' => 'object', + 'properties' => [ 'Category' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'vivo classifies messages into two categories: system messages and operational messages.'."\n" + ."\n" + .'**System messages:**'."\n" + ."\n" + .'- IM: Instant messages'."\n" + .'- ACCOUNT: Account & assets'."\n" + .'- TODO: Schedule & to-do'."\n" + .'- DEVICE_REMINDER: Device information'."\n" + .'- ORDER: Orders & logistics'."\n" + .'- SUBSCRIPTION: Subscription reminders'."\n" + ."\n" + .'**Operational messages:**'."\n" + ."\n" + .'- NEWS: News'."\n" + .'- CONTENT: Content recommendations'."\n" + .'- MARKETING: Operational activities'."\n" + .'- SOCIAL: Social updates'."\n" + ."\n" + .'For details, see [vivo classification documentation](https://dev.vivo.com.cn/documentCenter/doc/359#s-ef3qugc3).', 'type' => 'string', 'example' => 'MARKETING', - 'backendName' => 'category', - 'enum' => [ - 'IM', - 'ACCOUNT', - 'DEVICE_REMINDER', - 'ORDER', - 'TODO', - 'SUBSCRIPTION', - 'NEWS', - 'CONTENT', - 'MARKETING', - 'SOCIAL', - ], + 'enum' => ['IM', 'ACCOUNT', 'DEVICE_REMINDER', 'ORDER', 'TODO', 'SUBSCRIPTION', 'NEWS', 'CONTENT', 'MARKETING', 'SOCIAL'], + 'title' => '', ], - 'ReceiptId' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => '1232221', - 'backendName' => 'receiptId', + 'ReceiptId' => ['description' => 'Message receipt identifier for the vivo vendor push channel, used to receive push result callback notifications.'."\n" + ."\n" + .'> - Location: vivo Open Platform → Push Service → Application Info → Receipt Configuration'."\n" + .'> - Recommendation: Configure the default receipt ID in the Alibaba Cloud EMAS console first.'."\n" + .'> - Usage condition: Only required when the default receipt on the vivo platform is not an Alibaba Cloud receipt.', 'type' => 'string', 'example' => '1232221', 'title' => ''], + 'Importance' => [ + 'description' => 'Sets the vivo notification message classification. Values:'."\n" + ."\n" + .'- `0`: Operational messages (default)'."\n" + .'- `1`: System messages'."\n" + ."\n" + .'> It is recommended to use `Category` for notification classification, which requires application on the vivo platform. See: [Application link](https://dev.vivo.com.cn/documentCenter/doc/359).', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + 'enum' => ['0', '1'], + 'title' => '', ], + 'LiveMessage' => ['description' => 'JSON string of the vivo Atomic Island data structure [liveMessage](https://dev.vivo.com.cn/documentCenter/doc/896#s-fdagzbd4). For development integration, see the [vivo Atomic Island Push Guide](https://help.aliyun.com/zh/document_detail/3030718.html).', 'type' => 'string', 'title' => '', 'example' => '{'."\n" + .' "operation": 0,'."\n" + .' "scene": "HEALTH_REGISTER",'."\n" + .' "templateType": 1,'."\n" + .' "showNotify": true,'."\n" + .' "changeRecord": 999,'."\n" + .' "capsuleData": {'."\n" + .' "bgColor": "#32d4d4"'."\n" + .' }'."\n" + .'}'], ], - 'backendName' => 'vivo', + 'title' => '', + 'example' => '', ], 'Oppo' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'OPPO configuration', 'type' => 'object', 'properties' => [ 'Category' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'OPPO classifies messages into two categories: Communication & Service, and Content & Marketing.'."\n" + ."\n" + .'**Communication & Service (requires permission application):**'."\n" + ."\n" + .'- IM: Instant messages'."\n" + .'- ACCOUNT: Account & assets'."\n" + .'- TODO: Schedule & to-do'."\n" + .'- DEVICE_REMINDER: Device information'."\n" + .'- ORDER: Orders & logistics'."\n" + .'- SUBSCRIPTION: Subscription reminders'."\n" + ."\n" + .'**Content & Marketing:**'."\n" + ."\n" + .'- NEWS: News'."\n" + .'- CONTENT: Content recommendations'."\n" + .'- MARKETING: Operational activities'."\n" + .'- SOCIAL: Social updates'."\n" + ."\n" + .'For details, see [OPPO classification documentation](https://open.oppomobile.com/new/developmentDoc/info?id=13189).', 'type' => 'string', 'example' => 'NEWS', - 'backendName' => 'category', - 'enum' => [ - 'IM', - 'ACCOUNT', - 'DEVICE_REMINDER', - 'ORDER', - 'TODO', - 'SUBSCRIPTION', - 'NEWS', - 'CONTENT', - 'MARKETING', - 'SOCIAL', - ], + 'enum' => ['IM', 'ACCOUNT', 'DEVICE_REMINDER', 'ORDER', 'TODO', 'SUBSCRIPTION', 'NEWS', 'CONTENT', 'MARKETING', 'SOCIAL'], + 'title' => '', ], 'NotifyLevel' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'OPPO channel notification bar message alert level. Allowed values:'."\n" + ."\n" + .'- `1`: Notification bar'."\n" + .'- `2`: Notification bar, lock screen, ringtone, vibration (default notification level for Communication & Service messages)'."\n" + .'- `16`: Notification bar, lock screen, ringtone, vibration, banner (requires permission application)'."\n" + ."\n" + .'> When using the `NotifyLevel` parameter, the `Category` parameter must also be provided.', 'type' => 'integer', 'format' => 'int64', 'example' => '1', - 'backendName' => 'notifyLevel', - 'enum' => [ - '1', - '2', - '16', - ], + 'enum' => ['1', '2', '16'], + 'title' => '', ], + 'PrivateMsgTemplateId' => ['description' => 'OPPO private message template ID', 'type' => 'string', 'title' => '', 'example' => '687557242b1634hzefs3d5013'], + 'PrivateTitleParameters' => ['description' => 'OPPO private message template title parameters', 'type' => 'string', 'title' => '', 'example' => '{"name": "张三"}'], + 'PrivateContentParameters' => ['description' => 'OPPO private message template content parameters', 'type' => 'string', 'title' => '', 'example' => '{'."\n" + .'"key1": "value1",'."\n" + .'"key2": "value2"'."\n" + .'}'], + 'IntelligentIntent' => ['description' => 'JSON string of the OPPO Fluid Cloud intent sharing data structure [IntelligentIntent](https://open.oppomobile.com/documentation/page/info?id=13565). For development integration, see the [OPPO Fluid Cloud Push Guide](https://help.aliyun.com/document_detail/2997310.html).', 'type' => 'string', 'title' => '', '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' => 'JSON string of the OPPO Fluid Cloud intent deletion data structure [data](https://open.oppomobile.com/documentation/page/info?id=13578). This parameter is ignored when the AndroidOppoIntelligentIntent parameter is already set. For development integration, see the [OPPO Fluid Cloud Push Guide](https://help.aliyun.com/document_detail/2997310.html).', 'type' => 'string', 'title' => '', 'example' => '{'."\n" + .' "intentName": "Example.Progress",'."\n" + .' "entityIds": ['."\n" + .' "A580202509130712"'."\n" + .' ],'."\n" + .' "serviceId": {'."\n" + .' "launcher": "999800001",'."\n" + .' "fluidCloud": "999900001"'."\n" + .' }'."\n" + .'}'], ], - 'backendName' => 'oppo', + 'title' => '', + 'example' => '', ], - 'Huawei' => [ - 'description' => '', - 'visibility' => 'Public', + 'Meizu' => [ + 'description' => 'Meizu configuration', 'type' => 'object', 'properties' => [ - 'Importance' => [ - 'description' => '', - 'visibility' => 'Public', + 'NoticeMsgType' => [ + 'description' => 'Meizu message type'."\n" + ."\n" + .'- 0: Public message (default)'."\n" + .'- 1: Private message', 'type' => 'integer', - 'format' => 'int32', + 'title' => '', 'example' => '0', - 'backendName' => 'importance', - 'enum' => [ - '0', - '1', - ], - ], - 'ReceiptId' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'RCP4C123456', - 'backendName' => 'receiptId', - ], - 'Category' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'VOIP', - 'backendName' => 'category', - ], - 'Urgency' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'NORMAL', - 'backendName' => 'urgency', - 'enum' => [ - 'HIGH', - 'NORMAL', - ], - ], - ], - 'backendName' => 'huawei', - ], - 'Accs' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'object', - 'properties' => [ - 'NotifyType' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'NONE', - 'backendName' => 'notifyType', - 'enum' => [ - 'VIBRATE', - 'SOUND', - 'BOTH', - 'NONE', - ], - ], - 'OpenType' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'APPLICATION', - 'backendName' => 'openType', - 'enum' => [ - 'APPLICATION', - 'ACTIVITY', - 'URL', - 'NONE', - ], - ], - 'ThreadId' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'order_ORD20231201001', - 'backendName' => 'threadId', - ], - 'Priority' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', 'format' => 'int32', - 'example' => '0', - 'backendName' => 'priority', - ], - 'OpenUrl' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'www.example.com', - 'backendName' => 'openUrl', - ], - 'CustomStyle' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - 'backendName' => 'customStyle', - ], - 'OpenActivity' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - 'backendName' => 'openActivity', + 'enum' => ['0', '1'], ], ], - 'backendName' => 'accs', + 'title' => '', + 'example' => '', ], ], - 'backendName' => 'options', - ], - 'VendorChannelActivity' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - 'backendName' => 'vendorChannelActivity', - ], - 'RenderStyle' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => '0', - 'backendName' => 'renderStyle', - 'enum' => [ - 'NORMAL', - 'BIG_TEXT', - 'BIG_PICTURE', - 'MULTI_LINE', - ], - ], - 'BadgeAddNum' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - 'backendName' => 'badgeAddNum', - ], - 'ImageUrl' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'https://imag.example.com/image.png', - 'backendName' => 'imageUrl', - ], - 'ExtParameters' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => '{"key1":"value1"}', - 'backendName' => 'extParameters', - ], - 'ChannelId' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => '8.0up', - 'backendName' => 'channelId', - ], - 'BadgeActivity' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - 'backendName' => 'badgeActivity', - ], - 'GroupId' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'group-1', - 'backendName' => 'groupId', - ], - 'Music' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'alicloud_notification_sound', - 'backendName' => 'music', - ], - 'PictureUrl' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'https://imag.example.com/image.png', - 'backendName' => 'pictureUrl', - ], - 'TestMessage' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'boolean', - 'example' => 'false', - 'backendName' => 'testMessage', - ], - 'BadgeSetNum' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '4', - 'backendName' => 'badgeSetNum', - ], - 'NotifyId' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '233856727', - 'backendName' => 'notifyId', + 'title' => '', + 'example' => '', ], ], - 'backendName' => 'android', + 'title' => '', + 'example' => '', ], ], - 'backendName' => 'notification', + 'title' => '', + 'example' => '', ], 'Options' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Push options', 'type' => 'object', 'properties' => [ - 'PushTime' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => '2025-06-19T12:00:00Z', - 'backendName' => 'pushTime', - ], - 'JobKey' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'jobkey1727749697913', - 'backendName' => 'jobKey', - ], - 'Trim' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'boolean', - 'example' => 'false', - 'backendName' => 'trim', - ], + 'UseChannels' => ['description' => 'Specifies the delivery channels. Values:'."\n" + ."\n" + .'- `accs` Alibaba Cloud proprietary channel'."\n" + .'- `huawei` Huawei channel'."\n" + .'- `honor` Honor channel'."\n" + .'- `xiaomi` Xiaomi channel'."\n" + .'- `oppo` OPPO channel'."\n" + .'- `vivo` vivo channel'."\n" + .'- `meizu` Meizu channel'."\n" + .'- `fcm` Google Firebase channel (HTTP v1 API)'."\n" + .'- `apns` APNs channel'."\n" + .'- `harmony` HarmonyOS channel'."\n" + ."\n" + .'> - If this parameter is not configured, all channels are available.'."\n" + .'> - If configured, only the specified channels will be used.'."\n" + .'> - If the configured channels conflict with the delivery strategy (e.g., iOS notification should only go through APNs channel, but this parameter does not include apns), delivery will not be performed.', 'type' => 'string', 'example' => 'accs,apns', 'title' => ''], + 'PushTime' => ['description' => 'Specifies the message delivery time, up to 7 days in the future. Only effective when the `Action` parameter is `SCHEDULED_PUSH`.'."\n" + ."\n" + .'> Uses the ISO 8601 standard with UTC time, in the format yyyy-MM-ddTHH:mm:ssZ.', 'type' => 'string', 'example' => '2025-06-19T12:00:00Z', 'title' => ''], + 'ExpireTime' => ['description' => 'Sets the message expiration time. Messages will no longer be sent after expiration, with a maximum retention of 72 hours.'."\n" + ."\n" + .'> * Uses the ISO 8601 standard with UTC time, in the format YYYY-MM-DDThh:mm:ssZ.'."\n" + .'> * The expiration time must satisfy: ExpireTime > PushTime + 3 seconds (3 seconds is the margin for network and system latency).'."\n" + .'> * Recommendation: Set the expiration time to no less than 1 minute for single push, and no less than 10 minutes for full or batch push.'."\n" + ."\n\n" + .'><notice>For pass-through messages, not setting an expiration time means only online delivery. When the device is offline, the message will be discarded.></notice>', 'type' => 'string', 'example' => '2025-06-21T12:00:00Z', 'title' => ''], + 'JobKey' => ['description' => 'Custom identifier for the push task. When JobKey is not empty, the receipt log will include this field. See [Receipt logs](https://help.aliyun.com/document_detail/434651.html) for viewing receipt logs.', 'type' => 'string', 'example' => 'jobkey1727749697913', 'title' => ''], + 'Trim' => ['description' => 'Whether to automatically truncate titles and content that exceed length limits.'."\n" + ."\n" + .'> Only applicable to vendor channels that explicitly limit title and content length. Not applicable to APNs, Huawei, Honor channels, etc., which only limit the total request body size rather than title/content individually.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], 'Sms' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'Supplementary SMS delivery.'."\n" + ."\n" + .'> Currently only supports `Android` and `HarmonyOS` devices.', 'type' => 'object', 'properties' => [ + 'TemplateName' => ['description' => 'SMS template name. Can be obtained from the SMS template management interface. This is the system-assigned name, not the name set by the developer.', 'type' => 'string', 'example' => 'SMS_123456789', 'title' => ''], + 'SignName' => ['description' => 'SMS signature.', 'type' => 'string', 'example' => '某某科技', 'title' => ''], + 'Params' => ['description' => 'Key-value pairs for SMS template variables.', 'type' => 'string', 'example' => 'key1=value1&key2=value2', 'title' => ''], + 'DelaySecs' => ['description' => 'Delay time for triggering SMS, in seconds.'."\n" + ."\n" + .'Must be set when using SMS linkage. Recommended to be set to 15 seconds or more, with a maximum of 3 days, to avoid duplication between SMS and push notifications.'."\n" + ."\n" + .'> When using SMS linkage, the ExpireTime parameter is ineffective. The notification expiration time is calculated based on the DelaySecs parameter, with the expiration time being the current time plus the DelaySecs value.', 'type' => 'integer', 'format' => 'int64', 'example' => '150', 'title' => ''], 'SendPolicy' => [ - 'description' => '', - 'visibility' => 'Public', + 'description' => 'SMS delivery policy.', + 'enumValueTitles' => ['PUSH_NOT_RECEIVED' => 'Triggered when push is not received', 'USER_NOT_OPENED' => 'Triggered when user has not opened'], 'type' => 'string', - 'enumValueTitles' => [ - 'PUSH_NOT_RECEIVED' => '', - 'USER_NOT_OPENED' => '', - ], 'example' => 'PUSH_NOT_RECEIVED', - 'backendName' => 'sendPolicy', - 'enum' => [ - 'PUSH_NOT_RECEIVED', - 'USER_NOT_OPENED', - ], - ], - 'TemplateName' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'SMS_123456789', - 'backendName' => 'templateName', - ], - 'Params' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'key1=value1&key2=value2', - 'backendName' => 'params', - ], - 'SignName' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => '', - 'backendName' => 'signName', - ], - 'DelaySecs' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '150', - 'backendName' => 'delaySecs', + 'enum' => ['PUSH_NOT_RECEIVED', 'USER_NOT_OPENED'], + 'title' => '', ], ], - 'backendName' => 'sms', - ], - 'UseChannels' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => 'accs,apns', - 'backendName' => 'useChannels', - ], - 'ExpireTime' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'string', - 'example' => '2025-06-21T12:00:00Z', - 'backendName' => 'expireTime', - ], - 'MessageId' => [ - 'description' => '', - 'visibility' => 'Public', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1174754033128****', - 'backendName' => 'messageId', + 'title' => '', + 'example' => '', ], + 'MessageId' => ['description' => 'Unique ID used to identify the message. Only effective when the `Action` parameter is `CONTINUOUS_PUSH`.', 'type' => 'integer', 'format' => 'int64', 'example' => '1174754033128****', 'title' => ''], ], - 'backendName' => 'options', + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], ], ], 'apis' => [ - 'Push' => [ - 'summary' => '高级推送接口', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'BindAlias' => [ + 'summary' => 'Attach an alias to a device.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREemasBNY9P0', - 'FEATUREemasTZ8VEZ', + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'Your AppKey.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], + ], + [ + 'name' => 'DeviceId', + 'in' => 'query', + 'schema' => ['description' => 'The unique identifier of the device in Mobile Push. It is 32 characters long and contains only numbers and lowercase letters.', 'type' => 'string', 'required' => true, 'example' => 'e2ba19de97604f55b16557673****', 'title' => ''], + ], + [ + 'name' => 'AliasName', + 'in' => 'query', + 'schema' => ['description' => 'The alias to attach.'."\n" + ."\n" + .'You can attach up to 10 aliases in one request. Separate multiple aliases with commas. Each alias can be up to 128 bytes long. Chinese characters count as three bytes each. A device can have up to 128 aliases attached. An alias can be attached to up to 128 devices.', 'type' => 'string', 'required' => true, 'example' => 'test_alias', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '159E4422-6624-4750-8943-DFD98D34858C', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + ], + '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' => 'The request processing has failed due to some unknown error.'], ], ], + 'title' => 'Attach Alias', + 'description' => 'You can attach up to 10 aliases in a single request. The attachment takes effect immediately.', + 'changeSet' => [ + ['createdAt' => '2021-12-27T12:34:38.000Z', 'description' => 'Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"159E4422-6624-4750-8943-DFD98D34858C\\"\\n}","type":"json"}]', + ], + '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' => '', + 'description' => 'AppKey information.', + 'enumValueTitles' => [23793506 => '23793506', 24738888 => '24738888', 27725900 => '27725900', 27819095 => '27819095'], 'type' => 'integer', 'format' => 'int64', 'required' => true, - 'docRequired' => true, - 'example' => '23267207', + 'example' => '27725900', + 'title' => '', ], ], [ - 'name' => 'PushType', + 'name' => 'DeviceId', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'The unique identity of the device, 32-bit, a combination of numbers and lowercase letters.', + 'enumValueTitles' => ['abcdef1d83d04d34807d229999eefa52' => 'abcdef1d83d04d34807d229999eefa52'], 'type' => 'string', 'required' => true, - 'docRequired' => true, - 'example' => 'MESSAGE', - 'enum' => [ - 'MESSAGE', - 'NOTICE', - ], + 'example' => 'eb5f741d83d04d34807d229999eefa52', + 'title' => '', ], ], [ - 'name' => 'DeviceType', + 'name' => 'PhoneNumber', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Phone number.', + 'enumValueTitles' => [23456789102 => '23456789102'], 'type' => 'string', 'required' => true, - 'docRequired' => true, - 'example' => 'ALL', - 'enum' => [ - 'iOS', - 'ANDROID', - 'ALL', - ], + 'example' => '1381111****', + 'title' => '', ], ], - [ - 'name' => 'Target', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'Request ID.', 'type' => 'string', 'example' => '0D1126F0-F8FF-513D-BAFA-F140447BDED4', 'title' => ''], + ], 'description' => '', - 'type' => 'string', - 'required' => true, - 'docRequired' => true, - 'example' => 'ALL', - 'enum' => [ - 'ALL', - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - 'TAG', - 'TBD', - 'FILE', + 'title' => '', + 'example' => '', + ], + ], + ], + 'title' => 'Attach Phone Number', + 'summary' => 'Attaches a device to a phone number.', + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:39.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:39.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:39.000Z', 'description' => 'Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0D1126F0-F8FF-513D-BAFA-F140447BDED4\\"\\n}","type":"json"}]', + ], + 'BindTag' => [ + 'summary' => 'Binds tags to specified device targets. Tag bindings take effect within 10 minutes.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'TargetValue', + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'The AppKey of your application.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], + ], + [ + 'name' => 'ClientKey', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the target device. You can specify a maximum of 1,000 device IDs.', 'type' => 'string', 'required' => true, 'example' => 'e2ba19de97604f55b16557673****', 'title' => ''], + ], + [ + 'name' => 'KeyType', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'The type of the `ClientKey`. Valid value:'."\n" + ."\n" + .'- **DEVICE**: Indicates a device target.', + 'enumValueTitles' => [], 'type' => 'string', 'required' => true, - 'docRequired' => true, - 'example' => 'ALL', + 'enum' => ['DEVICE', 'ACCOUNT', 'ALIAS'], + 'example' => 'DEVICE', + 'title' => '', ], ], [ - 'name' => 'StoreOffline', + 'name' => 'TagName', 'in' => 'query', + 'schema' => ['description' => 'The tags to bind. Separate multiple tags with commas (,). You can bind up to 10 tags per request.'."\n" + .'A tag name can be up to 128 characters long (each Chinese character counts as 1 character). Each application can have up to 10,000 tags. A single device can be bound to multiple tags.'."\n" + ."\n" + .'><notice>'."\n" + ."\n" + .'Do not bind a single tag to more than 100,000 devices. This practice can increase push processing time and increase response time.'."\n" + ."\n" + .'- Use the full push feature to send notifications to all devices.'."\n" + ."\n" + .'- Split the device set into multiple fine-grained tags and call the push API in batches.'."\n" + ."\n" + .'></notice>'."\n" + ."\n" + .'> - If you attempt to bind the same tag multiple times, the system automatically removes the duplicates.'."\n" + .'>'."\n" + .'> - When a user uninstalls the application from a device, the tags associated with that device are automatically unbound. This unbinding process may be slightly delayed.', 'type' => 'string', 'required' => true, 'example' => 'test_tag,test_tag2', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '82FD0A09-5BB8-40FB-8221-9A11FE92D620', 'title' => ''], + ], 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', + 'title' => '', + 'example' => '', + ], + ], + ], + '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' => 'The request processing has failed due to some unknown error.'], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"82FD0A09-5BB8-40FB-8221-9A11FE92D620\\"\\n}","type":"json"}]', + 'title' => 'Attach Tags ', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2021-12-27T12:34:38.000Z', 'description' => 'Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + ], + 'CancelPush' => [ + 'summary' => 'Cancels a scheduled push task that has not yet been executed.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'SendChannels', + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'Your AppKey.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], + ], + [ + 'name' => 'MessageId', 'in' => 'query', + 'schema' => ['description' => 'The message ID of the push task to cancel.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '501029', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], + ], 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'accs,huawei,xiaomi', + 'title' => '', + 'example' => '', + ], + ], + ], + 'title' => 'Cancel Scheduled Push Task', + 'changeSet' => [ + ['createdAt' => '2024-01-22T14:27:53.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:53.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:53.000Z', 'description' => 'Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', + ], + 'CheckCertificate' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'PushTime', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', 'in' => 'query', + 'schema' => ['description' => 'The AppKey of the application.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'maximum' => '1000000000', 'minimum' => '0', 'example' => '23267207', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ + 'properties' => [ + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], + 'Android' => [ + 'description' => 'Indicates whether the AppKey belongs to an Android app:'."\n" + ."\n" + .'- true'."\n" + ."\n" + .'- false', + 'enumValueTitles' => ['true' => 'true', 'false' => 'false'], + 'type' => 'boolean', + 'example' => 'false', + 'title' => '', + ], + 'IOS' => [ + 'description' => 'Indicates whether the AppKey belongs to an iOS app:'."\n" + ."\n" + .'- true'."\n" + ."\n" + .'- false', + 'enumValueTitles' => ['true' => 'true', 'false' => 'false'], + 'type' => 'boolean', + 'example' => 'true', + 'title' => '', + ], + 'ProductionCertInfo' => [ + 'description' => 'The information about the certificate for the production environment.', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the certificate. Valid values:'."\n" + ."\n" + .'- **EXPIRED**: The certificate is expired.'."\n" + ."\n" + .'- **NOT\\_CONFIGURED**: The certificate is not configured.'."\n" + ."\n" + .'- **NO\\_PASSWORD**: The password for the certificate is not configured.'."\n" + ."\n" + .'- **OK**: The certificate is normal.'."\n" + ."\n" + .'- **REVOKED**: The certificate is revoked.', + 'enumValueTitles' => ['REVOKED' => 'REVOKED', 'NO_PASSWORD' => 'NO\\_PASSWORD', 'EXPIRED' => 'EXPIRED', 'NOT_CONFIGURED' => 'NOT\\_CONFIGURED', 'OK' => 'OK'], + 'type' => 'string', + 'example' => 'OK', + 'title' => '', + ], + 'ExipreTime' => ['description' => 'The expiration time of the certificate.', 'type' => 'integer', 'format' => 'int64', 'example' => '1764561600000', 'title' => ''], + ], + 'type' => 'object', + 'title' => '', + 'example' => '', + ], + 'DevelopmentCertInfo' => [ + 'description' => 'The information about the certificate for the development or sandbox environment.', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the certificate. Valid values:'."\n" + ."\n" + .'- **EXPIRED**: The certificate is expired.'."\n" + ."\n" + .'- **NOT\\_CONFIGURED**: The certificate is not configured.'."\n" + ."\n" + .'- **NO\\_PASSWORD**: The password for the certificate is not configured.'."\n" + ."\n" + .'- **OK**: The certificate is normal.'."\n" + ."\n" + .'- **REVOKED**: The certificate is revoked.', + 'enumValueTitles' => ['REVOKED' => 'REVOKED', 'NO_PASSWORD' => 'NO\\_PASSWORD', 'EXPIRED' => 'EXPIRED', 'NOT_CONFIGURED' => 'NOT\\_CONFIGURED', 'OK' => 'OK'], + 'type' => 'string', + 'example' => 'EXPIRED', + 'title' => '', + ], + 'ExipreTime' => ['description' => 'The expiration time of the certificate.', 'type' => 'integer', 'format' => 'int64', 'example' => '1470024000000', 'title' => ''], + ], + 'type' => 'object', + 'title' => '', + 'example' => '', + ], + ], + 'type' => 'object', 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '2019-02-20T00:00:00Z', + 'title' => '', + 'example' => '', ], ], + ], + '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' => 'The request processing has failed due to some unknown error.'], + ], + ], + 'title' => 'Query certificate status', + 'summary' => 'Checks the expiration time and current status of the iOS certificate for a specified app.', + 'description' => '- If the returned ExpireTime value is later than the current timestamp, the certificate is not necessarily valid. Also verify that the Status is OK.'."\n" + ."\n" + .'- The REVOKED status originates from the Apple Push Notification service (APNs) server. If a certificate has a REVOKED status, at least one push notification to APNs has failed in the corresponding environment.', + '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' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","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}","type":"json"}]', + ], + 'CheckDevice' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'ExpireTime', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => true, + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', 'in' => 'query', + 'schema' => ['description' => 'The AppKey value.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23419851', 'title' => ''], + ], + [ + 'name' => 'DeviceId', + 'in' => 'query', + 'schema' => ['description' => 'The unique identity of the device in Push. It is 32 characters long and contains only digits and lowercase letters.', 'type' => 'string', 'required' => true, 'example' => 'ae296f3b04a58a05b30c95f****', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Available' => ['description' => 'Indicates whether the device is active.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], + ], 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '2019-02-20T00:00:00Z', + 'title' => '', + 'example' => '', + ], + ], + ], + 'staticInfo' => [ + 'substitutions' => ['Push::2016-08-01::CheckDevices'], + ], + 'title' => 'Authenticate Device Validity', + 'summary' => 'Validates the specified (device).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2022-03-31T08:27:33.000Z', 'description' => 'Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Available\\": true,\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', + ], + 'CheckDevices' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'JobKey', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', + 'in' => 'query', + 'schema' => ['description' => 'The AppKey value.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23419851', 'title' => ''], + ], + [ + 'name' => 'DeviceIds', 'in' => 'query', + 'schema' => ['description' => 'The unique identifier for each device in the push service. Each ID is 32 characters long and contains only digits and lowercase letters. Separate multiple IDs with commas. You can check up to 100 devices per request.', 'type' => 'string', 'required' => true, 'example' => 'ae296f3b04a58a05b30c95f****,ae296f3b04a58a05b30c95f****,ae296f3b04a58a05b30c95f****', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], + 'DeviceCheckInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DeviceCheckInfo' => [ + 'description' => 'The results of the batch device validation.', + 'type' => 'array', + 'items' => [ + 'properties' => [ + 'DeviceId' => ['description' => 'The device ID.', 'type' => 'string', 'example' => 'ae296f3b04a58a05b30c95f****', 'title' => ''], + 'Available' => ['description' => 'Indicates whether the device is active.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + ], + 'type' => 'object', + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + 'type' => 'object', 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '123', + 'title' => '', + 'example' => '', ], ], + ], + 'title' => 'Batch check device validity', + 'summary' => 'Validate a specified group of devices.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-01-24T15:21:51.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-24T15:21:51.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-24T15:21:51.000Z', 'description' => 'Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"DeviceCheckInfos\\": {\\n \\"DeviceCheckInfo\\": [\\n {\\n \\"DeviceId\\": \\"ae296f3b04a58a05b30c95f****\\",\\n \\"Available\\": true\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'CompleteContinuouslyPush' => [ + 'summary' => 'Manually ends a continuous push task.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'Title', + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', 'in' => 'query', + 'schema' => ['description' => 'The AppKey value.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], + ], + [ + 'name' => 'MessageId', + 'in' => 'query', + 'schema' => ['description' => 'The message ID.'."\n" + ."\n" + .'This ID is returned after you call the Push operation and set Target to TBD. It identifies a message saved in the push system.', 'type' => 'string', 'required' => true, 'example' => '500131', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'MessageId' => ['description' => 'The message ID for the push request.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '500131', 'title' => ''], + ], 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'title', + 'title' => '', + 'example' => '', ], ], + ], + 'title' => 'Complete a Continuous Push Task ', + 'description' => 'If you do not call this operation, the continuous push task automatically ends when it reaches its time-to-live (TTL).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-01-22T14:27:53.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CompleteContinuouslyPush'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ [ - 'name' => 'Body', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:CompleteContinuouslyPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"RequestId\\": \\"500131\\"\\n}","type":"json"}]', + ], + 'ContinuouslyPush' => [ + 'summary' => 'Executes a predefined continuous push task.', + '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 information.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'example' => '23267207', 'title' => ''], + ], + [ + 'name' => 'MessageId', + 'in' => 'query', + 'schema' => ['description' => 'Message ID.'."\n" + ."\n" + .'Obtain this MessageId by calling the Push API with Target set to TBD. It represents a message already saved in the push system.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => '500131', 'title' => ''], + ], + [ + 'name' => 'Target', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Push target:'."\n" + ."\n" + .'- **DEVICE**: Push by device'."\n" + ."\n" + .'- **ACCOUNT**: Push by account'."\n" + ."\n" + .'- **ALIAS**: Push by alias'."\n" + ."\n" + .'Continuous push supports only these three target types.', 'type' => 'string', - 'required' => false, + 'required' => true, 'docRequired' => true, - 'example' => 'hello', + 'enum' => ['DEVICE', 'ACCOUNT', 'ALIAS'], + 'example' => 'DEVICE', + 'title' => '', ], ], [ - 'name' => 'Trim', + 'name' => 'TargetValue', 'in' => 'query', + 'schema' => ['description' => 'Specify values based on Target. Separate multiple values with commas. If you exceed the limit, split the push into multiple calls.'."\n" + ."\n" + .'- Target=DEVICE: values such as `deviceid1,deviceid2` (up to 1,000 supported).'."\n" + ."\n" + .'- Target=ACCOUNT: values such as `account1,account2` (up to 1,000 supported).'."\n" + ."\n" + .'- Target=ALIAS: values such as `alias1,alias2` (up to 1,000 supported).', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'a692961a92534047ad3625****', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ + 'properties' => [ + 'MessageId' => ['description' => 'The message ID that identifies a push request.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], + 'RequestId' => ['description' => 'Request ID.', 'type' => 'string', 'example' => '500131', 'title' => ''], + ], + 'type' => 'object', 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', + 'title' => '', + 'example' => '', ], ], + ], + 'title' => 'ContinuouslyPush', + 'description' => 'This API addresses the limitations of the [Push Advanced Push API](~~2249916~~), where push-by-device, push-by-account, and push-by-alias operations each have a maximum target count per single call.'."\n" + ."\n" + .'- You can use continuous push when your scenario requires sending the same message to many devices. In this case, you can call the continuous push API repeatedly, each time specifying a group of targets for aggregation (the current limit is 1,000 targets per call for device, account, or alias pushes). The total number of pushes for the same MessageId is restricted to 10,000. If you need a higher limit, contact technical support to evaluate your specific scenario.'."\n" + ."\n" + .'- Before using this API, you must first call the Push API with Target set to TBD (To Be Determined) and include your message content. This returns a MessageId from the push system. You can then use this MessageId to repeatedly call the continuous push API, specifying different target groups to deliver the same message.'."\n" + ."\n" + .'- After calling the Push API with Target set to TBD and obtaining a MessageId, the message is stored in the push system for 24 hours by default. You can use this API to push to specified targets at any time before expiration. Pushes are not allowed after expiration or after reaching the total push limit.'."\n" + ."\n" + .'- Each call to this API sends the message immediately. Scheduled pushes are not supported.', + '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' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"RequestId\\": \\"500131\\"\\n}","type":"json"}]', + ], + 'ListSummaryApps' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'iOSApnsEnv', - 'in' => 'query', + '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' => 'Request ID.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], + 'SummaryAppInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SummaryAppInfo' => [ + 'description' => 'Application details, a collection of SummaryAppInfo.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'AppKey' => ['description' => 'AppKey information.', 'type' => 'integer', 'format' => 'int64', 'example' => '23****07', 'title' => ''], + 'AppName' => ['description' => 'Application name.', 'type' => 'string', 'example' => 'abc', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'DEV', - 'enum' => [ - 'PRODUCT', - 'DEV', + 'title' => '', + 'example' => '', + ], + ], + ], + 'staticInfo' => [ + 'substitutions' => ['Mhub::2017-08-25::ListApps'], + ], + 'title' => 'Query the list of applications created by the user', + 'summary' => 'Retrieve the list of all applications associated with your Alibaba Cloud account.', + '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' => 'All Resource', 'arn' => '*'], ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"SummaryAppInfos\\": {\\n \\"SummaryAppInfo\\": [\\n {\\n \\"AppKey\\": 0,\\n \\"AppName\\": \\"abc\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'ListTags' => [ + 'summary' => 'Queries the tags of an app. A maximum of 100 records are returned.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'iOSRemind', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppKey', 'in' => 'query', + 'schema' => ['description' => 'AppKey information.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'Request ID.', 'type' => 'string', 'example' => '6EEF262B-EA7D-41DC-89B9-20F3D1E28194', 'title' => ''], + 'TagInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'TagInfo' => [ + 'description' => 'Tag list.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TagName' => ['description' => 'Tag name.', 'type' => 'string', 'example' => 'test_tag2', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 500 => [ + ['errorCode' => 'Timeout', 'errorMessage' => 'The request processing is timeout.', 'description' => 'Request processing timed out.'], + ['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' => 'The request processing has failed due to some unknown error.'], + ], + ], + 'title' => 'Obtain the tag list', + 'changeSet' => [ + ['createdAt' => '2024-01-24T15:21:50.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-24T15:21:50.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-24T15:21:50.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListTags'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ [ - 'name' => 'iOSSubtitle', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'su\'b', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'mpush:ListTags', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', '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' => 'Push different messages/notifications to different devices in batch.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'iOSRemindBody', + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeNodes' => ['FEATUREemasBNY9P0', 'FEATUREemasTZ8VEZ'], + ], + 'parameters' => [ + [ + 'name' => 'AppKey', 'in' => 'query', + 'schema' => ['description' => 'AppKey information.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'example' => '23267207', 'title' => ''], + ], + [ + 'name' => 'PushTask', + 'in' => 'formData', + 'style' => 'repeatList', 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, + 'description' => 'An array of independent push tasks.', + 'type' => 'array', + 'items' => [ + 'description' => 'An independent push task.', + 'type' => 'object', + 'properties' => [ + 'PushType' => [ + 'description' => 'Push type. Valid values:'."\n" + ."\n" + .'- MESSAGE: indicates a message.'."\n" + .'- NOTICE: indicates a notification.', + 'enumValueTitles' => ['MESSAGE' => 'MESSAGE', 'NOTICE' => 'NOTICE'], + 'type' => 'string', + 'required' => true, + 'example' => 'MESSAGE', + 'title' => '', + ], + 'DeviceType' => [ + 'description' => 'Device type. Valid values:'."\n" + ."\n" + .'- HARMONY: HarmonyOS device'."\n" + .'- iOS: iOS device'."\n" + .'- ANDROID: Android device'."\n" + .'- ALL: When the AppKey is for a legacy dual-platform app, this pushes to both Android and iOS devices simultaneously. When the AppKey is for a new single-platform app, the effect is the same as specifying the device type corresponding to the app type.', + 'enumValueTitles' => ['ALL' => 'ALL', 'ANDROID' => 'ANDROID', 'iOS' => 'iOS'], + 'type' => 'string', + 'required' => true, + 'example' => 'HARMONY', + 'title' => '', + ], + 'Target' => [ + 'description' => 'Push target. Valid values:'."\n" + ."\n" + .'- DEVICE: push by device.'."\n" + .'- ACCOUNT: push by account.'."\n" + .'- ALIAS: push by alias.', + 'enumValueTitles' => ['ACCOUNT' => 'ACCOUNT', 'ALIAS' => 'ALIAS', 'DEVICE' => 'DEVICE'], + 'type' => 'string', + 'required' => true, + 'example' => 'DEVICE', + 'title' => '', + ], + 'TargetValue' => ['description' => 'Set based on Target. Multiple values are separated by commas. If the limit is exceeded, you need to split the push into multiple calls.'."\n" + ."\n" + .'- Target=DEVICE: values such as `deviceid1,deviceid2` (up to 1,000 supported).'."\n" + .'- Target=ACCOUNT: values such as `account1,account2` (up to 1,000 supported).'."\n" + .'- Target=ALIAS: values such as `alias1,alias2` (up to 1,000 supported).', 'type' => 'string', 'required' => true, 'example' => 'deviceid1,deviceid2', 'title' => ''], + 'StoreOffline' => ['description' => 'Whether to store offline messages/notifications. StoreOffline defaults to false.'."\n" + ."\n" + .'If stored, when the user is offline during push, the message will be resent when the user comes online within the expiration time (ExpireTime). ExpireTime defaults to 72 hours. iOS notifications are delivered through the APNs channel and are not affected by StoreOffline.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + 'SendChannels' => ['description' => 'Specify sending channels. Valid values:'."\n" + ."\n" + .'- accs: Alibaba Cloud proprietary channel'."\n" + .'- huawei: Huawei channel'."\n" + .'- honor: Honor channel'."\n" + .'- xiaomi: Xiaomi channel'."\n" + .'- oppo: OPPO channel'."\n" + .'- vivo: vivo channel'."\n" + .'- meizu: Meizu channel'."\n" + .'- gcm: Google GCM channel (legacy HTTP)'."\n" + .'- fcm: Google Firebase channel (HTTP v1 API)'."\n" + .'- apns: APNs channel'."\n" + .'- harmony: HarmonyOS channel'."\n" + ."\n" + .'>- If this parameter is not configured, all channels are available.'."\n" + .'>- If this parameter is configured, only the specified channels are used.'."\n" + .'>- If the configured channels conflict with the sending strategy (e.g., iOS notifications only go through the APNs channel, but this parameter does not include apns), the push will not be sent.'."\n" + .'>- If gcm is configured, both Google GCM and FCM channels can be used. If fcm is configured, only the Google FCM channel can be used.', 'type' => 'string', 'required' => false, 'example' => 'accs,huawei,xiaomi', 'title' => ''], + 'PushTime' => ['description' => 'Used for scheduled sending. If not set, the default is immediate sending.'."\n" + ."\n" + .'The time format follows the ISO 8601 standard and must use UTC time in the format YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'required' => false, 'example' => '2019-02-20T00:00:00Z', 'title' => ''], + 'ExpireTime' => ['description' => 'Expiration time of offline messages/notifications. Used together with StoreOffline. Expired messages will no longer be sent. The maximum retention period is 72 hours. The default is 72 hours.'."\n" + ."\n" + .'The time format follows the ISO 8601 standard and must use UTC time in the format YYYY-MM-DDThh:mm:ssZ. The expiration time cannot be earlier than the current time or the scheduled push time plus 3 seconds (`ExpireTime > PushTime + 3 seconds`). The 3-second buffer accounts for network and system latency. We recommend at least 1 minute for unicast pushes and at least 10 minutes for broadcast and batch pushes.', 'type' => 'string', 'required' => false, 'example' => '2019-02-20T00:00:00Z', 'title' => ''], + 'JobKey' => ['description' => 'Custom identifier for the push task. When JobKey is not empty, this field will be included in the receipt logs. For receipt log details, see [Receipt Logs](~~434651~~).', 'type' => 'string', 'required' => false, 'example' => '123', 'title' => ''], + 'Title' => ['description' => 'Title of the notification/message during push. Length limit: 200 bytes.'."\n" + .'Required for Android and HarmonyOS pushes. Optional for iOS push notifications. If provided:'."\n" + .'* iOS 10+: the notification displays the title.'."\n" + .'* iOS 8.2 <= iOS version < iOS 10: replaces the notification app name.', 'type' => 'string', 'required' => false, 'example' => 'title', 'title' => ''], + 'Body' => ['description' => 'Content of the notification/message for Android and HarmonyOS pushes; iOS message/notification content. The push content size is limited. See [Product Limits](~~92832~~).', 'type' => 'string', 'required' => false, 'example' => 'hello', 'title' => ''], + 'Trim' => ['description' => 'Whether to automatically truncate titles and content that are too long.'."\n" + .'Note: This only applies to vendor channels that explicitly limit title and content length. It does not apply to channels like APNs, Huawei, and Honor that do not limit title and content individually but only limit the total request body size.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], + 'iOSApnsEnv' => [ + 'description' => 'iOS notifications are sent through the APNs center. You need to specify the corresponding environment information.'."\n" + ."\n" + .'- DEV: Development environment, applicable to apps installed and debugged directly via Xcode.'."\n" + .'- PRODUCT: Production environment, applicable to apps distributed through App Store, TestFlight, Ad Hoc, and enterprise distribution.', + 'enumValueTitles' => ['DEV' => 'DEV', 'PRODUCT' => 'PRODUCT'], + 'type' => 'string', + 'required' => false, + 'example' => 'DEV', + 'title' => '', + ], + 'iOSRemind' => ['description' => 'When the device is offline during message push (i.e., the persistent connection channel to the Mobile Push server is disconnected), this push will be delivered as a notification through Apple\'s APNs channel once.'."\n" + ."\n" + .'> Offline message-to-notification conversion only applies to the production environment.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + 'iOSSubtitle' => ['description' => 'iOS notification subtitle content (iOS 10+).', 'type' => 'string', 'required' => false, 'example' => 'subtitle', 'title' => ''], + 'iOSRemindBody' => ['description' => 'iOS notification content used when converting iOS messages to notifications. Only valid when iOSApnsEnv=PRODUCT and iOSRemind is true.', 'type' => 'string', 'required' => false, 'example' => 'ios通知body', 'title' => ''], + 'iOSMusic' => ['description' => 'iOS notification sound. Specify the name of an audio file stored in the app bundle or the sandbox Library/Sounds directory. See: How to set notification sound for iOS push.'."\n" + ."\n" + .'If set to an empty string (""), the notification is silent. If not set, the default system alert sound is used.', 'type' => 'string', 'required' => false, 'example' => '””', 'title' => ''], + 'iOSBadge' => ['description' => 'iOS app icon badge number in the upper-right corner.'."\n" + ."\n" + .'> If iOSBadgeAutoIncrement is set to True, this field must be empty.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], + 'iOSBadgeAutoIncrement' => ['description' => 'Whether to enable badge auto-increment. Defaults to false.'."\n" + ."\n" + .'> When this is set to true, iOSBadge must be empty.'."\n" + ."\n" + .'The badge auto-increment feature is maintained by the push server for each device\'s badge count. Users must use SDK version V1.9.5 or later and actively sync the badge number to the server.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + 'iOSSilentNotification' => ['description' => 'Whether to enable iOS silent notification.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + 'iOSMutableContent' => ['description' => 'iOS notification processing extension flag (iOS 10+). If set to true, APNs push notifications can reach the Extension for processing before being displayed. Must be set to true for silent notifications.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + 'iOSNotificationCategory' => ['description' => 'Specify the iOS notification Category (iOS 10+).', 'type' => 'string', 'required' => false, 'example' => 'ios', 'title' => ''], + 'iOSNotificationCollapseId' => ['description' => 'When a device receives messages with the same CollapseId, they are merged into one. When the device is offline, consecutive messages with the same CollapseId will show only one notification in the notification bar. Supported on iOS 10+.', 'type' => 'string', 'required' => false, 'example' => 'ZD2011', 'title' => ''], + 'iOSNotificationThreadId' => ['description' => 'Groups iOS remote notifications using this property, marking the group identifier for collapsed notifications. Only supported on iOS 12.0+.', 'type' => 'string', 'required' => false, 'example' => 'abc', 'title' => ''], + 'iOSInterruptionLevel' => [ + 'description' => 'Interruption level. Valid values:'."\n" + ."\n" + .'- passive: The system adds the notification to the notification list without lighting up the screen or playing sound.'."\n" + ."\n" + .'- active: The system immediately displays the notification, lights up the screen, and can play sound.'."\n" + ."\n" + .'- time-sensitive: The system immediately presents the notification, lights up the screen, and can play sound, but does not break through system notification controls.'."\n" + ."\n" + .'- critical: The system immediately displays the notification, lights up the screen, and plays sound bypassing the mute switch.'."\n", + 'enumValueTitles' => ['critical' => 'critical', 'time-sensitive' => 'time-sensitive', 'active' => 'active', 'passive' => 'passive'], + 'type' => 'string', + 'required' => false, + 'example' => 'active', + 'title' => '', + ], + 'iOSRelevanceScore' => ['description' => 'Summary highlight score. Value range: a floating-point number in \\[0,1\\].', 'type' => 'number', 'format' => 'double', 'required' => false, 'example' => '0.01', 'title' => ''], + 'iOSExtParameters' => ['description' => 'Extended properties of iOS notifications.'."\n" + ."\n" + .'On iOS 10+, you can specify the resource URL for rich media push notifications here: `{"attachment": "https://xxxx.xxx/notification_pic.png"} `. This parameter must be passed in JSON map format; otherwise, parsing errors will occur.', 'type' => 'string', 'required' => false, 'example' => '{"attachment": "https://xxxx.xxx/notification_pic.png"} ', 'title' => ''], + 'iOSLiveActivityEvent' => [ + 'description' => 'Start, update, or end a Live Activity.'."\n" + ."\n" + .'- Enum: start | update | end', + 'type' => 'string', + 'enum' => ['start', 'update', 'end'], + 'required' => false, + 'example' => 'start', + 'title' => '', + ], + 'iOSLiveActivityId' => ['description' => 'The Live Activity ID reported by the device to the user\'s server. A unique identifier for the Live Activity.', 'type' => 'string', 'required' => false, 'example' => '66B94673-B32E-4CA7-863C-3E523054FD46', 'title' => ''], + 'iOSLiveActivityAttributesType' => ['description' => 'The type of Live Activity to start.'."\n" + .'> Required when iOSLiveActivityEvent is start.', 'type' => 'string', 'required' => false, 'example' => 'OrderActivityAttributes', 'title' => ''], + 'iOSLiveActivityAttributes' => ['description' => 'JSON string. Static pass-through parameters for Dynamic Island push. Contains static user-defined information such as product ID and order information.'."\n" + ."\n" + .'> Required when iOSLiveActivityEvent is start.', 'type' => 'string', 'required' => false, 'example' => '{"orderId": "12345", "product": "Shoes"}', 'title' => ''], + 'iOSLiveActivityContentState' => ['description' => 'Dynamic pass-through parameters for Dynamic Island push. Contains real-time update information such as price and inventory changes.', 'type' => 'string', 'required' => false, 'example' => '{"status": "delivered", "estimatedArrival": "2023-12-31T12:00:00Z"}', 'title' => ''], + 'iOSLiveActivityDismissalDate' => ['description' => 'The ended Live Activity will remain on the lock screen until the specified time, up to a maximum of 4 hours.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1743131967', 'title' => ''], + 'iOSLiveActivityStaleDate' => ['description' => 'Timestamp in seconds, marking the expiration time of the activity content.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1743131967', 'title' => ''], + 'AndroidNotifyType' => [ + 'description' => 'Notification alert type. Valid values:'."\n" + ."\n" + .'- **VIBRATE**: Vibration (default)'."\n" + .'- **SOUND**: Sound'."\n" + .'- **BOTH**: Sound and vibration'."\n" + .'- **NONE**: Silent', + 'enumValueTitles' => ['SOUND' => 'SOUND', 'NONE' => 'NONE', 'VIBRATE' => 'VIBRATE', 'BOTH' => 'BOTH'], + 'type' => 'string', + 'required' => false, + 'example' => 'VIBRATE', + 'title' => '', + ], + 'AndroidRemind' => ['description' => 'When the push type is message and the device is offline, this push will use the auxiliary popup feature. Defaults to false. Only takes effect when PushType=MESSAGE.'."\n" + ."\n" + .'If the message-to-notification conversion push is successful, the notification displays the data set by the server\'s AndroidPopupTitle and AndroidPopupBody parameter values. The data obtained when clicking the notification in the auxiliary popup\'s onSysNoticeOpened method is the server-set Title and Body parameter values.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + 'AndroidOpenType' => [ + 'description' => 'Action after clicking the notification. Valid values:'."\n" + ."\n" + .'- APPLICATION: Open the app (default)'."\n" + .'- ACTIVITY: Open an Android Activity'."\n" + .'- URL: Open a URL'."\n" + .'- NONE: No navigation', + 'enumValueTitles' => ['APPLICATION' => 'APPLICATION', 'NONE' => 'NONE', 'ACTIVITY' => 'ACTIVITY', 'URL' => 'URL'], + 'type' => 'string', + 'required' => false, + 'example' => 'APPLICATION', + 'title' => '', + ], + 'AndroidActivity' => ['description' => 'Specify the Activity to open from the notification.'."\n" + ."\n" + .'Only applicable when PushTask.N.AndroidOpenType="Activity", e.g., `com.alibaba.cloudpushdemo.bizactivity`.', 'type' => 'string', 'required' => false, 'example' => 'com.alibaba.cloudpushdemo.bizactivity', 'title' => ''], + 'AndroidOpenUrl' => ['description' => 'The URL to open after Android receives the push. Only applicable when PushTask.N.AndroidOpenType="URL".', 'type' => 'string', 'required' => false, 'example' => 'https://xxxx.xxx', 'title' => ''], + 'AndroidPopupActivity' => ['description' => 'Specify the Activity to navigate to when the notification is clicked.', 'type' => 'string', 'required' => false, 'example' => 'com.alibaba.cloudpushdemo.bizactivity', 'title' => ''], + 'AndroidPopupTitle' => ['description' => 'Title content in auxiliary popup mode. Required when the AndroidPopupActivity parameter is not empty.'."\n" + ."\n" + .'Length limit: 50 characters (both Chinese and English characters count as one character each).'."\n" + ."\n" + .'When using vendor channels, you must also comply with the vendor channel restrictions. For details, see [Android Auxiliary Channel Push Limits](~~165253~~).', 'type' => 'string', 'required' => false, 'example' => 'hello', 'title' => ''], + 'AndroidPopupBody' => ['description' => 'Body content in auxiliary popup mode. Required when the AndroidPopupActivity parameter is not empty.'."\n" + ."\n" + .'Length limit: 200 characters (both Chinese and English characters count as one character each).'."\n" + ."\n" + .'When using vendor channels, you must also comply with the vendor channel restrictions. For details, see [Android Auxiliary Channel Push Limits](~~165253~~).', 'type' => 'string', 'required' => false, 'example' => 'hello', 'title' => ''], + 'AndroidRenderStyle' => ['description' => 'Notification style. Valid values:'."\n" + .'- **0**: Standard mode (default)'."\n" + .'- **1**: Long text mode (supported by Huawei, Honor, Xiaomi, OPPO, Meizu, and proprietary channels)'."\n" + .'- **2**: Big picture mode (supported by proprietary channel, not supported on Xiaomi devices)'."\n" + .'- **3**: List mode (supported by Huawei, Honor, Xiaomi, OPPO, and proprietary channels)'."\n" + .'> This parameter is required when using non-standard modes.', 'type' => 'string', 'required' => false, 'example' => '1', 'title' => ''], + 'AndroidBigTitle' => ['description' => 'Title in long text mode. Length limit: 200 bytes (1 Chinese character counts as 3 bytes).'."\n" + ."\n" + .'- Currently only supported by the Honor channel and Huawei channel EMUI 11 and later.'."\n" + ."\n" + .'- If this parameter is not provided in long text mode, the first non-empty value from Title and AndroidPopupTitle is used.', 'type' => 'string', 'required' => false, 'example' => '示例长标题', 'title' => ''], + 'AndroidBigBody' => ['description' => 'Body in long text mode. Length limit: 1,000 bytes (1 Chinese character counts as 3 bytes). Subject to specific vendor channel restrictions when sending.'."\n" + ."\n" + .'Currently supported:'."\n" + .'- Huawei: EMUI 10 and later'."\n" + .'- Honor: Magic UI 4.0 and later'."\n" + .'- Xiaomi: MIUI 10 and later'."\n" + .'- OPPO: ColorOS 5.0 and later'."\n" + .'- Meizu: Flyme'."\n" + .'- Proprietary channel: Android SDK 3.6.0 and later'."\n" + ."\n" + .'If this parameter is not provided in long text mode, the first non-empty value from Body and AndroidPopupBody is used.', 'type' => 'string', 'required' => false, 'example' => '示例长文本', 'title' => ''], + 'AndroidBigPictureUrl' => ['description' => 'Image URL in big picture mode. Currently supported: Proprietary channel: Android SDK 3.6.0 and later.', 'type' => 'string', 'required' => false, 'example' => 'https://imag.example.com/image.png', 'title' => ''], + 'AndroidXiaomiBigPictureUrl' => ['description' => 'This parameter has been deprecated. Since August 2023, Xiaomi has officially discontinued support for dynamically setting small icons, right-side icons, and big pictures during push on new devices/systems.', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => 'https://f6.market.xiaomi.com/download/MiPass/aaa/bbb.png', 'title' => ''], + 'AndroidImageUrl' => ['description' => 'Right-side icon URL. Currently supported:'."\n" + .'- Huawei EMUI (only applicable in long text mode and Inbox mode)'."\n" + .'- Honor Magic UI (only applicable in long text mode)'."\n" + .'- Proprietary channel: Android SDK 3.5.0 and later', 'type' => 'string', 'required' => false, 'example' => 'https://imag.example.com/image.png', 'title' => ''], + 'AndroidXiaomiImageUrl' => ['description' => 'This parameter has been deprecated. Since August 2023, Xiaomi has officially discontinued support for dynamically setting small icons, right-side icons, and big pictures during push on new devices/systems.', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => 'https://imag.example.com/image.png', 'title' => ''], + 'AndroidInboxBody' => ['description' => 'Body content in Inbox mode. The content must be a valid JSON Array with no more than 5 elements. Currently supported:'."\n" + ."\n" + .'- Huawei: EMUI 9 and later'."\n" + .'- Honor: Magic UI 4.0 and later'."\n" + .'- Xiaomi: MIUI 10 and later'."\n" + .'- OPPO: ColorOS 5.0 and later'."\n" + .'- Proprietary channel: Android SDK 3.6.0 and later', 'type' => 'string', 'required' => false, 'example' => '["第一行","第二行"]', 'title' => ''], + 'AndroidNotificationBarType' => ['description' => 'Android custom notification bar style. Value range: 1-100.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], + 'AndroidNotificationBarPriority' => ['description' => 'Priority of the notification position in the Android notification bar. Valid values: -2, -1, 0, 1, 2.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], + 'AndroidNotificationNotifyId' => ['description' => 'Unique identifier for each message displayed in the notification bar. Different notification bar messages can share the same NotifyId, allowing new notifications to replace old ones.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '100001', 'title' => ''], + 'AndroidNotificationChannel' => ['description' => 'The channelId of the Android app. Must match the channelId configured in the app.'."\n" + .'- Set the NotificationChannel parameter. For specific usage, see [FAQ: Notifications not received on Android 8.0+ devices](~~67398~~).'."\n" + .'- Since the OPPO notification private channel\'s channel_id is the same as the app\'s channelId, the channel_id takes this value when pushing through the OPPO channel.'."\n" + .'- For Huawei, FCM, and Alibaba Cloud proprietary channel pushes, the channel_id takes this value.', 'type' => 'string', 'required' => false, 'example' => '1', 'title' => ''], + 'AndroidNotificationHuaweiChannel' => [ + 'description' => 'Set the Huawei notification message classification importance parameter, which determines the notification behavior on user devices. Valid values:'."\n" + ."\n" + .'- LOW: Information and marketing messages'."\n" + .'- NORMAL: Service and communication messages'."\n" + ."\n" + .'>- The Huawei channel now recommends using AndroidMessageHuaweiCategory for notification classification. AndroidNotificationHuaweiChannel is no longer required.'."\n" + .'>- Application is required on the Huawei platform. [Application link](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section893184112272).', + 'enumValueTitles' => ['LOW' => 'LOW', 'NORMAL' => 'NORMAL'], + 'type' => 'string', + 'required' => false, + 'example' => 'LOW', + 'title' => '', + ], + 'AndroidNotificationHonorChannel' => [ + 'description' => 'Set the Honor notification message classification importance parameter, which determines the notification behavior on user devices. Valid values:'."\n" + ."\n" + .'- LOW: Information and marketing messages'."\n" + ."\n" + .'- NORMAL: Service and communication messages'."\n" + ."\n" + .'Application is required on the Honor platform. [Application link](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).', + 'enumValueTitles' => ['LOW' => 'LOW', 'NORMAL' => 'NORMAL'], + 'type' => 'string', + 'required' => false, + 'example' => 'LOW', + 'title' => '', + ], + 'AndroidNotificationXiaomiChannel' => ['description' => 'Set the channelId for Xiaomi notification types. Application is required on the Xiaomi platform. See: [Application link](https://dev.mi.com/console/doc/detail?pId=2422#_4).'."\n" + .'>- A single application on the Xiaomi channel can apply for up to 8 channels. Please plan ahead.', 'type' => 'string', 'required' => false, 'example' => 'michannel', 'title' => ''], + 'AndroidNotificationVivoChannel' => [ + 'description' => 'Set the vivo notification message classification. Valid values:'."\n" + ."\n" + .'- 0: Operational messages (default)'."\n" + .'- 1: System messages'."\n" + ."\n" + .'>- The vivo channel now recommends using AndroidMessageVivoCategory for notification classification. AndroidNotificationVivoChannel is no longer required.'."\n" + .'>- Application is required on the vivo platform. See: [Application link](https://dev.vivo.com.cn/documentCenter/doc/359).', + 'enumValueTitles' => ['0', '1'], + 'type' => 'string', + 'required' => false, + 'example' => '0', + 'title' => '', + ], + 'AndroidNotificationGroup' => ['description' => 'Message grouping. Messages in the same group display only the latest one and the total count of messages received in that group in the notification bar. All messages are not displayed and cannot be expanded. Currently supported:'."\n" + ."\n" + .'- Huawei vendor channel'."\n" + .'- Honor vendor channel'."\n" + .'- Proprietary channel: Android SDK 3.9.1 and earlier'."\n" + ."\n" + .'> The proprietary channel no longer supports this parameter on Android SDK 3.9.2 and later.', 'type' => 'string', 'required' => false, 'example' => 'group-1', 'title' => ''], + 'AndroidNotificationThreadId' => ['description' => 'Message grouping. Messages in the same group are displayed collapsed in the notification bar and can be expanded. Notifications from different groups are displayed separately. Currently supported:'."\n" + ."\n" + .'- Proprietary channel: Android SDK 3.9.2 and later', 'type' => 'string', 'required' => false, 'example' => 'thread-1', 'title' => ''], + 'AndroidExtParameters' => ['description' => 'Set notification extended properties. This property does not take effect when the push type PushType is set to MESSAGE.'."\n" + ."\n" + .'This parameter must be passed in JSON map format; otherwise, parsing errors will occur.', 'type' => 'string', 'required' => false, 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}', 'title' => ''], + 'AndroidMessageHuaweiUrgency' => [ + 'description' => 'Huawei channel notification delivery priority. Valid values:'."\n" + ."\n" + .'- HIGH'."\n" + ."\n" + .'- NORMAL'."\n" + ."\n" + .'Permission application is required. See: [Application link](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509).', + 'enumValueTitles' => ['HIGH' => 'HIGH', 'NORMAL' => 'NORMAL'], + 'type' => 'string', + 'required' => false, + 'example' => 'HIGH', + 'title' => '', + ], + 'AndroidMessageHuaweiCategory' => ['description' => 'Purpose 1: After completing the [self-classification privilege application](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835?#section3410731125514), this is used to identify the message type, determine the [notification alert method](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#ZH-CN_TOPIC_0000001149358835__p3850133955718), and speed up delivery for specific message types. For valid values, refer to the Huawei Push official documentation\'s [Message Classification Standard](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section1076611477914). Use the "Cloud notification category value" or "Local notification category value" from the documentation table.'."\n" + ."\n" + .'Purpose 2: After [applying for special permissions](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509), this is used to identify high-priority pass-through scenarios. Valid values:'."\n" + .'- VOIP: Audio/video calls'."\n" + .'- PLAY_VOICE: Voice playback'."\n" + ."\n" + .'> For "Cloud notification category values" marked as "Not applicable", the Alibaba Cloud proprietary channel is used. For "Local notification category values" marked as "Not applicable", the Huawei channel is used.', 'type' => 'string', 'required' => false, 'example' => 'SUBSCRIPTION', 'title' => ''], + 'AndroidMessageOppoCategory' => ['description' => 'OPPO classifies messages into two categories: Communication & Service, and Content & Marketing.'."\n" + ."\n" + .'Communication & Service (permission application required):'."\n" + .'- IM: Instant messaging, audio, and video calls'."\n" + .'- ACCOUNT: Personal account and asset changes'."\n" + .'- DEVICE_REMINDER: Personal device reminders'."\n" + .'- ORDER: Personal order/logistics status changes'."\n" + .'- TODO: Personal schedule/to-do items'."\n" + .'- SUBSCRIPTION: Personal subscriptions'."\n" + ."\n" + .'Content & Marketing:'."\n" + .'- NEWS: News and information'."\n" + .'- CONTENT: Content recommendations'."\n" + .'- MARKETING: Platform promotions'."\n" + .'- SOCIAL: Social updates'."\n" + ."\n" + .'For details, see [OPUSH Message Classification Rules](https://open.oppomobile.com/new/developmentDoc/info?id=13189)', 'type' => 'string', 'required' => false, 'example' => 'MARKETING', 'title' => ''], + 'AndroidMessageOppoNotifyLevel' => ['description' => 'OPPO channel notification bar message alert level. Valid values:'."\n" + .'- 1: Notification bar'."\n" + .'- 2: Notification bar, lock screen, ringtone, and vibration (default notification level for Communication & Service messages)'."\n" + .'- 16: Notification bar, lock screen, ringtone, vibration, and banner (permission application required)'."\n" + ."\n" + .'> When using the AndroidMessageOppoNotifyLevel parameter, the AndroidMessageOppoCategory parameter must also be provided.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + 'AndroidMessageVivoCategory' => ['description' => 'vivo classifies messages into two categories: System messages and Operational messages.'."\n" + ."\n" + .'System messages:'."\n" + .'- IM: Instant messages'."\n" + .'- ACCOUNT: Account and assets'."\n" + .'- TODO: Schedule and to-do items'."\n" + .'- DEVICE_REMINDER: Device information'."\n" + .'- ORDER: Orders and logistics'."\n" + .'- SUBSCRIPTION: Subscription reminders'."\n" + ."\n" + .'Operational messages:'."\n" + .'- NEWS: News'."\n" + .'- CONTENT: Content recommendations'."\n" + .'- MARKETING: Operational campaigns'."\n" + .'- SOCIAL: Social updates'."\n" + .'> For details, see [Classification Description](https://dev.vivo.com.cn/documentCenter/doc/359#s-ef3qugc3)', 'type' => 'string', 'required' => false, 'example' => 'TODO', 'title' => ''], + 'AndroidTargetUserType' => [ + 'description' => 'Set the vendor channel notification type:'."\n" + .'- **0**: Production notification (default).'."\n" + .'- **1**: Test notification.'."\n" + ."\n" + .'>- Configuring this parameter is equivalent to simultaneously configuring the AndroidHuaweiTargetUserType, AndroidHonorTargetUserType, AndroidVivoPushMode, and AndroidOppoIntentEnv parameters. The corresponding parameter for a specific vendor channel can override this parameter.'."\n" + .'>- Currently supported: Huawei channel, Honor channel, vivo channel, and OPPO Fluid Cloud.', + 'type' => 'integer', + 'format' => 'int32', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '1', + 'title' => '', + ], + 'AndroidHuaweiTargetUserType' => [ + 'description' => 'Set the Huawei channel notification type:'."\n" + .'- **0**: Production notification (default).'."\n" + .'- **1**: Test notification.'."\n" + ."\n" + .'> Each application can send up to 500 test notifications per day, and this is not subject to the daily per-device push limit.', + 'enumValueTitles' => ['0', '1'], + 'type' => 'integer', + 'format' => 'int32', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '1', + 'title' => '', + ], + 'AndroidHonorTargetUserType' => [ + 'description' => 'Set the Honor channel notification type:'."\n" + .'- **0**: Production notification (default).'."\n" + .'- **1**: Test notification.'."\n" + ."\n" + .'> Each application can send up to 1,000 test notifications per day, and this is not subject to the daily per-device push limit.', + 'type' => 'integer', + 'format' => 'int32', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '1', + 'title' => '', + ], + 'AndroidVivoPushMode' => [ + 'description' => 'Set the vivo channel notification type:'."\n" + .'- **0**: Production push (default).'."\n" + .'- **1**: Test push.'."\n" + ."\n" + .'> For test pushes, configure test devices in the vivo console in advance. The test device RegId can be obtained by searching for "onReceiveRegId regId" in the device startup logs.', + 'enumValueTitles' => ['0', '1'], + 'type' => 'integer', + 'format' => 'int32', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '1', + 'title' => '', + ], + 'AndroidOppoIntentEnv' => [ + 'description' => 'Set the OPPO Fluid Cloud push environment:'."\n" + .'- **0**: Production environment (default).'."\n" + .'- **1**: Test environment.'."\n" + ."\n" + .'> The OPPO Fluid Cloud test environment requires client-side setup. See [Environment Setup](https://open.oppomobile.com/documentation/page/info?id=13590).', + 'type' => 'integer', + 'format' => 'int32', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '1', + 'title' => '', + ], + 'AndroidHuaweiBusinessType' => [ + 'description' => 'Set the Huawei instant notification parameter:'."\n" + .'- **0**: Send a regular Huawei notification (default).'."\n" + .'- **1**: Send a Huawei instant notification.', + 'type' => 'integer', + 'format' => 'int32', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '1', + 'title' => '', + ], + 'AndroidHuaweiReceiptId' => ['description' => 'Huawei channel receipt ID. This receipt ID can be found in the receipt parameter configuration on the Huawei channel push operations platform.'."\n" + ."\n" + .'> If the default receipt configuration on the Huawei channel push operations platform is set to Alibaba Cloud receipt, this is not required. If not, we recommend configuring the default Huawei channel receipt ID in the Alibaba Cloud EMAS Mobile Push console first.', 'type' => 'string', 'required' => false, 'example' => 'RCP4C123456', 'title' => ''], + 'AndroidVivoReceiptId' => ['description' => 'vivo channel receipt ID. This receipt ID can be found in the app information section of the push service on the vivo open platform.'."\n" + ."\n" + .'> If the default receipt configuration on the vivo open platform is set to Alibaba Cloud receipt, this is not required. If not, we recommend configuring the default vivo channel receipt ID in the Alibaba Cloud EMAS Mobile Push console first.', 'type' => 'string', 'required' => false, 'example' => '123', 'title' => ''], + 'AndroidBadgeClass' => ['description' => 'Full class name of the app entry Activity for badge settings.'."\n" + ."\n" + .'> Only valid for Huawei/Honor vendor channel pushes.', 'type' => 'string', 'required' => false, 'example' => 'com.alibaba.cloudpushdemo.bizactivity'."\n", 'title' => ''], + 'AndroidBadgeAddNum' => ['description' => 'Set the badge increment value. The value is added to the existing badge count. Value range: [1-99].'."\n" + .'> Only valid for Huawei/Honor vendor channel pushes. When both AndroidBadgeAddNum and AndroidBadgeSetNum are present, AndroidBadgeSetNum takes precedence.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'default' => '1', 'required' => false, 'title' => ''], + 'AndroidBadgeSetNum' => ['description' => 'Set the badge to a fixed number. Value range: [0-99].'."\n" + ."\n" + .'> For vendor channel pushes, this only takes effect on Huawei and Honor channels. For Alibaba Cloud proprietary channel pushes, this only takes effect on Huawei, Honor, and vivo devices.', 'type' => 'integer', 'format' => 'int32', 'example' => '5', 'default' => '0', 'required' => false, 'title' => ''], + 'AndroidMusic' => ['description' => 'Huawei vendor channel notification sound. Specify the name of an audio file stored in the client project\'s app/src/main/res/raw/ directory. The file extension is not required.'."\n" + ."\n" + .'If not set, the default ringtone is used.', 'type' => 'string', 'required' => false, 'example' => 'alicloud_notification_sound', 'title' => ''], + 'HarmonyRemind' => ['description' => 'When the push type is message and the device is offline, this push will use the auxiliary popup feature. Defaults to false. Only takes effect when PushType=MESSAGE.'."\n" + ."\n" + .'If the message-to-notification conversion push is successful, the notification displays the data set by the server\'s HarmonyRemindTitle and HarmonyRemindBody parameter values.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], + 'HarmonyRemindTitle' => ['description' => 'HarmonyOS notification title used when converting HarmonyOS messages to notifications. Only valid when HarmonyRemind is true.', 'type' => 'string', 'required' => false, 'example' => '新消息', 'title' => ''], + 'HarmonyRemindBody' => ['description' => 'HarmonyOS notification content used when converting HarmonyOS messages to notifications. Only valid when HarmonyRemind is true.', 'type' => 'string', 'required' => false, 'example' => '您有一条新消息,请查收', 'title' => ''], + 'HarmonyCategory' => [ + 'description' => 'Notification message category. After completing the notification message self-classification privilege application, this is used to identify the message type. Different notification message types affect the display and alert methods. Valid values:'."\n" + ."\n" + .'- IM: Instant messaging'."\n" + .'- VOIP: Audio/video calls'."\n" + .'- SUBSCRIPTION: Subscriptions'."\n" + .'- TRAVEL: Travel'."\n" + .'- HEALTH: Health'."\n" + .'- WORK: Work task reminders'."\n" + .'- ACCOUNT: Account updates'."\n" + .'- EXPRESS: Orders & logistics'."\n" + .'- FINANCE: Finance'."\n" + .'- DEVICE_REMINDER: Device reminders'."\n" + .'- MAIL: Email'."\n" + .'- CUSTOMER_SERVICE: Customer service messages'."\n" + .'- MARKETING: News, content recommendations, social updates, product promotions, financial updates, lifestyle information, surveys, feature recommendations, and operational campaigns (only marks the content, does not speed up message delivery), collectively referred to as information and marketing messages'."\n" + ."\n" + .'For details, see HarmonyOS official documentation [Notification.category](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117)', + 'type' => 'string', + 'enum' => ['IM', 'VOIP', 'SUBSCRIPTION', 'TRAVEL', 'HEALTH', 'WORK', 'ACCOUNT', 'EXPRESS', 'FINANCE', 'DEVICE_REMINDER', 'MAIL', 'CUSTOMER_SERVICE', 'MARKETING'], + 'required' => false, + 'example' => 'IM', + 'title' => '', + ], + 'HarmonyNotificationSlotType' => [ + 'description' => 'Use the specified type of notification slot. Only valid when the Alibaba Cloud proprietary channel is online.'."\n" + ."\n" + .'- SOCIAL_COMMUNICATION: Social communication.'."\n" + .'- SERVICE_INFORMATION: Service reminders.'."\n" + .'- CONTENT_INFORMATION: Content information.'."\n" + .'- CUSTOMER_SERVICE: Customer service messages. This type is used for customer service messages between users and merchants, and must be initiated by the user.'."\n" + .'- OTHER_TYPES: Others.'."\n" + ."\n" + .'For details, see HarmonyOS official documentation [SlotType](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-notificationmanager-V5#slottype)', + 'type' => 'string', + 'enum' => ['SOCIAL_COMMUNICATION', 'SERVICE_INFORMATION', 'CONTENT_INFORMATION', 'CUSTOMER_SERVICE', 'OTHER_TYPES'], + 'required' => false, + 'example' => 'SOCIAL_COMMUNICATION', + 'title' => '', + ], + 'HarmonyNotifyId' => ['description' => 'Unique identifier for each message displayed in the notification. When not provided, the push service automatically generates a unique identifier for each message. Different notification messages can share the same notifyId, enabling new messages to replace old ones.'."\n" + ."\n" + .'For details, see HarmonyOS official documentation [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', 'title' => ''], + 'HarmonyActionType' => [ + 'description' => 'Action after clicking the notification. Valid values:'."\n" + ."\n" + .'- APP_HOME_PAGE: Open the app home page'."\n" + .'- APP_CUSTOM_PAGE: Open a custom app page', + 'type' => 'string', + 'enum' => ['APP_HOME_PAGE', 'APP_CUSTOM_PAGE'], + 'required' => false, + 'example' => 'APP_HOME_PAGE', + 'title' => '', + ], + 'HarmonyAction' => ['description' => 'The action corresponding to the built-in page ability of the app.'."\n" + ."\n" + .'><notice>When HarmonyActionType is APP_CUSTOM_PAGE, at least one of HarmonyUri and HarmonyAction must be provided.></notice>'."\n" + ."\n" + .'For details, see HarmonyOS official documentation [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', 'title' => ''], + 'HarmonyUri' => ['description' => 'The URI corresponding to the built-in page ability of the app.'."\n" + .'><notice>When HarmonyActionType is APP_CUSTOM_PAGE, at least one of HarmonyUri and HarmonyAction must be provided. When multiple Abilities exist, provide different action and URI values for each Ability. The action is prioritized when looking up the corresponding built-in app page.></notice>'."\n" + ."\n" + .'For details, see HarmonyOS official documentation [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', 'title' => ''], + 'HarmonyRenderStyle' => [ + 'description' => 'Notification message style:'."\n" + .'- NORMAL: Standard notification (default)'."\n" + .'- MULTI_LINE: Multi-line text style', + 'type' => 'string', + 'enum' => ['NORMAL', 'MULTI_LINE'], + 'required' => false, + 'example' => 'NORMAL', + 'title' => '', + ], + 'HarmonyImageUrl' => ['description' => 'URL for the large icon on the right side of the notification. The URL must use the HTTPS protocol.'."\n" + ."\n" + .'> Supported image formats: png, jpg, jpeg, heif, gif, bmp. Image dimensions must satisfy height × width < 25,000 pixels.'."\n" + ."\n" + .'For details, see HarmonyOS official documentation [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', 'title' => ''], + 'HarmonyInboxContent' => ['description' => 'Content for multi-line text style. Required when HarmonyRenderStyle is MULTI_LINE. Up to 3 content items are supported.', 'type' => 'string', 'required' => false, 'example' => '["1.content1","2.content2","3.content3"]'."\n", 'title' => ''], + 'HarmonyExtParameters' => ['description' => 'Set notification extended properties. This property does not take effect when the push type PushType is set to MESSAGE.'."\n" + ."\n" + .'This parameter must be passed in JSON map format; otherwise, parsing errors will occur.', 'type' => 'string', 'required' => false, 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}'."\n", 'title' => ''], + 'HarmonyTestMessage' => ['description' => 'Test message flag:'."\n" + ."\n" + .'- false: Normal message (default)'."\n" + .'- true: Test message'."\n" + ."\n" + .'For details, see HarmonyOS official documentation [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', 'title' => ''], + 'HarmonyReceiptId' => ['description' => 'HarmonyOS channel receipt ID. This receipt ID can be found in the receipt parameter configuration on the HarmonyOS channel push operations platform.'."\n" + ."\n" + .'> If the default receipt configuration on the HarmonyOS channel push operations platform is set to Alibaba Cloud receipt, this is not required. If not, we recommend configuring the default HarmonyOS channel receipt ID in the Alibaba Cloud EMAS Mobile Push console first.'."\n" + ."\n" + .'For details, see HarmonyOS official documentation [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", 'title' => ''], + 'HarmonyExtensionPush' => ['description' => 'When PushType is NOTICE, whether this is a HarmonyOS notification extension message.'."\n" + ."\n" + .'- true: Send a notification extension message'."\n" + .'- false: Send a regular notification (default)'."\n" + ."\n" + .'Notification extension messages require permission to be applied for on the HarmonyOS side before sending. For details, see the HarmonyOS documentation [Send Notification Extension Messages](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-send-extend-noti-V5).</br>'."\n" + .'Supported from HarmonyOS SDK 1.2.0.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + 'HarmonyExtensionExtraData' => ['description' => 'Extra data for notification extension messages.</br>'."\n" + .'Valid when sending HarmonyOS notification extension messages.</br>'."\n" + .'Conceptually equivalent to the extraData field of HarmonyOS notification extension messages. For the specific definition, see [HarmonyOS ExtensionPayload Description](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section161192514234).</br>'."\n" + .'Supported from HarmonyOS SDK 1.2.0.', 'type' => 'string', 'required' => false, 'example' => '示例额外数据', 'title' => ''], + 'HarmonyBadgeAddNum' => ['description' => 'HarmonyOS app badge increment number. See [HarmonyOS badge addNum field description](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145).</br>'."\n" + .'Supported from HarmonyOS SDK 1.2.0.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + 'HarmonyBadgeSetNum' => ['description' => 'HarmonyOS app badge set number. See [HarmonyOS badge setNum field description](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145).</br>'."\n" + .'Supported from HarmonyOS SDK 1.2.0.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + 'SendSpeed' => ['description' => 'This parameter has been deprecated.', 'type' => 'integer', 'format' => 'int32', 'deprecated' => true, 'required' => false, 'example' => '0', 'title' => ''], + 'AndroidXiaoMiNotifyTitle' => ['description' => 'This parameter has been deprecated. All third-party auxiliary popups are now supported by the new parameter **AndroidPopupTitle**.', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '无', 'title' => ''], + 'AndroidXiaoMiNotifyBody' => ['description' => 'This parameter has been deprecated. All third-party auxiliary popups are now supported by the new parameter **AndroidPopupBody**.', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '无', 'title' => ''], + 'AndroidXiaoMiActivity' => ['description' => 'This parameter has been deprecated. All third-party auxiliary popups are now supported by the new parameter **AndroidPopupActivity**.', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '无', 'title' => ''], + 'AndroidMeizuNoticeMsgType' => [ + 'description' => 'Meizu message type'."\n" + ."\n" + .'- 0: Public message (default)'."\n" + .'- 1: Private message', + 'enumValueTitles' => ['Public message (default)', 'Private message'], + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + 'enum' => ['0', '1'], + 'required' => false, + 'title' => '', + ], + 'AndroidOppoPrivateMsgTemplateId' => ['title' => '', 'description' => 'OPPO private message template ID'."\n" + ."\n" + .'><warning>The OPPO private message template feature is no longer supported by MaasPush. To use this feature, please use the Push, PushV2, or MassPushV2 API instead.></warning>', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '687557242b1634hzef3zd5013'], + 'AndroidOppoPrivateTitleParameters' => [ + 'title' => '', + 'description' => 'OPPO private message template title parameters', + 'type' => 'object', + 'deprecated' => true, + 'required' => false, + 'additionalProperties' => ['description' => 'Variable name and variable value in the OPPO private message template title', 'type' => 'string', 'example' => 'my_title', 'title' => ''], + 'example' => '', + ], + 'AndroidOppoPrivateContentParameters' => [ + 'title' => '', + 'description' => 'OPPO private message template content parameters', + 'type' => 'object', + 'deprecated' => true, + 'required' => false, + 'additionalProperties' => ['description' => 'Variable name and variable value in the OPPO private message template content', 'type' => 'string', 'example' => 'my_content', 'title' => ''], + 'example' => '', + ], + 'AndroidXiaomiTemplateId' => ['title' => '', 'description' => 'Xiaomi private message template ID', 'type' => 'string', 'required' => false, 'example' => 'P10645'], + 'AndroidXiaomiTemplateParams' => ['title' => '', 'description' => 'Xiaomi private message template parameters, JSON string', 'type' => 'string', 'required' => false, 'example' => '{"keywords1":"Tom","keywords2":"phone"}'], + 'HarmonyLiveViewPayload' => ['description' => 'JSON string of the HarmonyOS Live View data structure [LiveViewPayload](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/push-scenariozed-api-request-param-V13#section66881469306). For development integration, see [HarmonyOS Live View Push Guide](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" + .'}', 'title' => ''], + 'AndroidHuaweiLiveNotificationPayload' => ['description' => 'JSON string of the Huawei Android Live Notification data structure [LiveNotificationPayload](https://developer.huawei.com/consumer/cn/doc/HMSCore-References/rest-live-0000001562939968#ZH-CN_TOPIC_0000001700850537__p195121620102511). For development integration, see [Huawei Live Notification Push Guide](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" + .'}', 'title' => ''], + 'AndroidOppoIntelligentIntent' => ['description' => 'JSON string of the OPPO Fluid Cloud intent sharing data structure [IntelligentIntent](https://open.oppomobile.com/documentation/page/info?id=13565). For development integration, see [OPPO Fluid Cloud Push Guide](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" + .'}', 'title' => ''], + 'AndroidOppoDeleteIntentData' => ['description' => 'JSON string of the OPPO Fluid Cloud intent deletion data structure [data](https://open.oppomobile.com/documentation/page/info?id=13578). This parameter is ignored when the AndroidOppoIntelligentIntent parameter is already provided. For development integration, see [OPPO Fluid Cloud Push Guide](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" + .'}', 'title' => ''], + 'AndroidVivoLiveMessage' => ['description' => 'JSON string of the vivo Atomic Island data structure [liveMessage](https://dev.vivo.com.cn/documentCenter/doc/896#s-fdagzbd4). For development integration, see [vivo Atomic Island Push Guide](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" + .'}', 'title' => ''], + 'AndroidXiaomiFocusParam' => ['description' => 'JSON string of the Xiaomi Super Island data structure [miui.focus.param](https://dev.mi.com/xiaomihyperos/documentation/detail?pId=2131). For development integration, see [Xiaomi Super Island Push Guide](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" + .'}', 'title' => ''], + 'AndroidXiaomiFocusPics' => ['description' => 'JSON string of the Xiaomi Super Island images [miui.focus.pic_xxx](https://dev.mi.com/xiaomihyperos/documentation/detail?pId=2131). For development integration, see [Xiaomi Super Island Push Guide](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" + .'}', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => true, + 'maxItems' => 100, + 'title' => '', 'example' => '', ], ], [ - 'name' => 'iOSMusic', + 'name' => 'IdempotentToken', 'in' => 'query', + 'schema' => ['description' => 'An idempotency parameter used to prevent duplicate pushes caused by API caller retries. When calls are made with the same IdempotentToken within 15 minutes, only one push is performed, and subsequent calls return the result of the first successful push.'."\n" + ."\n" + .'> '."\n" + .'> - The parameter format is a standard 36-character UUID (8-4-4-4-12). Each valid character is a hexadecimal digit in the range 0-9 or a-f, case-insensitive.'."\n" + .'> - This parameter is only used to prevent duplicate pushes caused by retries and cannot prevent duplicate pushes caused by concurrent calls.', 'type' => 'string', 'maxLength' => 36, 'minLength' => 36, 'required' => false, 'example' => 'c8016d13-6e76-410c-9bda-769383d11787', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'MessageIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'MessageId' => [ + 'description' => 'List of batch message IDs. Each message ID corresponds to the push result of the input PushTask.', + 'type' => 'array', + 'items' => ['description' => 'Message ID', 'type' => 'string', 'example' => '501030', 'title' => ''], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'RequestId' => ['description' => 'Request ID.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], + ], 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '""', + 'title' => '', + 'example' => '', ], ], + ], + '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' => ''], + ['errorCode' => 'PermissionDenied', 'errorMessage' => 'The specified AppKey is not authorized.', 'description' => ''], + ['errorCode' => 'SendSpeedNotSupported', 'errorMessage' => 'SendSpeed is not supported for specified Target.', 'description' => ''], + ['errorCode' => 'SmsProfileConfigFailed', 'errorMessage' => 'Failed to configure SMS profile.', 'description' => ''], + ['errorCode' => 'SmsProfileGetFailed', 'errorMessage' => 'Failed to get SMS profile.', 'description' => ''], + ['errorCode' => 'SmsRoleAuthorizeFailed', 'errorMessage' => 'Failed to authorize SMS role.', 'description' => ''], + ['errorCode' => 'SmsRoleUnauthorized', 'errorMessage' => 'The SMS role is unauthorized.', 'description' => ''], + ['errorCode' => 'TagsNumberBeyondLimit', 'errorMessage' => 'The number of tags bound to this app exceeds the limit.', 'description' => ''], + ['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' => ''], + ['errorCode' => 'TargetNotSupported', 'errorMessage' => 'Target is not supported for batch push.', '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' => 'The request processing has failed due to some unknown error.'], + ['errorCode' => 'Timeout', 'errorMessage' => 'The request processing is timeout.', 'description' => 'Request processing timed out.'], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageIds\\": {\\n \\"MessageId\\": [\\n \\"501030\\"\\n ]\\n },\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', + 'title' => 'MassPush', + 'description' => '**Before using this API, make sure you fully understand the [billing methods and pricing](~~434638~~) of the EMAS Mobile Push service.**'."\n" + ."\n" + .'In certain business scenarios, you may need to push different messages to different devices in a very short time. When the number of devices and messages is extremely large, this can generate high QPS and reach the QPS limit per source IP, causing some pushes to fail.'."\n" + ."\n" + .'This API is designed to address this problem. It supports up to 100 independent push tasks in a single call, effectively reducing QPS through request aggregation and improving the stability and success rate of large-scale unicast pushes. Batch push is limited to 500 calls per second per account.'."\n" + ."\n" + .'Each independent push task only supports three types of push targets: device, account, and alias, and does not currently support SMS integration configuration.'."\n" + ."\n" + .'> The SDK must be upgraded to version 3.11.0 or later.'."\n" + ."\n" + .'## PushTask Properties'."\n" + ."\n\n" + .'- The PushTask property format is: PushTask.N.Property. It includes:'."\n" + .' - Push target (destination)'."\n" + .' - Push configuration (config)'."\n" + .' - iOS notification task configuration'."\n" + .' - Android notification task configuration'."\n" + .' - Android auxiliary popup configuration'."\n" + .' - HarmonyOS notification task configuration '."\n" + .' - Push control'."\n" + .'- Each PushTask represents an independent push task, with a maximum of 100 supported. Push-related configurations are consistent with the Push API.'."\n" + .'- The PushTask.N.Target parameter only supports three types: DEVICE, ACCOUNT, and ALIAS.'."\n" + .'- PushTask does not support SMS integration configuration.'."\n" + .'- The product of parent nodes and child nodes cannot exceed 10,000; otherwise, the parameters are considered invalid.', + 'extraInfo' => '## Java Sample Code'."\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" + .' // Push target'."\n" + .' pushTask.setTarget("DEVICE"); //Push target: DEVICE: push to device; ACCOUNT: push to specified account; TAG: push to custom tag; ALIAS: push by alias; ALL: push to all'."\n" + .' pushTask.setTargetValue("device1,device2,device3"); //Set based on Target. For example, if Target=DEVICE, the corresponding values are deviceId1,deviceId2. Multiple values are separated by commas (accounts and devices are limited to 100 per request).'."\n" + .' pushTask.setDeviceType("iOS"); // Device type deviceType, iOS device: "iOS"; Android device: "ANDROID"; All: "ALL", this is the default value.'."\n" + .' // Push configuration'."\n" + .' pushTask.setPushType("MESSAGE"); // MESSAGE: indicates message (default), NOTICE: indicates notification'."\n" + .' pushTask.setTitle("Hello-" + i); // Message title'."\n" + .' pushTask.setBody("PushRequest body" + i); // Message content'."\n" + .' // Push configuration: iOS'."\n" + .' pushTask.setIOSBadge(5); // iOS app icon badge number in the upper-right corner'."\n" + .' pushTask.setIOSMusic("default"); // iOS notification sound'."\n" + .' pushTask.setIOSApnsEnv("PRODUCT");//iOS notifications are sent through the APNs center. You need to specify the corresponding environment information. \'DEV\': development environment; \'PRODUCT\': production environment'."\n" + .' pushTask.setIOSRemind(true); // When the device is offline during message push (i.e., the persistent connection channel to the Mobile Push server is disconnected), this push will be delivered as a notification through Apple\'s APNs channel once. Note: **Offline message-to-notification conversion only applies to the `production environment`**'."\n" + .' pushTask.setIOSRemindBody("PushRequest summary"); // iOS notification content used when converting iOS messages to notifications, only valid when iOSApnsEnv=`PRODUCT` && iOSRemind is true'."\n" + .' pushTask.setIOSExtParameters("{\\"k1\\":\\"ios\\",\\"k2\\":\\"v2\\"}"); //Notification extended properties (Note: this parameter must be passed in json map format, otherwise parsing errors will occur)'."\n" + .' // Push configuration: Android'."\n" + .' pushTask.setAndroidOpenType("ACTIVITY"); // Action after clicking notification: \'APPLICATION\': open app; \'ACTIVITY\': open Android Activity; \'URL\': open URL; \'NONE\': no navigation'."\n" + .' pushTask.setAndroidNotifyType("SOUND"); // Notification alert type: \'VIBRATE\': vibration; \'SOUND\': sound; \'DEFAULT\': sound and vibration; \'NONE\': no processing, user-defined'."\n" + .' pushTask.setAndroidOpenUrl("http://www.alibaba.com");'."\n" + .' pushTask.setAndroidMusic("alicloud_notification_sound"); // Huawei vendor channel notification sound'."\n" + .' pushTask.setAndroidActivity("com.alibaba.push.PushActivity"); // Open the corresponding Activity after Android receives the push, only valid when `AndroidOpenType="ACTIVITY"`'."\n" + .' pushTask.setAndroidPopupActivity("com.alibaba.push.PopupActivity"); //Setting this parameter enables the auxiliary popup feature. Specify the Activity to navigate to when the notification is clicked (prerequisites for auxiliary popup: 1. Integrate third-party auxiliary channels; 2. Set StoreOffline parameter to true)'."\n" + .' pushTask.setAndroidPopupTitle("Popup Title"); //Set the title of the auxiliary popup notification'."\n" + .' pushTask.setAndroidPopupBody("Popup Body"); //Set the content of the auxiliary popup notification'."\n" + .' pushTask.setAndroidNotificationBarType(50); //Android custom notification bar style, value range: 1-100'."\n" + .' pushTask.setAndroidNotificationBarPriority(2); //Priority of the notification position in the Android notification bar: -2 -1 0 1 2'."\n" + .' pushTask.setAndroidExtParameters("{\\"k1\\":\\"android\\",\\"k2\\":\\"v2\\"}"); //Set notification extended properties. (Note: this parameter must be passed in json map format, otherwise parsing errors will occur)'."\n" + .' // Push control'."\n" + .' final Date pushDate = new Date(System.currentTimeMillis() + 3600 * 1000); //Used for scheduled sending. If not set, the default is immediate sending. The time format follows the ISO8601 standard and must use UTC time in the format `YYYY-MM-DDThh:mm:ssZ`.'."\n" + .' final String pushTime = ParameterHelper.getISO8601Time(pushDate);'."\n" + .' pushTask.setPushTime(pushTime); // Delayed push. Optional. If not set, push is sent immediately'."\n" + .' pushTask.setStoreOffline(true); // Whether to store offline messages. If stored, when the user is offline during push, they will receive the message the next time they come online'."\n" + .' final String expireTime = ParameterHelper.getISO8601Time(new Date(System.currentTimeMillis() + 12 * 3600 * 1000)); // Message expires after 12 hours and will no longer be sent'."\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' => 'Request parameters changed'], + ['createdAt' => '2025-09-19T03:03:01.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2025-09-18T09:24:49.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2025-09-09T08:21:44.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2025-08-21T11:21:59.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2025-03-21T09:22:04.000Z', 'description' => 'Error codes changed, Request parameters changed'], + ['createdAt' => '2025-01-16T07:23:21.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-11-13T03:09:40.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-10-23T08:32:10.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-10-23T08:32:10.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-10-10T01:26:31.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-08-07T05:34:12.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-06-25T04:40:41.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2023-12-18T11:18:34.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2023-10-12T07:14:53.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2023-03-15T14:04:19.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2022-06-07T11:29:17.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2021-09-15T06:53:20.000Z', 'description' => 'Request parameters changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + ], + 'MassPushV2' => [ + 'methods' => ['post'], + 'schemes' => ['https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeNodes' => ['FEATUREemasBNY9P0', 'FEATUREemasTZ8VEZ'], + ], + 'parameters' => [ [ - 'name' => 'iOSBadge', + 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], + 'schema' => ['description' => 'AppKey value.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'example' => '23267***', 'title' => ''], ], [ - 'name' => 'iOSBadgeAutoIncrement', + 'name' => 'IdempotentToken', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'An idempotency token to prevent duplicate pushes caused by API retries. If you call this API with the same IdempotentToken within 15 minutes, only one push is sent. Subsequent calls return the result of the first successful push.'."\n" + ."\n" + .'> - The token must be a standard 36-character UUID in 8-4-4-4-12 format. Valid characters are hexadecimal digits 0–9 and a–f. Case does not matter.'."\n" + .'>'."\n" + .'> - This parameter prevents duplicates only from retries. It does not prevent duplicates from concurrent calls.', 'type' => 'string', 'maxLength' => 36, 'minLength' => 36, 'required' => false, 'example' => 'c8016d13-6e76-****-9bda-769383d11787', 'title' => ''], ], [ - 'name' => 'iOSSilentNotification', + 'name' => 'PushTasks', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', + 'type' => 'array', + 'items' => ['description' => 'A push task.', '$ref' => '#/components/schemas/PushTask', 'required' => false, 'title' => '', 'example' => ''], + 'required' => true, + 'description' => 'Batch push tasks.', + 'title' => '', + 'example' => '', ], ], - [ - 'name' => 'iOSMutableContent', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'Request ID.', 'type' => 'string', 'example' => '159E4422-6624-****-8943-DFD98D34858C', 'title' => ''], + 'MessageIds' => [ + 'type' => 'array', + 'items' => ['description' => 'Message ID.', 'type' => 'string', 'example' => '1091371886864****', 'title' => ''], + 'description' => 'List of message IDs.', + 'title' => '', + 'example' => '', + ], + ], 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidPeriod.ExceedDays', 'errorMessage' => 'The period between specified EndTime and StartTime exceeds %s days.', 'description' => ''], + ['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' => ''], + ['errorCode' => 'PermissionDenied', 'errorMessage' => 'The specified AppKey is not authorized.', 'description' => ''], + ['errorCode' => 'SendSpeedNotSupported', 'errorMessage' => 'SendSpeed is not supported for specified Target.', 'description' => ''], + ['errorCode' => 'SmsProfileConfigFailed', 'errorMessage' => 'Failed to configure SMS profile.', 'description' => ''], + ['errorCode' => 'SmsProfileGetFailed', 'errorMessage' => 'Failed to get SMS profile.', 'description' => ''], + ['errorCode' => 'SmsRoleAuthorizeFailed', 'errorMessage' => 'Failed to authorize SMS role.', 'description' => ''], + ['errorCode' => 'SmsRoleUnauthorized', 'errorMessage' => 'The SMS role is unauthorized.', 'description' => ''], + ['errorCode' => 'TagsNumberBeyondLimit', 'errorMessage' => 'The number of tags bound to this app exceeds the limit.', 'description' => ''], + ['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' => ''], + ['errorCode' => 'TargetNotSupported', 'errorMessage' => 'Target is not supported for batch push.', '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' => 'The request processing has failed due to some unknown error.'], + ['errorCode' => 'Timeout', 'errorMessage' => 'The request processing is timeout.', 'description' => 'Request processing timed out.'], + ], + ], + 'title' => 'Batch Push', + 'summary' => 'Advanced push API v2.', + 'description' => 'Before using this API, review the [pricing and billing details](https://help.aliyun.com/document_detail/434638.html) for EMAS Mobile Push.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'MassPushV2'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ [ - 'name' => 'iOSNotificationCategory', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:MassPushV2', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"159E4422-6624-****-8943-DFD98D34858C\\",\\n \\"MessageIds\\": [\\n \\"1091371886864****\\"\\n ]\\n}","type":"json"}]', + ], + 'Push' => [ + 'summary' => 'Advanced Push API that pushes notifications or messages to different device endpoints. This API provides rich push customization parameters to implement push behavior in different scenarios.', + '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 information.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'example' => '23267207', 'title' => ''], + ], + [ + 'name' => 'PushType', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Push type. Valid values:'."\n" + .'- **NOTICE**: Notification. Notifications are delivered to devices through vendor channels such as APNs, Huawei, Xiaomi, and HarmonyOS, and are displayed directly in the device notification bar. When an Android device is online (app process is alive), the notification is preferentially delivered through the Alibaba Cloud proprietary channel, where the Push SDK constructs and displays the notification, providing better push performance and potentially saving vendor push message quotas in some scenarios.'."\n" + .'- **MESSAGE**: Message. Messages are delivered through the Alibaba Cloud proprietary online channel. They are not displayed in the notification bar by default, but need to be received and processed by the app when the process is active, allowing the business to decide whether to trigger certain business behaviors. When the device is offline (app process is inactive), messages cannot be received in a timely manner. In this case, you can use the `iOSRemind` or `AndroidRemind` parameters below to convert messages to notifications when the device is offline; or set the `StoreOffline` parameter below so the push system saves the message when the device is offline and automatically delivers it when the device comes online.', 'type' => 'string', - 'required' => false, - 'example' => 'ios', + 'required' => true, + 'docRequired' => true, + 'enum' => ['MESSAGE', 'NOTICE'], + 'example' => 'MESSAGE', + 'title' => '', ], ], [ - 'name' => 'iOSNotificationCollapseId', + 'name' => 'DeviceType', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Device type. Valid values:'."\n" + ."\n" + .'- **HARMONY**: HarmonyOS device'."\n" + .'- **iOS**: iOS device'."\n" + .'- **ANDROID**: Android device'."\n" + .'- **ALL**: When the AppKey is for a legacy dual-platform application, this represents pushing to both Android and iOS devices simultaneously; when the AppKey is for a new single-platform application, the effect is the same as specifying the device type corresponding to the application type.', + 'enumValueTitles' => ['ALL' => 'ALL', 'ANDROID' => 'ANDROID', 'iOS' => 'iOS'], 'type' => 'string', - 'required' => false, - 'example' => 'ZD2011', + 'required' => true, + 'docRequired' => true, + 'enum' => ['iOS', 'ANDROID', 'ALL', 'HARMONY'], + 'example' => 'HARMONY', + 'title' => '', ], ], [ - 'name' => 'iOSNotificationThreadId', + 'name' => 'Target', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Push target. Valid values:'."\n" + ."\n" + .'- **DEVICE**: Push by device.'."\n" + .'- **ACCOUNT**: Push by account.'."\n" + .'- **ALIAS**: Push by alias.'."\n" + .'- **TAG**: Push by tag.'."\n" + .'- **ALL**: Push to all devices (the interval between two full pushes of the same DeviceType must be at least 1 second).'."\n" + .' > Pushing to all iOS devices will push to devices that have been active within the last 24 months but have not uninstalled the app. Once APNs (Apple Push Notification service) receives the push request without returning an error, it is considered delivered, which may cause a surge in active device counts and generate significant costs. Please use with discretion.'."\n" + .'- **TBD**: Initialize continuous push. The push target is specified by the subsequent [ContinuouslyPush](~~2249917~~) API.', 'type' => 'string', - 'required' => false, - 'example' => 'abc', + 'required' => true, + 'docRequired' => true, + 'enum' => ['ALL', 'DEVICE', 'ACCOUNT', 'ALIAS', 'TAG', 'TBD', 'FILE'], + 'example' => 'ALL', + 'title' => '', ], ], [ - 'name' => 'iOSInterruptionLevel', + 'name' => 'TargetValue', + 'in' => 'query', + 'schema' => ['description' => 'Set based on the Target type. Multiple values are separated by commas. If the limit is exceeded, split into multiple pushes.'."\n" + ."\n" + .'- Target=DEVICE: Values such as `deviceid1,deviceid2` (up to 1000).'."\n" + .'- Target=ACCOUNT: Values such as `account1,account2` (up to 1000).'."\n" + .'- Target=ALIAS: Values such as `alias1,alias2` (up to 1000).'."\n" + .'- Target=TAG: Supports single and multiple tags. For the format, see [Tag Format](~~434847~~).'."\n" + .'- Target=ALL: Value is **ALL** (fixed parameter for full push).'."\n" + .'- Target=TBD: Value is **TBD** (fixed parameter for continuous push).', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'ALL', 'title' => ''], + ], + [ + 'name' => 'StoreOffline', + 'in' => 'query', + 'schema' => ['description' => 'Whether to store offline messages/notifications. StoreOffline defaults to **false**.'."\n" + ."\n" + .'If enabled, when the user is offline during push, the message will be resent when the user comes online within the expiration time (ExpireTime). ExpireTime defaults to 72 hours. iOS notifications go through the APNs channel and are not affected by StoreOffline.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], + ], + [ + 'name' => 'SendChannels', + 'in' => 'query', + 'schema' => ['description' => 'Specify sending channels. Valid values:'."\n" + ."\n" + .'- accs: Alibaba Cloud proprietary channel'."\n" + .'- huawei: Huawei channel'."\n" + .'- honor: Honor channel'."\n" + .'- xiaomi: Xiaomi channel'."\n" + .'- oppo: OPPO channel'."\n" + .'- vivo: vivo channel'."\n" + .'- meizu: Meizu channel'."\n" + .'- gcm: Google GCM channel (legacy HTTP)'."\n" + .'- fcm: Google Firebase channel (HTTP v1 API)'."\n" + .'- apns: APNs channel'."\n" + .'- harmony: HarmonyOS channel'."\n" + ."\n" + .'>- If this parameter is not configured, all channels are available.'."\n" + .'>- If this parameter is configured, only the specified channels are used.'."\n" + .'>- If the configured channels conflict with the sending strategy (e.g., iOS notifications only go through the APNs channel, but this parameter does not include apns), the push will not be sent.'."\n" + .'>- If gcm is configured, both Google GCM and FCM channels can be used. If fcm is configured, only the Google FCM channel can be used.', 'type' => 'string', 'required' => false, 'example' => 'accs,huawei,xiaomi', 'title' => ''], + ], + [ + 'name' => 'PushTime', + 'in' => 'query', + 'schema' => ['description' => 'Used for scheduled sending. If not set, the default is immediate sending.'."\n" + .'Scheduled sending must be no later than 7 days from now.'."\n" + ."\n" + .'The time format follows the ISO8601 standard and must use UTC time, in the format YYYY-MM-DDThh:mm:ssZ.'."\n" + .'>When Target is TBD (continuous push), scheduled sending is not supported.', 'type' => 'string', 'required' => false, 'example' => '2019-02-20T00:00:00Z', 'title' => ''], + ], + [ + 'name' => 'ExpireTime', + 'in' => 'query', + 'schema' => ['description' => 'Expiration time for offline messages/notifications, used in conjunction with StoreOffline. Expired messages will no longer be sent. Maximum retention is 72 hours. Default is 72 hours.'."\n" + ."\n" + .'The time format follows the ISO8601 standard and must use UTC time, in the format YYYY-MM-DDThh:mm:ssZ. The expiration time must be greater than the current time or the scheduled send time plus 3 seconds (`ExpireTime > PushTime + 3 seconds`). The 3-second buffer accounts for network and system delay tolerance. It is recommended to set at least 1 minute for single push, and at least 10 minutes for full push or batch push.', 'type' => 'string', 'required' => false, 'example' => '2019-02-20T00:00:00Z', 'title' => ''], + ], + [ + 'name' => 'JobKey', + 'in' => 'query', + 'schema' => ['description' => 'Custom identifier for the push task. When JobKey is not empty, the receipt log will include this field. For viewing receipt logs, see [Receipt Logs](~~434651~~).'."\n" + .'>Format requirements: Only letters, digits, or the symbols \'_\' and \'-\' (any combination) are allowed, and the length must not exceed 32 characters.', 'type' => 'string', 'required' => false, 'example' => '123', 'title' => ''], + ], + [ + 'name' => 'Title', + 'in' => 'query', + 'schema' => ['description' => 'Title of the notification/message during push. Length limit: 200 bytes.'."\n" + ."\n" + .'Required for Android and HarmonyOS push; optional for iOS notifications. If provided:'."\n" + ."\n" + .'- iOS 10+: Displayed as the notification title.'."\n" + ."\n" + .'- iOS 8.2 <= iOS version < iOS 10: Replaces the notification app name.', 'type' => 'string', 'required' => false, 'example' => 'title', 'title' => ''], + ], + [ + 'name' => 'Body', + 'in' => 'query', + 'schema' => ['description' => 'Notification content/message content for Android and HarmonyOS push; iOS message/notification content. The push content size is limited. See [Product Limits](~~434629~~).', 'type' => 'string', 'required' => false, 'docRequired' => true, 'example' => 'hello', 'title' => ''], + ], + [ + 'name' => 'Trim', + 'in' => 'query', + 'schema' => ['description' => 'Whether to automatically truncate overly long titles and content.'."\n" + ."\n" + .'>Only applies to vendor channels that explicitly limit title and content length. Does not apply to APNs, Huawei, Honor, and other channels that do not limit title or content individually but only limit the total request body size.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], + ], + [ + 'name' => 'iOSApnsEnv', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'iOS notifications are sent through the APNs center, and the corresponding environment information must be provided.'."\n" + ."\n" + .'- **DEV**: Development environment, applicable to apps installed and debugged directly via Xcode.'."\n" + .'- **PRODUCT**: Production environment, applicable to apps distributed via App Store, TestFlight, Ad Hoc, and enterprise distribution.', + 'enumValueTitles' => ['DEV' => 'DEV', 'PRODUCT' => 'PRODUCT'], 'type' => 'string', 'required' => false, - 'example' => 'active', + 'enum' => ['PRODUCT', 'DEV'], + 'example' => 'DEV', + 'title' => '', ], ], [ + 'name' => 'iOSRemind', + 'in' => 'query', + 'schema' => ['description' => 'When the device is offline during message push (i.e., the persistent connection to the push server is disconnected), this push will be delivered as a notification through Apple\'s APNs channel once.'."\n" + ."\n" + .'> Offline message-to-notification conversion only applies to the production environment.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'iOSSubtitle', + 'in' => 'query', + 'schema' => ['description' => 'iOS notification subtitle content (iOS 10+).', 'type' => 'string', 'required' => false, 'example' => 'su\'b', 'title' => ''], + ], + [ + 'name' => 'iOSRemindBody', + 'in' => 'query', + 'schema' => ['description' => 'iOS notification content used when converting iOS messages to notifications. Only valid when iOSApnsEnv=PRODUCT and iOSRemind is true.', 'type' => 'string', 'required' => false, 'example' => 'ios通知body', 'title' => ''], + ], + [ + 'name' => 'iOSMusic', + 'in' => 'query', + 'schema' => ['description' => 'iOS notification sound. Specify the name of an audio file stored in the app bundle or the sandbox Library/Sounds directory. See: [How to Set iOS Push Notification Sound](~~48906~~).'."\n" + ."\n" + .'If set to an empty string (""), the notification will be silent; if not set, it defaults to the system alert sound.', 'type' => 'string', 'required' => false, 'example' => '""', 'title' => ''], + ], + [ + 'name' => 'iOSBadge', + 'in' => 'query', + 'schema' => ['description' => 'iOS app icon badge number in the upper-right corner.'."\n" + ."\n" + .'> If iOSBadgeAutoIncrement is set to True, this field must be empty.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], + ], + [ + 'name' => 'iOSBadgeAutoIncrement', + 'in' => 'query', + 'schema' => ['description' => 'Whether to enable badge auto-increment. Default is false.'."\n" + ."\n" + .'>When this is set to true, iOSBadge must be empty.'."\n" + ."\n" + .'The badge auto-increment feature is maintained by the push server for each device\'s badge count. Users must use SDK version 1.9.5 or above and actively sync the badge count to the server.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'iOSSilentNotification', + 'in' => 'query', + 'schema' => ['description' => 'Whether to enable iOS silent notification.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'iOSMutableContent', + 'in' => 'query', + 'schema' => ['description' => 'iOS notification processing extension flag (iOS 10+). If set to true, the APNs push notification can reach the Extension for processing before being displayed. For silent notifications, this must be set to true.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'iOSNotificationCategory', + 'in' => 'query', + 'schema' => ['description' => 'Specify the iOS notification Category (iOS 10+).', 'type' => 'string', 'required' => false, 'example' => 'ios', 'title' => ''], + ], + [ + 'name' => 'iOSNotificationCollapseId', + 'in' => 'query', + 'schema' => ['description' => 'When a device receives messages with the same CollapseId, they will be merged into one. When the device is offline and consecutive messages with the same CollapseId are sent, only the latest one is displayed in the notification bar. iOS 10+ supports this parameter.', 'type' => 'string', 'required' => false, 'example' => 'ZD2011', 'title' => ''], + ], + [ + 'name' => 'iOSNotificationThreadId', + 'in' => 'query', + 'schema' => ['description' => 'This attribute is used to group iOS remote notifications, identifying the group name for collapsed notifications.'."\n" + .'Only supported on iOS 12.0+.', 'type' => 'string', 'required' => false, 'example' => 'abc', 'title' => ''], + ], + [ + 'name' => 'iOSInterruptionLevel', + 'in' => 'query', + 'schema' => ['description' => 'Interruption level. Valid values:'."\n" + ."\n" + .'- **passive**: The system adds the notification to the notification list without lighting up the screen or playing a sound.'."\n" + .'- **active**: The system displays the notification immediately, lights up the screen, and can play a sound.'."\n" + .'- **time-sensitive**: The system displays the notification immediately, lights up the screen, and can play a sound, but does not break through system notification controls.'."\n" + .'- **critical**: The system displays the notification immediately, lights up the screen, and plays a sound bypassing the silent switch.', 'type' => 'string', 'required' => false, 'example' => 'active', 'title' => ''], + ], + [ 'name' => 'iOSRelevanceScore', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'required' => false, - 'example' => '0.01', - ], + 'schema' => ['description' => 'Summary highlight score. Value range: floating-point number in \\[0,1\\].', 'type' => 'number', 'format' => 'double', 'required' => false, 'example' => '0.01', 'title' => ''], ], [ 'name' => 'iOSExtParameters', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '{“attachment”: “https://xxxx.xxx/notification_pic.png"} ', - ], + 'schema' => ['description' => 'Extension attributes for iOS notifications.'."\n" + ."\n" + .'For iOS 10+, you can specify the resource URL for rich media push notifications here: `{"attachment": "https://xxxx.xxx/notification_pic.png"}`. This parameter must be passed in JSON map format, otherwise parsing will fail.', 'type' => 'string', 'required' => false, 'example' => '{"attachment": "https://xxxx.xxx/notification_pic.png"} ', 'title' => ''], ], [ 'name' => 'iOSLiveActivityEvent', 'in' => 'query', 'schema' => [ + 'description' => 'Start, update, or end a Live Activity.'."\n" + ."\n" + .'- Enum: start | update | end', 'type' => 'string', - 'enum' => [ - 'start', - 'update', - 'end', - ], + 'enum' => ['start', 'update', 'end'], + 'required' => false, + 'example' => 'start', + 'title' => '', ], ], [ 'name' => 'iOSLiveActivityId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'The Live Activity ID reported from the device to the user\'s server. The unique identifier of the Live Activity.', 'type' => 'string', 'required' => false, 'example' => '66B94673-B32E-4CA7-863C-3E523054FD46', 'title' => ''], ], [ 'name' => 'iOSLiveActivityAttributesType', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'The type of Live Activity to start.'."\n" + .'> Required when iOSLiveActivityEvent is start.', 'type' => 'string', 'required' => false, 'example' => 'OrderActivityAttributes', 'title' => ''], ], [ 'name' => 'iOSLiveActivityAttributes', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'JSON string, static parameters for Live Activity (Dynamic Island) push. Contains static user-defined information such as product IDs and order information.'."\n" + ."\n" + .'> Required when iOSLiveActivityEvent is start.', 'type' => 'string', 'required' => false, 'example' => '{"orderId": "12345", "product": "Shoes"}', 'title' => ''], ], [ 'name' => 'iOSLiveActivityContentState', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'Dynamic parameters for Live Activity (Dynamic Island) push, containing real-time update information such as price and inventory changes.', 'type' => 'string', 'required' => false, 'example' => '{"status": "delivered", "estimatedArrival": "2023-12-31T12:00:00Z"}', 'title' => ''], ], [ 'name' => 'iOSLiveActivityDismissalDate', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int64', - ], + 'schema' => ['description' => 'Timestamp in seconds. The ended Live Activity will remain on the lock screen until this specified time, with a maximum of 4 hours.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1743131967', 'title' => ''], ], [ 'name' => 'iOSLiveActivityStaleDate', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int64', - ], + 'schema' => ['description' => 'Timestamp in seconds. Marks the expiration time of the activity content.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1743131967', 'title' => ''], ], [ 'name' => 'AndroidNotifyType', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Notification alert type. Valid values:'."\n" + ."\n" + .'- **VIBRATE**: Vibration (default)'."\n" + .'- **SOUND**: Sound'."\n" + .'- **BOTH**: Sound and vibration'."\n" + .'- **NONE**: Silent', 'type' => 'string', 'required' => false, + 'enum' => ['NONE', 'VIBRATE', 'SOUND', 'BOTH'], 'example' => 'BOTH', - 'enum' => [ - 'NONE', - 'VIBRATE', - 'SOUND', - 'BOTH', - ], + 'title' => '', ], ], [ 'name' => 'AndroidRemind', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'When the push type is message and the device is offline, this push will use the supplementary popup feature. Default is false. Only effective when PushType=MESSAGE.'."\n" + ."\n" + .'If the message-to-notification push is successful, the notification displays the AndroidPopupTitle and AndroidPopupBody parameter values set on the server. The data obtained in the onSysNoticeOpened method of the supplementary popup when clicking the notification is the Title and Body parameter values set on the server.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], ], [ 'name' => 'AndroidOpenType', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Action after clicking the notification. Valid values:'."\n" + ."\n" + .'- **APPLICATION**: Open the application (default)'."\n" + .'- **ACTIVITY**: Open an Android Activity'."\n" + .'- **URL**: Open a URL'."\n" + .'- **NONE**: No redirect', 'type' => 'string', 'required' => false, + 'enum' => ['APPLICATION', 'ACTIVITY', 'URL', 'NONE'], 'example' => 'APPLICATION', - 'enum' => [ - 'APPLICATION', - 'ACTIVITY', - 'URL', - 'NONE', - ], + 'title' => '', ], ], [ 'name' => 'AndroidActivity', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - ], + 'schema' => ['description' => 'Specify the activity to open from the notification.'."\n" + ."\n" + .'Only pass this when AndroidOpenType="Activity", e.g.: `com.alibaba.cloudpushdemo.bizactivity`.', 'type' => 'string', 'required' => false, 'example' => 'com.alibaba.cloudpushdemo.bizactivity', 'title' => ''], ], [ 'name' => 'AndroidOpenUrl', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'https://xxxx.xxx', - ], + 'schema' => ['description' => 'URL to open when Android receives the push.'."\n" + ."\n" + .'Only pass this when AndroidOpenType="URL".', 'type' => 'string', 'required' => false, 'example' => 'https://xxxx.xxx', 'title' => ''], ], [ 'name' => 'AndroidPopupActivity', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - ], + 'schema' => ['description' => 'Specify the Activity to navigate to after clicking the notification.', 'type' => 'string', 'required' => false, 'example' => 'com.alibaba.cloudpushdemo.bizactivity', 'title' => ''], ], [ 'name' => 'AndroidPopupTitle', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'hello', - ], + 'schema' => ['description' => 'Title content in supplementary popup mode. Required when the **AndroidPopupActivity** parameter is not empty.'."\n" + ."\n" + .'Length limit: 50 characters (both Chinese and English characters count as one character).'."\n" + ."\n" + .'If using vendor channels, it must also comply with vendor channel limits. For details, see: [Android Supplementary Channel Push Limits](~~165253~~).', 'type' => 'string', 'required' => false, 'example' => 'hello', 'title' => ''], ], [ 'name' => 'AndroidPopupBody', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'hello', - ], + 'schema' => ['description' => 'Body content in supplementary popup mode. Required when the **AndroidPopupActivity** parameter is not empty.'."\n" + ."\n" + .'Length limit: 200 characters (both Chinese and English characters count as one character).'."\n" + ."\n" + .'If using vendor channels, it must also comply with vendor channel limits. For details, see: [Android Supplementary Channel Push Limits](~~165253~~).', 'type' => 'string', 'required' => false, 'example' => 'hello', 'title' => ''], ], [ 'name' => 'AndroidRenderStyle', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Notification style. Valid values:'."\n" + .'- **0**: Standard mode (default)'."\n" + .'- **1**: Long text mode (supported by Huawei, Honor, Xiaomi, OPPO, Meizu, and proprietary channels)'."\n" + .'- **2**: Big picture mode (supported by the proprietary channel, not supported on Xiaomi devices)'."\n" + .'- **3**: List mode (supported by Huawei, Honor, Xiaomi, OPPO, and proprietary channels)'."\n" + .'> If using a non-standard mode, this parameter must be provided.', + 'enumValueTitles' => ['0', '1', '2'], 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', + 'title' => '', ], ], [ 'name' => 'AndroidBigTitle', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '', - ], + 'schema' => ['description' => 'Title in long text mode. Length limit: 200 bytes (1 Chinese character counts as 3 bytes).'."\n" + ."\n" + .'- Currently only supported by the Honor channel and Huawei channel EMUI 11 and above.'."\n" + ."\n" + .'- If not provided in long text mode, the first non-empty value from Title or AndroidPopupTitle is used.', 'type' => 'string', 'required' => false, 'example' => '示例长标题', 'title' => ''], ], [ 'name' => 'AndroidBigBody', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '', - ], + 'schema' => ['description' => 'Body in long text mode. Length limit: 1000 bytes (1 Chinese character counts as 3 bytes). Subject to specific vendor channel limits when sending.'."\n" + ."\n" + .'Currently supported by:'."\n" + ."\n" + .'- Huawei: EMUI 10 and above'."\n" + ."\n" + .'- Honor: Magic UI 4.0 and above'."\n" + ."\n" + .'- Xiaomi: MIUI 10 and above'."\n" + ."\n" + .'- OPPO: ColorOS 5.0 and above'."\n" + ."\n" + .'- Meizu: Flyme'."\n" + .'- Proprietary channel: Android SDK 3.6.0 and above'."\n" + ."\n" + .'>If not provided in long text mode, the first non-empty value from Body or AndroidPopupBody is used.', 'type' => 'string', 'required' => false, 'example' => '示例长文本', 'title' => ''], ], [ 'name' => 'AndroidBigPictureUrl', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'https://imag.example.com/image.png', - ], + 'schema' => ['description' => 'Image URL in big picture mode. Currently supported by: Proprietary channel: Android SDK 3.6.0 and above.', 'type' => 'string', 'required' => false, 'example' => 'https://imag.example.com/image.png', 'title' => ''], ], [ 'name' => 'AndroidXiaomiBigPictureUrl', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'https://f6.market.xiaomi.com/download/MiPass/aaa/bbb.png', - 'deprecated' => true, - ], + 'schema' => ['description' => 'This parameter is deprecated. Starting from August 2023, Xiaomi officially no longer supports dynamically setting small icons, right-side icons, and big pictures during push on new devices/systems.', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => 'https://f6.market.xiaomi.com/download/MiPass/aaa/bbb.png', 'title' => ''], ], [ 'name' => 'AndroidImageUrl', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'https://imag.example.com/image.png', - ], + 'schema' => ['description' => 'Right-side icon URL.'."\n" + .'Currently supported by:'."\n" + .'- Huawei EMUI (only applicable in long text mode and Inbox mode).'."\n" + ."\n" + .'- Honor Magic UI (only applicable in long text mode).'."\n" + ."\n" + .'- Proprietary channel: Android SDK 3.5.0 and above.', 'type' => 'string', 'required' => false, 'example' => 'https://imag.example.com/image.png', 'title' => ''], ], [ 'name' => 'AndroidXiaomiImageUrl', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'https://imag.example.com/image.png', - 'deprecated' => true, - ], + 'schema' => ['description' => 'This parameter is deprecated. Starting from August 2023, Xiaomi officially no longer supports dynamically setting small icons, right-side icons, and big pictures during push on new devices/systems.', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => 'https://imag.example.com/image.png', 'title' => ''], ], [ 'name' => 'AndroidInboxBody', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '', - ], + 'schema' => ['description' => 'Body content in Inbox mode. The content must be a valid JSON Array with no more than 5 elements. Currently supported by:'."\n" + ."\n" + .'- Huawei: EMUI 9 and above'."\n" + .'- Honor: Magic UI 4.0 and above'."\n" + .'- Xiaomi: MIUI 10 and above'."\n" + .'- OPPO: ColorOS 5.0 and above'."\n" + .'- Proprietary channel: Android SDK 3.6.0 and above', 'type' => 'string', 'required' => false, 'example' => '["第一行","第二行"]', 'title' => ''], ], [ 'name' => 'AndroidNotificationBarType', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '100', - 'minimum' => '0', - 'example' => '2', - ], + 'schema' => ['description' => 'Android custom notification bar style. Value range: 1-100.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '100', 'minimum' => '0', 'example' => '2', 'title' => ''], ], [ 'name' => 'AndroidNotificationBarPriority', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '2', - 'minimum' => '-2', - 'example' => '0', - ], + 'schema' => ['description' => 'Priority of the Android notification position in the notification bar. Valid values: -2, -1, 0, 1, 2.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '2', 'minimum' => '-2', 'example' => '0', 'title' => ''], ], [ 'name' => 'AndroidNotificationNotifyId', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '100001', - ], + 'schema' => ['description' => 'Unique identifier for each message when displayed in the notification bar. Different notification bar messages can share the same NotifyId, allowing new notifications to replace old ones.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '100001', 'title' => ''], ], [ 'name' => 'AndroidNotificationChannel', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The channelId of the Android app, which must correspond to the channelId in the app.'."\n" + .'- Set the NotificationChannel parameter. For specific usage, see [FAQ: Notifications Not Received on Android 8.0+ Devices](~~67398~~).'."\n" + .'- Since the OPPO private message channel\'s channel_id is the same as the app\'s channelId, the channel_id for OPPO channel push takes this value.'."\n" + .'- For Huawei, FCM, and Alibaba Cloud proprietary channel push, the channel_id takes this value.', 'type' => 'string', 'required' => false, 'example' => '1', 'title' => ''], ], [ 'name' => 'AndroidNotificationHuaweiChannel', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Set the Huawei notification message classification importance parameter, which determines notification behavior on user devices. Valid values:'."\n" + ."\n" + .'- LOW: Information and marketing messages'."\n" + .'- NORMAL: Service and communication messages'."\n" + ."\n" + .'>- Huawei channel currently recommends using AndroidMessageHuaweiCategory for notification classification. AndroidNotificationHuaweiChannel is no longer required.'."\n" + .'>- Requires application on the Huawei platform. [Application Link](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section893184112272).', + 'enumValueTitles' => ['LOW' => 'LOW', 'NORMAL' => 'NORMAL'], 'type' => 'string', 'required' => false, 'example' => 'LOW', + 'title' => '', ], ], [ 'name' => 'AndroidNotificationHonorChannel', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Set the Honor notification message classification importance parameter, which determines notification behavior on user devices. Valid values:'."\n" + ."\n" + .'- **LOW**: Information and marketing messages'."\n" + .'- **NORMAL**: Service and communication messages'."\n" + ."\n" + .'Requires application on the Honor platform. [Application Link](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).', + 'enumValueTitles' => ['LOW' => 'LOW', 'NORMAL' => 'NORMAL'], 'type' => 'string', 'required' => false, 'example' => 'LOW', + 'title' => '', ], ], [ 'name' => 'AndroidNotificationXiaomiChannel', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'michannel', - ], + 'schema' => ['description' => 'Set the Xiaomi notification type channelId. Requires application on the Xiaomi platform. For details, see: [Application Link](https://dev.mi.com/console/doc/detail?pId=2422#_4).'."\n" + .'>- A single application can apply for a maximum of 8 channels on the Xiaomi channel. Please plan ahead.', 'type' => 'string', 'required' => false, 'example' => 'michannel', 'title' => ''], ], [ 'name' => 'AndroidNotificationVivoChannel', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Set the vivo notification message classification. Valid values:'."\n" + ."\n" + .'- 0: Operational messages (default)'."\n" + .'- 1: System messages'."\n" + ."\n" + .'>- vivo channel currently recommends using AndroidMessageVivoCategory for notification classification. AndroidNotificationVivoChannel is no longer required.'."\n" + .'>- Requires application on the vivo platform. For details, see: [Application Link](https://dev.vivo.com.cn/documentCenter/doc/359).', + 'enumValueTitles' => ['0', '1'], 'type' => 'string', 'required' => false, 'example' => 'classification', + 'title' => '', ], ], [ 'name' => 'AndroidNotificationGroup', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'group-1', - ], + 'schema' => ['description' => 'Message grouping. Messages in the same group are displayed as only the latest one in the notification bar along with the total count of messages received for that group. All messages are not shown and cannot be expanded. Currently supported by:'."\n" + ."\n" + .'- Huawei vendor channel'."\n" + .'- Honor vendor channel'."\n" + .'- Proprietary channel: Android SDK 3.9.1 and below'."\n" + ."\n" + .'> The proprietary channel no longer supports this parameter on Android SDK 3.9.2 and above.', 'type' => 'string', 'required' => false, 'example' => 'group-1', 'title' => ''], ], [ 'name' => 'AndroidNotificationThreadId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'Message grouping. Messages in the same group are collapsed in the notification bar and can be expanded. Notifications from different groups are displayed separately. Currently supported by:'."\n" + ."\n" + .'- Proprietary channel: Android SDK 3.9.2 and above', 'type' => 'string', 'required' => false, 'example' => 'thread-1', 'title' => ''], ], [ 'name' => 'AndroidExtParameters', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}', - ], + 'schema' => ['description' => 'Set the extension attributes of the notification. This attribute does not take effect when PushType is set to MESSAGE.'."\n" + ."\n" + .'This parameter must be passed in JSON map format, otherwise parsing will fail.', 'type' => 'string', 'required' => false, 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}', 'title' => ''], ], [ 'name' => 'AndroidMessageHuaweiUrgency', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Huawei channel notification delivery priority. Valid values:'."\n" + ."\n" + .'- **HIGH**'."\n" + .'- **NORMAL**'."\n" + ."\n" + .'Requires permission application. For details, see: [Application Link](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509).', + 'enumValueTitles' => ['HIGH' => 'HIGH', 'NORMAL' => 'NORMAL'], 'type' => 'string', 'required' => false, 'example' => 'HIGH', + 'title' => '', ], ], [ 'name' => 'AndroidMessageHuaweiCategory', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'VOIP', - ], + 'schema' => ['description' => 'Purpose 1: After completing the [self-classification rights application](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835?#section3410731125514), this is used to identify the message type, determine the [message notification method](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#ZH-CN_TOPIC_0000001149358835__p3850133955718), and accelerate delivery for specific message types. For valid values, refer to the [Message Classification Standard](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835#section1076611477914) in Huawei\'s official push documentation, using the "Cloud notification category value" or "Local notification category value" from the table.'."\n" + ."\n" + .'Purpose 2: After [applying for special permissions](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/faq-0000001050042183#section037425218509), this is used to identify high-priority transparent transmission scenarios. Valid values:'."\n" + .'- VOIP: Audio/video calls'."\n" + .'- PLAY_VOICE: Voice playback'."\n" + ."\n" + .'> For items where "Cloud notification category value" is "Not applicable", they are delivered through the Alibaba Cloud proprietary channel. For items where "Local notification category value" is "Not applicable", they are delivered through the Huawei channel.', 'type' => 'string', 'required' => false, 'example' => 'VOIP', 'title' => ''], ], [ 'name' => 'AndroidMessageOppoCategory', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'OPPO classifies messages into two categories for management: Communication & Service, and Content & Marketing.'."\n" + ."\n" + .'Communication & Service (requires permission application):'."\n" + .'- IM: Instant messaging, audio, video calls'."\n" + .'- ACCOUNT: Personal account and asset changes'."\n" + .'- DEVICE_REMINDER: Personal device reminders'."\n" + .'- ORDER: Personal order/logistics status changes'."\n" + .'- TODO: Personal schedules/to-dos'."\n" + .'- SUBSCRIPTION: Personal subscriptions'."\n" + ."\n" + .'Content & Marketing:'."\n" + .'- NEWS: News and information'."\n" + .'- CONTENT: Content recommendations'."\n" + .'- MARKETING: Platform promotions'."\n" + .'- SOCIAL: Social updates'."\n" + ."\n" + .'For details, refer to [OPUSH Message Classification Rules](https://open.oppomobile.com/new/developmentDoc/info?id=13189).', 'type' => 'string', 'required' => false, 'example' => 'MARKETING', 'title' => ''], ], [ 'name' => 'AndroidMessageOppoNotifyLevel', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - ], + 'schema' => ['description' => 'OPPO channel notification bar message notification level. Valid values:'."\n" + .'- 1: Notification bar'."\n" + .'- 2: Notification bar, lock screen, ringtone, vibration (default notification level for Communication & Service messages)'."\n" + .'- 16: Notification bar, lock screen, ringtone, vibration, banner (requires permission application)'."\n" + ."\n" + .'> When using the AndroidMessageOppoNotifyLevel parameter, the AndroidMessageOppoCategory parameter must also be provided.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], [ 'name' => 'AndroidMessageVivoCategory', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'TODO', - ], + 'schema' => ['description' => 'vivo classifies messages into two categories for management: System messages and Operational messages.'."\n" + .'System messages:'."\n" + .'- IM: Instant messages'."\n" + .'- ACCOUNT: Accounts and assets'."\n" + .'- TODO: Schedules and to-dos'."\n" + .'- DEVICE_REMINDER: Device information'."\n" + .'- ORDER: Orders and logistics'."\n" + .'- SUBSCRIPTION: Subscription reminders'."\n" + ."\n" + .'Operational messages:'."\n" + .'- NEWS: News'."\n" + .'- CONTENT: Content recommendations'."\n" + .'- MARKETING: Operational promotions'."\n" + .'- SOCIAL: Social updates'."\n" + ."\n" + .'For details, refer to [Classification Description](https://dev.vivo.com.cn/documentCenter/doc/359#s-ef3qugc3).', 'type' => 'string', 'required' => false, 'example' => 'TODO', 'title' => ''], ], [ 'name' => 'AndroidTargetUserType', 'in' => 'query', 'schema' => [ + 'description' => 'Set vendor channel notification type:'."\n" + .'- **0**: Official notification (default).'."\n" + .'- **1**: Test notification.'."\n" + ."\n" + .'>- When this parameter is configured, it is equivalent to simultaneously configuring AndroidHuaweiTargetUserType, AndroidHonorTargetUserType, AndroidVivoPushMode, and AndroidOppoIntentEnv. The specific vendor channel parameters can override this parameter.'."\n" + .'>- Currently supported by: Huawei channel, Honor channel, vivo channel, and OPPO Fluid Cloud.', 'type' => 'integer', 'format' => 'int32', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '0', + 'title' => '', ], ], [ 'name' => 'AndroidHuaweiTargetUserType', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Set Huawei channel notification type:'."\n" + .'- **0**: Official notification (default).'."\n" + .'- **1**: Test notification.'."\n" + ."\n" + .'> Each application can send up to 500 test notifications per day, and these are not subject to the daily per-device push limit.', + 'enumValueTitles' => ['0', '1'], 'type' => 'integer', 'format' => 'int32', + 'enum' => ['0', '1'], 'required' => false, 'example' => '0', - 'enum' => [ - '0', - '1', - ], + 'title' => '', ], ], [ 'name' => 'AndroidHonorTargetUserType', 'in' => 'query', 'schema' => [ + 'description' => 'Set Honor channel notification type:'."\n" + .'- **0**: Official notification (default).'."\n" + .'- **1**: Test notification.'."\n" + ."\n" + .'> Each application can send up to 1000 test notifications per day, and these are not subject to the daily per-device push limit.', 'type' => 'integer', 'format' => 'int32', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '0', + 'title' => '', ], ], [ 'name' => 'AndroidVivoPushMode', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Set vivo channel notification type:'."\n" + .'- **0**: Official push (default).'."\n" + .'- **1**: Test push.'."\n" + ."\n" + .'> For test push, please configure the test device on the vivo console in advance. The test device RegId can be obtained by searching for "onReceiveRegId regId" in the device startup logs.', + 'enumValueTitles' => ['0', '1'], 'type' => 'integer', 'format' => 'int32', + 'enum' => ['0', '1'], 'required' => false, 'example' => '0', - 'enum' => [ - '0', - '1', - ], + 'title' => '', ], ], [ 'name' => 'AndroidOppoIntentEnv', 'in' => 'query', 'schema' => [ + 'description' => 'Set OPPO Fluid Cloud push environment:'."\n" + .'- **0**: Production environment (default).'."\n" + .'- **1**: Test environment.'."\n" + ."\n" + .'> OPPO Fluid Cloud test environment requires setting up the client environment as described in [Environment Setup](https://open.oppomobile.com/documentation/page/info?id=13590).', 'type' => 'integer', 'format' => 'int32', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '1', + 'title' => '', ], ], [ 'name' => 'AndroidHuaweiBusinessType', 'in' => 'query', 'schema' => [ + 'description' => 'Set Huawei Quick Notification parameter:'."\n" + .'- **0**: Send Huawei standard notification (default).'."\n" + .'- **1**: Send Huawei Quick Notification.', 'type' => 'integer', 'format' => 'int32', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '1', + 'title' => '', ], ], [ 'name' => 'AndroidHuaweiReceiptId', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'RCP4C123456', - ], + 'schema' => ['description' => 'Huawei channel receipt ID. This receipt ID can be found in the receipt parameter configuration on the Huawei channel push management platform.'."\n" + ."\n" + .'> If the default receipt configuration on the Huawei channel push management platform is set to the Alibaba Cloud receipt, this is not required. If not, it is recommended to configure the Huawei channel default receipt ID in the Alibaba Cloud EMAS Mobile Push console first.', 'type' => 'string', 'required' => false, 'example' => 'RCP4C123456', 'title' => ''], ], [ 'name' => 'AndroidVivoReceiptId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'vivo channel receipt ID. This receipt ID can be found in the application information of the push service on the vivo open platform.'."\n" + ."\n" + .'> If the default receipt configuration on the vivo open platform is set to the Alibaba Cloud receipt, this is not required. If not, it is recommended to configure the vivo channel default receipt ID in the Alibaba Cloud EMAS Mobile Push console first.', 'type' => 'string', 'required' => false, 'example' => '123', 'title' => ''], ], [ 'name' => 'AndroidBadgeClass', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'Full class name of the app entry Activity for badge settings.'."\n" + ."\n" + .'> Only effective for Huawei/Honor vendor channel push.', 'type' => 'string', 'required' => false, 'example' => 'com.alibaba.cloudpushdemo.bizactivity', 'title' => ''], ], [ 'name' => 'AndroidBadgeAddNum', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'maximum' => '99', - 'minimum' => '1', - ], + 'schema' => ['description' => 'Set the badge increment value, which is added to the current badge count. Value range: [1-99].'."\n" + .'> Only effective for Huawei/Honor vendor channel push. When both AndroidBadgeAddNum and AndroidBadgeSetNum are present, AndroidBadgeSetNum takes precedence.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '99', 'minimum' => '1', 'required' => false, 'example' => '1', 'title' => ''], ], [ 'name' => 'AndroidBadgeSetNum', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - 'maximum' => '99', - 'minimum' => '1', - ], + 'schema' => ['description' => 'Set a fixed badge number. Value range: [0-99].'."\n" + ."\n" + .'> For vendor channel push, only effective on Huawei and Honor channels. For Alibaba Cloud proprietary channel push, only effective on Huawei, Honor, and vivo devices.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '99', 'minimum' => '1', 'required' => false, 'example' => '5', 'title' => ''], ], [ 'name' => 'AndroidMusic', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '', - ], + 'schema' => ['description' => 'Huawei vendor channel notification sound. Specify the name of an audio file stored in the client project\'s app/src/main/res/raw/ directory, without the file extension.'."\n" + ."\n" + .'If not set, the default ringtone is used.', 'type' => 'string', 'required' => false, 'example' => 'alicloud_notification_sound', 'title' => ''], ], [ 'name' => 'HarmonyRemind', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - ], + 'schema' => ['description' => 'When the push type is message and the device is offline, this push will use the supplementary popup feature. Default is false. Only effective when PushType=MESSAGE.'."\n" + ."\n" + .'If the message-to-notification push is successful, the notification displays the HarmonyRemindTitle and HarmonyRemindBody parameter values set on the server.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], ], [ 'name' => 'HarmonyRemindTitle', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'HarmonyOS notification title used when converting HarmonyOS messages to notifications. Only valid when HarmonyRemind is true.', 'type' => 'string', 'required' => false, 'example' => '新消息', 'title' => ''], ], [ 'name' => 'HarmonyRemindBody', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'HarmonyOS notification content used when converting HarmonyOS messages to notifications. Only valid when HarmonyRemind is true.', 'type' => 'string', 'required' => false, 'example' => '您有一条新消息,请查收', 'title' => ''], ], [ 'name' => 'HarmonyCategory', 'in' => 'query', 'schema' => [ - 'type' => 'string', - 'enum' => [ - 'IM', - 'VOIP', - 'SUBSCRIPTION', - 'TRAVEL', - 'HEALTH', - 'WORK', - 'ACCOUNT', - 'EXPRESS', - 'FINANCE', - 'DEVICE_REMINDER', - 'MAIL', - 'CUSTOMER_SERVICE', - 'MARKETING', - ], + 'description' => 'Notification message category. After completing the notification message self-classification rights application, this is used to identify the message type. Different notification message types affect how messages are displayed and how alerts are triggered. Valid values:'."\n" + ."\n" + .'- IM: Instant messaging'."\n" + .'- VOIP: Audio/video calls'."\n" + .'- SUBSCRIPTION: Subscriptions'."\n" + .'- TRAVEL: Travel'."\n" + .'- HEALTH: Health'."\n" + .'- WORK: Work task reminders'."\n" + .'- ACCOUNT: Account updates'."\n" + .'- EXPRESS: Orders & logistics'."\n" + .'- FINANCE: Finance'."\n" + .'- DEVICE_REMINDER: Device reminders'."\n" + .'- MAIL: Email'."\n" + .'- CUSTOMER_SERVICE: Customer service messages'."\n" + .'- MARKETING: News, content recommendations, social updates, product promotions, financial updates, lifestyle information, surveys, feature recommendations, operational promotions (only identifies content, does not accelerate message delivery), collectively referred to as information and marketing messages'."\n" + ."\n" + .'For details, see the HarmonyOS official documentation [Notification.category](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section17371529101117).', + 'type' => 'string', + 'enum' => ['IM', 'VOIP', 'SUBSCRIPTION', 'TRAVEL', 'HEALTH', 'WORK', 'ACCOUNT', 'EXPRESS', 'FINANCE', 'DEVICE_REMINDER', 'MAIL', 'CUSTOMER_SERVICE', 'MARKETING'], + 'required' => false, + 'example' => 'IM', + 'title' => '', ], ], [ 'name' => 'HarmonyNotificationSlotType', 'in' => 'query', 'schema' => [ + 'description' => 'Use the specified notification channel type. Only effective when the Alibaba Cloud proprietary channel is online.'."\n" + ."\n" + .'- SOCIAL_COMMUNICATION: Social communication.'."\n" + .'- SERVICE_INFORMATION: Service reminders.'."\n" + .'- CONTENT_INFORMATION: Content information.'."\n" + .'- CUSTOMER_SERVICE: Customer service messages. This type is used for customer service messages between users and merchants, and must be initiated by the user.'."\n" + .'- OTHER_TYPES: Other.'."\n" + ."\n" + .'For details, see the HarmonyOS official documentation [SlotType](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-notificationmanager-V5#slottype).', 'type' => 'string', - 'enum' => [ - 'SOCIAL_COMMUNICATION', - 'SERVICE_INFORMATION', - 'CONTENT_INFORMATION', - 'CUSTOMER_SERVICE', - 'OTHER_TYPES', - ], + 'enum' => ['SOCIAL_COMMUNICATION', 'SERVICE_INFORMATION', 'CONTENT_INFORMATION', 'CUSTOMER_SERVICE', 'OTHER_TYPES'], + 'required' => false, + 'example' => 'SOCIAL_COMMUNICATION', + 'title' => '', ], ], [ 'name' => 'HarmonyNotifyId', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - ], + 'schema' => ['description' => 'Unique identifier for each message when displayed as a notification. If not provided, the push service automatically generates a unique identifier for each message. Different notification messages can share the same notifyId, enabling the new message to replace the old one.'."\n" + ."\n" + .'For details, see the HarmonyOS official documentation [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', 'title' => ''], ], [ 'name' => 'HarmonyActionType', 'in' => 'query', 'schema' => [ + 'description' => 'Action after clicking the notification. Valid values:'."\n" + ."\n" + .'- APP_HOME_PAGE: Open app home page'."\n" + .'- APP_CUSTOM_PAGE: Open app custom page', 'type' => 'string', - 'enum' => [ - 'APP_HOME_PAGE', - 'APP_CUSTOM_PAGE', - ], + 'enum' => ['APP_HOME_PAGE', 'APP_CUSTOM_PAGE'], + 'required' => false, + 'example' => 'APP_HOME_PAGE', + 'title' => '', ], ], [ 'name' => 'HarmonyAction', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'The action corresponding to the in-app page ability.'."\n" + ."\n" + .'><notice>When HarmonyActionType is APP_CUSTOM_PAGE, at least one of HarmonyUri and HarmonyAction must be provided.></notice>'."\n" + ."\n" + .'For details, see the HarmonyOS official documentation [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', 'title' => ''], ], [ 'name' => 'HarmonyUri', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'The URI corresponding to the in-app page ability.'."\n" + .'><notice>When HarmonyActionType is APP_CUSTOM_PAGE, at least one of HarmonyUri and HarmonyAction must be provided. When multiple Abilities exist, fill in the action and uri of each Ability separately. The action is used first to find the corresponding in-app page.></notice>'."\n" + ."\n" + .'For details, see the HarmonyOS official documentation [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', 'title' => ''], ], [ 'name' => 'HarmonyRenderStyle', 'in' => 'query', 'schema' => [ + 'description' => 'Notification message style:'."\n" + .'- NORMAL: Standard notification (default)'."\n" + .'- MULTI_LINE: Multi-line text style', 'type' => 'string', - 'enum' => [ - 'NORMAL', - 'MULTI_LINE', - ], + 'enum' => ['NORMAL', 'MULTI_LINE'], + 'required' => false, + 'example' => 'NORMAL', + 'title' => '', ], ], [ 'name' => 'HarmonyImageUrl', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'URL for the large icon on the right side of the notification. The URL must use the HTTPS protocol.'."\n" + ."\n" + .'> Supported image formats: png, jpg, jpeg, heif, gif, bmp. Image width * height must be less than 25000 pixels.'."\n" + ."\n" + .'For details, see the HarmonyOS official documentation [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', 'title' => ''], ], [ 'name' => 'HarmonyInboxContent', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'Content for multi-line text style. Required when HarmonyRenderStyle is MULTI_LINE. Supports up to 3 items.', 'type' => 'string', 'required' => false, 'example' => '["1.content1","2.content2","3.content3"]', 'title' => ''], ], [ 'name' => 'HarmonyExtParameters', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'Set the extension attributes of the notification. This attribute does not take effect when PushType is set to MESSAGE.'."\n" + ."\n" + .'This parameter must be passed in JSON map format, otherwise parsing will fail.', 'type' => 'string', 'required' => false, 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}'."\n", 'title' => ''], ], [ 'name' => 'HarmonyTestMessage', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - ], + 'schema' => ['description' => 'Test message flag:'."\n" + ."\n" + .'- false: Official message (default)'."\n" + .'- true: Test message'."\n" + ."\n" + .'For details, see the HarmonyOS official documentation [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', 'title' => ''], ], [ 'name' => 'HarmonyReceiptId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'HarmonyOS channel receipt ID. This receipt ID can be found in the receipt parameter configuration on the HarmonyOS channel push management platform.'."\n" + ."\n" + .'> If the default receipt configuration on the HarmonyOS channel push management platform is set to the Alibaba Cloud receipt, this is not required. If not, it is recommended to configure the HarmonyOS channel default receipt ID in the Alibaba Cloud EMAS Mobile Push console first.'."\n" + ."\n" + .'For details, see the HarmonyOS official documentation [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', 'title' => ''], ], [ 'name' => 'HarmonyExtensionPush', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - ], + 'schema' => ['description' => 'When PushType is NOTICE, whether to send as a HarmonyOS notification extension message.'."\n" + ."\n" + .'- true: Send notification extension message'."\n" + .'- false: Send standard notification (default)'."\n" + ."\n" + .'Notification extension messages require permission application on the HarmonyOS side before sending. For details, refer to the HarmonyOS documentation [Send Notification Extension Messages](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-send-extend-noti-V5).</br>'."\n" + .'Supported from HarmonyOS SDK 1.2.0.', 'type' => 'boolean', 'required' => false, 'example' => 'true'."\n", 'title' => ''], ], [ 'name' => 'HarmonyExtensionExtraData', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'Extra data for notification extension messages.</br>'."\n" + .'Effective when sending HarmonyOS notification extension messages.</br>'."\n" + .'Conceptually equivalent to the extraData field of HarmonyOS notification extension messages. For the specific definition, refer to [HarmonyOS ExtensionPayload Description](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section161192514234).</br>'."\n" + .'Supported from HarmonyOS SDK 1.2.0.', 'type' => 'string', 'required' => false, 'example' => '示例额外数据', 'title' => ''], ], [ 'name' => 'HarmonyBadgeAddNum', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - ], + 'schema' => ['description' => 'HarmonyOS app badge increment number. Refer to [HarmonyOS badge addNum field description](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145).</br>'."\n" + .'Supported from HarmonyOS SDK 1.2.0.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], [ 'name' => 'HarmonyBadgeSetNum', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int32', - ], + 'schema' => ['description' => 'HarmonyOS app badge set number. Refer to [HarmonyOS badge setNum field description](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section266310382145).'."\n" + .'Supported from HarmonyOS SDK 1.2.0.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], [ 'name' => 'SmsTemplateName', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '', - ], + 'schema' => ['description' => 'The template name for supplementary SMS. This can be obtained from the SMS template management page and is a system-assigned name, not a developer-defined name.', 'type' => 'string', 'required' => false, 'example' => '短信模板名称', 'title' => ''], ], [ 'name' => 'SmsSignName', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '', - ], + 'schema' => ['description' => 'The signature for supplementary SMS.', 'type' => 'string', 'required' => false, 'example' => '短信签名', 'title' => ''], ], [ 'name' => 'SmsParams', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'key1=value1', - ], + 'schema' => ['description' => 'Variable name-value pairs for the SMS template, in the format: `key1=value1&key2=value2`.', 'type' => 'string', 'required' => false, 'example' => 'key1=value1', 'title' => ''], ], [ 'name' => 'SmsDelaySecs', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'minimum' => '1', - 'example' => '15', - ], + 'schema' => ['description' => 'Delay time before triggering SMS, in seconds.'."\n" + ."\n" + .'Must be set when using SMS convergence. Recommended to be 15 seconds or more, with a maximum of 3 days, to avoid duplication between SMS and push notifications.'."\n" + ."\n" + .'> When SMS convergence is used, the ExpireTime parameter becomes ineffective. The notification expiration time is calculated based on the SmsDelaySecs parameter, with the expiration time being the current time plus SmsDelaySecs.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'minimum' => '1', 'example' => '15', 'title' => ''], ], [ 'name' => 'SmsSendPolicy', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Condition for triggering SMS. Valid values:'."\n" + ."\n" + .'- **0**: Triggered when push is not received.'."\n" + .'- **1**: Triggered when user has not opened the notification.', + 'enumValueTitles' => ['0', '1'], 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '1', 'minimum' => '0', 'example' => '0', + 'title' => '', ], ], [ 'name' => 'SendSpeed', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'deprecated' => true, - 'required' => false, - 'minimum' => '10000', - 'example' => '0', - ], + 'schema' => ['description' => 'This parameter is deprecated.', 'type' => 'integer', 'format' => 'int32', 'deprecated' => true, 'required' => false, 'minimum' => '10000', 'example' => '0', 'title' => ''], ], [ 'name' => 'AndroidXiaoMiNotifyTitle', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => '', - ], + 'schema' => ['description' => 'This parameter is deprecated. All third-party supplementary popups are now supported by the new parameter **AndroidPopupTitle**.', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '无', 'title' => ''], ], [ 'name' => 'AndroidXiaoMiNotifyBody', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => '', - ], + 'schema' => ['description' => 'This parameter is deprecated. All third-party supplementary popups are now supported by the new parameter **AndroidPopupBody**.', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '无', 'title' => ''], ], [ 'name' => 'AndroidXiaoMiActivity', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => '', - ], + 'schema' => ['description' => 'This parameter is deprecated. All third-party supplementary popups are now supported by the new parameter **AndroidPopupActivity**.', 'type' => 'string', 'deprecated' => true, 'required' => false, 'example' => '无', 'title' => ''], ], [ 'name' => 'IdempotentToken', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'maxLength' => 36, - 'minLength' => 36, - ], + 'schema' => ['description' => 'An idempotent parameter to prevent duplicate pushes caused by API client retries. When the same IdempotentToken is used for calls within 15 minutes, only one push will be made, and subsequent calls will return the result of the first successful push.'."\n" + ."\n" + .'> '."\n" + .'> - The parameter format is a standard 36-character UUID (8-4-4-4-12). Each valid character is a hexadecimal digit in the range 0-9 or a-f, case-insensitive.'."\n" + .'> - This parameter is only used to prevent duplicate pushes caused by retries. It cannot prevent duplicate pushes caused by concurrent calls.', 'type' => 'string', 'maxLength' => 36, 'minLength' => 36, 'required' => false, 'example' => 'c8016d13-6e76-410c-9bda-769383d11787', 'title' => ''], ], [ 'name' => 'AndroidMeizuNoticeMsgType', 'in' => 'query', 'allowEmptyValue' => true, 'schema' => [ + 'description' => 'Meizu message type:'."\n" + .'- 0: Public message (default)'."\n" + .'- 1: Private message', + 'enumValueTitles' => ['Public message (default)', 'Private message'], 'type' => 'integer', 'format' => 'int32', 'docRequired' => false, 'example' => '0', - 'enum' => [ - '0', - '1', - ], + 'enum' => ['0', '1'], + 'required' => false, + 'title' => '', ], ], [ 'name' => 'AndroidOppoPrivateMsgTemplateId', 'in' => 'query', - 'schema' => [ - 'title' => '私信模板ID', - 'type' => 'string', - ], + 'schema' => ['title' => '', 'description' => 'OPPO private message template ID', 'type' => 'string', 'required' => false, 'example' => '687557242b1634hzefs3d5013'], ], [ 'name' => 'AndroidOppoPrivateTitleParameters', 'in' => 'query', 'style' => 'json', 'schema' => [ - 'title' => '私信标题参数', + 'title' => '', + 'description' => 'OPPO private message template title parameters', 'type' => 'object', - 'additionalProperties' => [ - 'type' => 'string', - ], + 'required' => false, + 'additionalProperties' => ['description' => 'Variable name and value in the OPPO private message template title', 'type' => 'string', 'example' => 'my_title', 'title' => ''], + 'example' => '', ], ], [ @@ -2229,40 +4003,127 @@ 'in' => 'query', 'style' => 'json', 'schema' => [ - 'title' => '私信内容参数', + 'title' => '', + 'description' => 'OPPO private message template content parameters', 'type' => 'object', - 'additionalProperties' => [ - 'type' => 'string', - ], + 'required' => false, + 'additionalProperties' => ['description' => 'Variable name and value in the OPPO private message template content', 'type' => 'string', 'example' => 'my_content', 'title' => ''], + 'example' => '', ], ], [ + 'name' => 'AndroidXiaomiTemplateId', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'Xiaomi private message template ID', 'type' => 'string', 'required' => false, 'example' => 'P10645'], + ], + [ + 'name' => 'AndroidXiaomiTemplateParams', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'Xiaomi private message template parameters, JSON string', 'type' => 'string', 'required' => false, 'example' => '{"keywords1":"Tom","keywords2":"phone"}'], + ], + [ 'name' => 'HarmonyLiveViewPayload', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'JSON string of the HarmonyOS Live View data structure [LiveViewPayload](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/push-scenariozed-api-request-param-V13#section66881469306). For development integration, refer to the documentation [HarmonyOS Live View Push Guide](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" + .'}', 'title' => ''], ], [ 'name' => 'AndroidHuaweiLiveNotificationPayload', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'JSON string of the Huawei Android Live Notification data structure [LiveNotificationPayload](https://developer.huawei.com/consumer/cn/doc/HMSCore-References/rest-live-0000001562939968#ZH-CN_TOPIC_0000001700850537__p195121620102511). For development integration, refer to the documentation [Huawei Live Notification Push Guide](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" + .'}', 'title' => ''], ], [ 'name' => 'AndroidOppoIntelligentIntent', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'JSON string of the OPPO Fluid Cloud intent sharing data structure [IntelligentIntent](https://open.oppomobile.com/documentation/page/info?id=13565). For development integration, refer to the documentation [OPPO Fluid Cloud Push Guide](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" + .'}', 'title' => ''], ], [ 'name' => 'AndroidOppoDeleteIntentData', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'JSON string of the OPPO Fluid Cloud intent deletion data structure [data](https://open.oppomobile.com/documentation/page/info?id=13578). When the AndroidOppoIntelligentIntent parameter is already provided, this parameter is ignored. For development integration, refer to the documentation [OPPO Fluid Cloud Push Guide](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" + .'}', 'title' => ''], + ], + [ + 'name' => 'AndroidVivoLiveMessage', + 'in' => 'query', + 'schema' => ['description' => 'JSON string of the vivo Atomic Island data structure [liveMessage](https://dev.vivo.com.cn/documentCenter/doc/896#s-fdagzbd4). For development integration, refer to the documentation [vivo Atomic Island Push Guide](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" + .'}', 'title' => ''], + ], + [ + 'name' => 'AndroidXiaomiFocusParam', + 'in' => 'query', + 'schema' => ['description' => 'JSON string of the Xiaomi Super Island data structure [miui.focus.param](https://dev.mi.com/xiaomihyperos/documentation/detail?pId=2131). For development integration, refer to the documentation [Xiaomi Super Island Push Guide](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" + .'}', 'title' => ''], + ], + [ + 'name' => 'AndroidXiaomiFocusPics', + 'in' => 'query', + 'schema' => ['description' => 'JSON string of the Xiaomi Super Island image data [miui.focus.pic_xxx](https://dev.mi.com/xiaomihyperos/documentation/detail?pId=2131). For development integration, refer to the documentation [Xiaomi Super Island Push Guide](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" + .'}', 'title' => ''], ], ], 'responses' => [ @@ -2270,119 +4131,180 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'MessageId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '501029', - ], - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], + 'MessageId' => ['description' => 'The message ID that identifies a push operation.', 'type' => 'string', 'example' => '501029', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], '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' => ''], + ['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' => ''], + ['errorCode' => 'PermissionDenied', 'errorMessage' => 'The specified AppKey is not authorized.', 'description' => ''], + ['errorCode' => 'SendSpeedNotSupported', 'errorMessage' => 'SendSpeed is not supported for specified Target.', 'description' => ''], + ['errorCode' => 'SmsProfileConfigFailed', 'errorMessage' => 'Failed to configure SMS profile.', 'description' => ''], + ['errorCode' => 'SmsProfileGetFailed', 'errorMessage' => 'Failed to get SMS profile.', 'description' => ''], + ['errorCode' => 'SmsRoleAuthorizeFailed', 'errorMessage' => 'Failed to authorize SMS role.', 'description' => ''], + ['errorCode' => 'SmsRoleUnauthorized', 'errorMessage' => 'The SMS role is unauthorized.', 'description' => ''], + ['errorCode' => 'TagsNumberBeyondLimit', 'errorMessage' => 'The number of tags bound to this app exceeds the limit.', 'description' => ''], + ['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' => ''], + ['errorCode' => 'TargetNotSupported', 'errorMessage' => 'Target is not supported for batch push.', '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.', - ], - [ - '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' => 'The request processing has failed due to some unknown error.'], + ['errorCode' => 'Timeout', 'errorMessage' => 'The request processing is timeout.', 'description' => 'Request processing timed out.'], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', + 'title' => 'Advanced Push', + 'description' => '**Please ensure that you have fully understood the [billing methods and pricing](~~434638~~) of the EMAS Mobile Push product before using this API.**'."\n" + ."\n" + .'This API differentiates between Android, iOS, and HarmonyOS platforms. For push calls on different platforms, you need to pass the corresponding platform\'s AppKey.', + 'requestParamsDescription' => '## Additional Information on Request Parameters'."\n" + .'**Title/Body details are as follows:**'."\n" + ."\n" + .'|Attribute\\Push Type|Message (iOS)|Message (Android)|Notification (iOS)| Notification (Android)|'."\n" + .'|:-----------------|:-----------------|:-----------------|:-----------------|:-----------------|'."\n" + .'|Title |Message title, corresponding to the title field of CCPSysMessage in the message callback| CPushMessage.title field| Notification title | Notification title, notification callback method (onNotificationOpened)|'."\n" + .'Body| Message body, corresponding to the body field of CCPSysMessage in the message callback| Message body, CPushMessage.content field| Notification content |Notification content, notification callback method (onNotificationOpened)|'."\n" + ."\n" + .'**The following configurations only apply to the Android supplementary popup feature:**'."\n" + ."\n" + .'When the device is offline during push (i.e., the persistent connection to the push server is disconnected), the push can activate the supplementary popup feature. To enable the supplementary popup feature, see [Mobile Push Supplementary Channel Configuration](https://help.aliyun.com/document_detail/30067.html). The following conditions must also be met:'."\n" + ."\n" + .'* Third-party supplementary channels are integrated.'."\n" + .'* The StoreOffline parameter is set to true.'."\n" + .'* Push notification (no need to set AndroidRemind) or push message with AndroidRemind set to true.'."\n" + .'* The AndroidPopupActivity, AndroidPopupTitle, and AndroidPopupBody parameters are correctly set.', 'responseParamsDescription' => ' ', - ], - 'MassPush' => [ - 'summary' => '批量推送', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + 'extraInfo' => '## Java Sample Code'."\n" + ."\n" + .'```'."\n" + .'PushRequest pushRequest = new PushRequest();'."\n" + .'// Push target'."\n" + .'pushRequest.setAppKey(appKey);'."\n" + .'pushRequest.setTarget("ALL"); // Push target: DEVICE: push to devices; ACCOUNT: push to specified accounts; TAG: push to custom tags; ALIAS: push by alias; ALL: push to all'."\n" + .'pushRequest.setTargetValue("all"); // Set according to Target. For example, if Target=DEVICE, the value is deviceid1,deviceid2. Multiple values are separated by commas. (Accounts and devices have a limit of 100 per request)'."\n" + .'pushRequest.setDeviceType("iOS"); // Device type deviceType. iOS devices: "iOS"; Android devices: "ANDROID"; All: "ALL", this is the default value.'."\n" + .'// Push configuration'."\n" + .'pushRequest.setPushType("MESSAGE"); // MESSAGE: message (default), NOTICE: notification'."\n" + .'pushRequest.setTitle("Hello"); // Message title'."\n" + .'pushRequest.setBody("PushRequest body"); // Message content'."\n" + .'// Push configuration: iOS'."\n" + .'pushRequest.setIOSBadge(5); // iOS app icon badge number'."\n" + .'pushRequest.setIOSMusic("default"); // iOS notification sound'."\n" + .'pushRequest.setIOSApnsEnv("PRODUCT"); // iOS notifications are sent through the APNs center. Fill in the corresponding environment information. \'DEV\': development environment \'PRODUCT\': production environment'."\n" + .'pushRequest.setIOSRemind(true); // When the device is offline during message push (i.e., the persistent connection to the push server is disconnected), this push will be delivered as a notification through Apple\'s APNs channel once. Note: **Offline message-to-notification conversion only applies to the `production environment`**'."\n" + .'pushRequest.setIOSRemindBody("PushRequest summary"); // iOS notification content used when converting messages to notifications, only valid when iOSApnsEnv=`PRODUCT` && iOSRemind is true'."\n" + .'pushRequest.setIOSExtParameters("{\\"k1\\":\\"ios\\",\\"k2\\":\\"v2\\"}"); // Notification extension attributes (Note: this parameter must be passed in JSON map format, otherwise parsing will fail)'."\n" + .'// Push configuration: Android'."\n" + .'pushRequest.setAndroidOpenType("ACTIVITY"); // Action after clicking notification. \'APPLICATION\': open app \'ACTIVITY\': open Android Activity \'URL\': open URL \'NONE\': no redirect'."\n" + .'pushRequest.setAndroidNotifyType("SOUND"); // Notification alert type. \'VIBRATE\': vibration \'SOUND\': sound \'DEFAULT\': sound and vibration \'NONE\': no processing, user-defined'."\n" + .'pushRequest.setAndroidOpenUrl("http://www.alibaba.com");'."\n" + .'pushRequest.setAndroidMusic("alicloud_notification_sound"); // Huawei vendor channel notification sound'."\n" + .'pushRequest.setAndroidActivity("com.alibaba.push.PushActivity"); // Open the corresponding ACTIVITY after Android receives the push, only valid when `AndroidOpenType="ACTIVITY"`'."\n" + .'pushRequest.setAndroidPopupActivity("com.alibaba.push.PopupActivity"); // Setting this parameter enables the supplementary popup feature. Specifies the Activity to navigate to after clicking the notification (Prerequisites: 1. Third-party supplementary channel integrated; 2. StoreOffline set to true)'."\n" + .'pushRequest.setAndroidPopupTitle("Popup Title"); // Set supplementary popup notification title'."\n" + .'pushRequest.setAndroidPopupBody("Popup Body"); // Set supplementary popup notification content'."\n" + .'pushRequest.setAndroidNotificationBarType(50); // Android custom notification bar style, value range: 1-100'."\n" + .'pushRequest.setAndroidNotificationBarPriority(2); // Priority of Android notification position in the notification bar: -2 -1 0 1 2'."\n" + .'pushRequest.setAndroidExtParameters("{\\"k1\\":\\"android\\",\\"k2\\":\\"v2\\"}"); // Set notification extension attributes (Note: this parameter must be passed in JSON map format, otherwise parsing will fail)'."\n" + .'// Push control'."\n" + .'final Date pushDate = new Date(System.currentTimeMillis() + 3600 * 1000); // For scheduled sending. If not set, the default is immediate sending. Time format follows the ISO8601 standard in UTC, format: `YYYY-MM-DDThh:mm:ssZ`.'."\n" + .'final String pushTime = ParameterHelper.getISO8601Time(pushDate);'."\n" + .'pushRequest.setPushTime(pushTime); // Delayed push. Optional, if not set, it means immediate push'."\n" + .'pushRequest.setStoreOffline(true); // Whether to save offline messages. If saved, when the user is offline during push, they will receive it when they next come online. On Android, if set to false, only the Alibaba Cloud proprietary online channel is used'."\n" + .'final String expireTime = ParameterHelper.getISO8601Time(new Date(System.currentTimeMillis() + 12 * 3600 * 1000)); // Message expires after 12 hours and will no longer be sent'."\n" + .'pushRequest.setExpireTime(expireTime);'."\n" + .'pushRequest.setSendChannels("accs,huawei,honor,vivo,xiaomi,oppo"); // Specify push channels for delivery. If not specified, delivery can be made through any available channel'."\n" + .'pushRequest.setAndroidNotificationNotifyId(1234567); // Set notification override parameter to avoid displaying multiple identical notifications in retry scenarios'."\n" + .'pushRequest.setAndroidTargetUserType(0); // Indicates that if this push is sent to Huawei, Honor, or vivo channels, it is an official notification. However, in this code example, this value is overridden by vendor channel-specific parameters'."\n" + .'pushRequest.setAndroidHuaweiTargetUserType(1); // Indicates that if this push is sent to the Huawei channel, it is a test notification'."\n" + .'pushRequest.setAndroidHonorTargetUserType(1); // Indicates that if this push is sent to the Honor channel, it is a test notification'."\n" + .'pushRequest.setAndroidVivoPushMode(1); // Indicates that if this push is sent to the vivo channel, it is a test notification. Please add the vivo device regId to the test device list on the vivo push platform before pushing'."\n" + .'pushRequest.setAndroidHuaweiReceiptId("ABCDEFG"); // Huawei vendor channel'."\n" + .'// Vendor channel notification classification'."\n" + .'pushRequest.setAndroidNotificationChannel("user_define"); // OPPO private message channel channel_id, and general Android channel_id'."\n" + .'pushRequest.setAndroidNotificationXiaomiChannel("user_define"); // Xiaomi channel notification type channel_id'."\n" + .'pushRequest.setAndroidNotificationHonorChannel("NORMAL"); // Honor channel message classification parameter, corresponding to the Honor channel importance parameter'."\n" + .'pushRequest.setAndroidMessageHuaweiCategory("ACCOUNT"); // Huawei channel notification classification parameter. Service and communication notifications require permission application from the Huawei channel'."\n" + .'pushRequest.setAndroidMessageVivoCategory("ACCOUNT"); // vivo channel notification classification parameter. System messages require permission application from the vivo channel'."\n" + .'// SMS convergence notification'."\n" + .'pushRequest.setSmsTemplateName("SMS_1234567"); // Set SMS template name'."\n" + .'pushRequest.setSmsSignName("Test"); // Set SMS signature'."\n" + .'pushRequest.setSmsParams("name=Bob&code=123"); // SMS template variables'."\n" + .'pushRequest.setSmsSendPolicy(0); // SMS resend policy. 0 indicates resend when the device has not received the push'."\n" + .'pushRequest.setSmsDelaySecs(120); // Trigger SMS if not received within two minutes'."\n" + .'PushResponse pushResponse = client.getAcsResponse(pushRequest);'."\n" + .'System.out.printf("RequestId: %s, MessageId: %s\\n",'."\n" + .' pushResponse.getRequestId(), pushResponse.getMessageId());'."\n" + .'```', + 'changeSet' => [ + ['createdAt' => '2025-11-25T08:17:08.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2025-09-19T03:03:01.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2025-09-18T09:24:49.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2025-09-09T08:21:44.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2025-08-21T11:21:59.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2025-03-21T09:22:04.000Z', 'description' => 'Error codes changed, Request parameters changed'], + ['createdAt' => '2025-01-16T07:23:21.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-11-13T03:09:40.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-10-23T08:32:10.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-10-23T08:32:10.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-10-10T01:26:31.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-08-07T05:34:11.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-06-25T04:40:41.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:52.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2023-12-18T11:18:34.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2023-10-12T07:14:53.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2023-03-15T14:04:19.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2022-06-07T11:29:17.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2021-09-15T06:53:20.000Z', 'description' => 'Request parameters changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'PushMessageToAndroid' => [ + 'summary' => 'Sends a message to an Android device through the Alibaba Cloud Mobile Push proprietary channel. After the app on the device receives the message, it must handle subsequent actions, such as implementing business logic or displaying a local notification.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -2390,684 +4312,71 @@ ], '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' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'docRequired' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'The AppKey.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], ], [ - 'name' => 'PushTask', - 'in' => 'formData', - 'style' => 'repeatList', + 'name' => 'Target', + 'in' => 'query', 'schema' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'PushType' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'MESSAGE', - ], - 'DeviceType' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'ALL', - ], - 'Target' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'DEVICE', - ], - 'TargetValue' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'deviceid1,deviceid2', - ], - 'StoreOffline' => [ - 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'SendChannels' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'accs,huawei,xiaomi', - ], - 'PushTime' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '2019-02-20T00:00:00Z', - ], - 'ExpireTime' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '2019-02-20T00:00:00Z', - ], - 'JobKey' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '123', - ], - 'Title' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'title', - ], - 'Body' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'hello', - ], - 'Trim' => [ - 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], - 'iOSApnsEnv' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'DEV', - ], - 'iOSRemind' => [ - 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'iOSSubtitle' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'subtitle', - ], - 'iOSRemindBody' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '', - ], - 'iOSMusic' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '””', - ], - 'iOSBadge' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], - 'iOSBadgeAutoIncrement' => [ - 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'iOSSilentNotification' => [ - 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'iOSMutableContent' => [ - 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'iOSNotificationCategory' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'ios', - ], - 'iOSNotificationCollapseId' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'ZD2011', - ], - 'iOSNotificationThreadId' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'abc', - ], - 'iOSInterruptionLevel' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'active', - ], - 'iOSRelevanceScore' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'required' => false, - 'example' => '0.01', - ], - 'iOSExtParameters' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '{“attachment”: “https://xxxx.xxx/notification_pic.png"} ', - ], - 'iOSLiveActivityEvent' => [ - 'type' => 'string', - 'enum' => [ - 'start', - 'update', - 'end', - ], - ], - 'iOSLiveActivityId' => [ - 'type' => 'string', - ], - 'iOSLiveActivityAttributesType' => [ - 'type' => 'string', - ], - 'iOSLiveActivityAttributes' => [ - 'type' => 'string', - ], - 'iOSLiveActivityContentState' => [ - 'type' => 'string', - ], - 'iOSLiveActivityDismissalDate' => [ - 'type' => 'integer', - 'format' => 'int64', - ], - 'iOSLiveActivityStaleDate' => [ - 'type' => 'integer', - 'format' => 'int64', - ], - 'AndroidNotifyType' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'VIBRATE', - ], - 'AndroidRemind' => [ - 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'AndroidOpenType' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'APPLICATION', - ], - 'AndroidActivity' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - ], - 'AndroidOpenUrl' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'https://xxxx.xxx', - ], - 'AndroidPopupActivity' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'com.alibaba.cloudpushdemo.bizactivity', - ], - 'AndroidPopupTitle' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'hello', - ], - 'AndroidPopupBody' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'hello', - ], - 'AndroidRenderStyle' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], - 'AndroidBigTitle' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '', - ], - 'AndroidBigBody' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '', - ], - 'AndroidBigPictureUrl' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'https://imag.example.com/image.png', - ], - 'AndroidXiaomiBigPictureUrl' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'https://f6.market.xiaomi.com/download/MiPass/aaa/bbb.png', - 'deprecated' => true, - ], - 'AndroidImageUrl' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'https://imag.example.com/image.png', - ], - 'AndroidXiaomiImageUrl' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'https://imag.example.com/image.png', - 'deprecated' => true, - ], - 'AndroidInboxBody' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '', - ], - 'AndroidNotificationBarType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], - 'AndroidNotificationBarPriority' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], - 'AndroidNotificationNotifyId' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '100001', - ], - 'AndroidNotificationChannel' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], - 'AndroidNotificationHuaweiChannel' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'LOW', - ], - 'AndroidNotificationHonorChannel' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'LOW', - ], - 'AndroidNotificationXiaomiChannel' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'michannel', - ], - 'AndroidNotificationVivoChannel' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '0', - ], - 'AndroidNotificationGroup' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'group-1', - ], - 'AndroidNotificationThreadId' => [ - 'type' => 'string', - ], - 'AndroidExtParameters' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}', - ], - 'AndroidMessageHuaweiUrgency' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'HIGH', - ], - 'AndroidMessageHuaweiCategory' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'VOIP', - ], - 'AndroidMessageOppoCategory' => [ - 'type' => 'string', - ], - 'AndroidMessageOppoNotifyLevel' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'AndroidMessageVivoCategory' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'TODO', - ], - 'AndroidTargetUserType' => [ - 'type' => 'integer', - 'format' => 'int32', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidHuaweiTargetUserType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidHonorTargetUserType' => [ - 'type' => 'integer', - 'format' => 'int32', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidVivoPushMode' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidOppoIntentEnv' => [ - 'type' => 'integer', - 'format' => 'int32', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidHuaweiBusinessType' => [ - 'type' => 'integer', - 'format' => 'int32', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidHuaweiReceiptId' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'RCP4C123456', - ], - 'AndroidVivoReceiptId' => [ - 'type' => 'string', - ], - 'AndroidBadgeClass' => [ - 'type' => 'string', - ], - 'AndroidBadgeAddNum' => [ - 'type' => 'integer', - 'format' => 'int32', - 'example' => '99', - 'default' => '1', - ], - 'AndroidBadgeSetNum' => [ - 'type' => 'integer', - 'format' => 'int32', - 'example' => '99', - 'default' => '0', - ], - 'AndroidMusic' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '', - ], - 'HarmonyRemind' => [ - 'type' => 'boolean', - ], - 'HarmonyRemindTitle' => [ - 'type' => 'string', - ], - 'HarmonyRemindBody' => [ - 'type' => 'string', - ], - 'HarmonyCategory' => [ - 'type' => 'string', - 'enum' => [ - 'IM', - 'VOIP', - 'SUBSCRIPTION', - 'TRAVEL', - 'HEALTH', - 'WORK', - 'ACCOUNT', - 'EXPRESS', - 'FINANCE', - 'DEVICE_REMINDER', - 'MAIL', - 'CUSTOMER_SERVICE', - 'MARKETING', - ], - ], - 'HarmonyNotificationSlotType' => [ - 'type' => 'string', - 'enum' => [ - 'SOCIAL_COMMUNICATION', - 'SERVICE_INFORMATION', - 'CONTENT_INFORMATION', - 'CUSTOMER_SERVICE', - 'OTHER_TYPES', - ], - ], - 'HarmonyNotifyId' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'HarmonyActionType' => [ - 'type' => 'string', - 'enum' => [ - 'APP_HOME_PAGE', - 'APP_CUSTOM_PAGE', - ], - ], - 'HarmonyAction' => [ - 'type' => 'string', - ], - 'HarmonyUri' => [ - 'type' => 'string', - ], - 'HarmonyRenderStyle' => [ - 'type' => 'string', - 'enum' => [ - 'NORMAL', - 'MULTI_LINE', - ], - ], - 'HarmonyImageUrl' => [ - 'type' => 'string', - ], - 'HarmonyInboxContent' => [ - 'type' => 'string', - ], - 'HarmonyExtParameters' => [ - 'type' => 'string', - ], - 'HarmonyTestMessage' => [ - 'type' => 'boolean', - ], - 'HarmonyReceiptId' => [ - 'type' => 'string', - ], - 'HarmonyExtensionPush' => [ - 'type' => 'boolean', - ], - 'HarmonyExtensionExtraData' => [ - 'type' => 'string', - ], - 'HarmonyBadgeAddNum' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'HarmonyBadgeSetNum' => [ - 'type' => 'integer', - 'format' => 'int32', - ], - 'SendSpeed' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'deprecated' => true, - 'required' => false, - 'example' => '0', - ], - 'AndroidXiaoMiNotifyTitle' => [ - 'description' => '', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => '', - ], - 'AndroidXiaoMiNotifyBody' => [ - 'description' => '', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => '', - ], - 'AndroidXiaoMiActivity' => [ - 'description' => '', - 'type' => 'string', - 'deprecated' => true, - 'required' => false, - 'example' => '', - ], - 'AndroidMeizuNoticeMsgType' => [ - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - 'enum' => [ - '0', - '1', - ], - ], - 'AndroidOppoPrivateMsgTemplateId' => [ - 'title' => 'Oppo私信模板ID,已废弃,如需使用请使用Push接口,或升级MassPushV2', - 'type' => 'string', - 'deprecated' => true, - ], - 'AndroidOppoPrivateTitleParameters' => [ - 'title' => 'Oppo私信模板title参数,已废弃,如需使用请使用Push接口,或升级MassPushV2', - 'type' => 'object', - 'deprecated' => true, - 'additionalProperties' => [ - 'type' => 'string', - ], - ], - 'AndroidOppoPrivateContentParameters' => [ - 'title' => 'Oppo私信模板content参数,已废弃,如需使用请使用Push接口,或升级MassPushV2', - 'type' => 'object', - 'deprecated' => true, - 'additionalProperties' => [ - 'type' => 'string', - ], - ], - 'HarmonyLiveViewPayload' => [ - 'type' => 'string', - 'required' => false, - ], - 'AndroidHuaweiLiveNotificationPayload' => [ - 'type' => 'string', - 'required' => false, - ], - 'AndroidOppoIntelligentIntent' => [ - 'type' => 'string', - 'required' => false, - ], - 'AndroidOppoDeleteIntentData' => [ - 'type' => 'string', - 'required' => false, - ], - ], - 'required' => false, - ], + 'description' => 'The push target. Valid values:'."\n" + ."\n" + .'- **DEVICE**: Pushes messages to devices.'."\n" + ."\n" + .'- **ACCOUNT**: Pushes messages to accounts.'."\n" + ."\n" + .'- **ALIAS**: Pushes messages to aliases.'."\n" + ."\n" + .'- **TAG**: Pushes messages to tags.'."\n" + ."\n" + .'- **ALL**: Pushes messages to all devices.', + 'type' => 'string', 'required' => true, - 'maxItems' => 100, + 'enum' => ['ALL', 'DEVICE', 'ACCOUNT', 'ALIAS', 'TAG'], + 'example' => 'ALL', + 'title' => '', ], ], [ - 'name' => 'IdempotentToken', + 'name' => 'TargetValue', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'maxLength' => 36, - 'minLength' => 36, - ], + 'schema' => ['description' => 'Set this parameter based on the value of \\`Target\\`. Use commas (,) to separate multiple values. If you exceed the limit, send the pushes in batches.'."\n" + ."\n" + .'- If \\`Target\\` is set to \\`DEVICE\\`, specify device IDs. Example: `deviceid111,deviceid1111`. You can specify up to 1,000 device IDs.'."\n" + ."\n" + .'- If \\`Target\\` is set to \\`ACCOUNT\\`, specify account IDs. Example: `account111,account222`. You can specify up to 1,000 account IDs.'."\n" + ."\n" + .'- If \\`Target\\` is set to \\`ALIAS\\`, specify aliases. Example: `alias111,alias222`. You can specify up to 1,000 aliases.'."\n" + ."\n" + .'- If \\`Target\\` is set to \\`TAG\\`, you can specify one or more tags. For more information about the format, see [Tag format](~~434847~~).'."\n" + ."\n" + .'- If \\`Target\\` is set to \\`ALL\\`, set the value to **all**.', 'type' => 'string', 'required' => true, 'example' => 'all', 'title' => ''], + ], + [ + 'name' => 'Title', + 'in' => 'query', + 'schema' => ['description' => 'The title of the message.', 'type' => 'string', 'required' => true, 'example' => 'my title', 'title' => ''], + ], + [ + 'name' => 'Body', + 'in' => 'query', + 'schema' => ['description' => 'The content of the message.', 'type' => 'string', 'required' => true, 'example' => 'my body', 'title' => ''], + ], + [ + 'name' => 'StoreOffline', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to store the message offline. The default value is false.'."\n" + ."\n" + .'If you store the message and the user is offline, the message is sent again when the user comes online within the time-to-live (TTL) period. The default TTL is 72 hours.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'JobKey', + 'in' => 'query', + 'schema' => ['description' => 'A custom ID for the push task. If \\`JobKey\\` is not empty, this field is included in the receipt logs. For more information, see [Receipt logs](~~434651~~).', 'type' => 'string', 'required' => false, 'example' => '123', 'title' => ''], ], ], 'responses' => [ @@ -3075,125 +4384,66 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'MessageIds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'MessageId' => [ - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'string', - 'example' => '501030', - ], - ], - ], - ], - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], + 'MessageId' => ['description' => 'The ID of the message pushed.', 'type' => 'string', 'example' => '501029', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], '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' => ''], ], 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' => 'Request processing timed out.'], + ['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' => 'The request processing has failed due to some unknown error.'], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageIds\\": {\\n \\"MessageId\\": [\\n \\"501030\\"\\n ]\\n },\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', + 'title' => 'Push Message to Android Devices'."\n", + 'description' => '**This operation will be deprecated soon. Use the [advanced push API](~~2249916~~), which provides enhanced push capabilities. To achieve the same result, set the `DeviceType` parameter to `ANDROID` and the `PushType` parameter to `MESSAGE` in the advanced push API.**'."\n" + ."\n" + .'**Before using this operation, review the [billing methods and pricing](~~434638~~) for EMAS Mobile Push.**'."\n" + ."\n" + .'By default, this operation sends messages only to online devices. If a device is offline, set the `StoreOffline` parameter. The push system then stores the message and delivers it automatically when the device comes online.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'ContinuouslyPush' => [ - 'summary' => '持续推送', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-01-22T14:27:51.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:51.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:51.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2023-10-12T07:14:53.000Z', 'description' => 'Request parameters changed, Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', + ], + 'PushMessageToiOS' => [ + 'summary' => 'Pushes messages to iOS devices. These messages are delivered through the proprietary channel of Alibaba Cloud Mobile Push. After the app on a device receives a message, it must handle subsequent actions, such as implementing business behaviors or creating local notifications.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -3201,96 +4451,124 @@ ], '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' => '', - 'docRequired' => true, - 'example' => '23267207', - 'format' => 'int64', - 'required' => true, - 'type' => 'integer', - ], + 'schema' => ['description' => 'AppKey information.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '24780725', 'title' => ''], ], [ - 'name' => 'MessageId', + 'name' => 'Target', 'in' => 'query', 'schema' => [ - 'description' => '', - 'docRequired' => true, - 'example' => '500131', - 'required' => true, + 'description' => 'Push target. Valid values:'."\n" + ."\n" + .'- **DEVICE**: Push by device'."\n" + ."\n" + .'- **ACCOUNT**: Push by account'."\n" + ."\n" + .'- **ALIAS**: Push by alias'."\n" + ."\n" + .'- **TAG**: Push by tag'."\n" + ."\n" + .'- **ALL**: Push to all devices', 'type' => 'string', + 'required' => true, + 'enum' => ['ALL', 'DEVICE', 'ACCOUNT', 'ALIAS', 'TAG'], + 'example' => 'ALL', + 'title' => '', ], ], [ - 'name' => 'Target', + 'name' => 'TargetValue', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'docRequired' => true, - 'example' => 'DEVICE', - 'required' => true, - 'type' => 'string', - 'enum' => [ - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - ], - ], + 'schema' => ['description' => 'Set based on Target. Separate multiple values with commas. If the limit is exceeded, push multiple times.'."\n" + ."\n" + .'- Target=DEVICE. Example values: `deviceid111,deviceid1111` (supports up to 1,000).'."\n" + ."\n" + .'- Target=ACCOUNT. Example values: `account111,account222` (supports up to 1,000).'."\n" + ."\n" + .'- Target=ALIAS. Example values: `alias111,alias222` (supports up to 1,000).'."\n" + ."\n" + .'- Target=TAG. Supports single and multiple tags. For format, see [Tag Format](~~434847~~).'."\n" + ."\n" + .'- Target=ALL. Value is **all**.', 'type' => 'string', 'required' => true, 'example' => 'all', 'title' => ''], ], [ - 'name' => 'TargetValue', + 'name' => 'Title', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'docRequired' => true, - 'example' => 'a692961a92534047ad3625****', - 'required' => true, - 'type' => 'string', - ], + 'schema' => ['description' => 'The title of the message.', 'type' => 'string', 'required' => true, 'example' => 'my title', 'title' => ''], + ], + [ + 'name' => 'Body', + 'in' => 'query', + 'schema' => ['description' => 'The content of the message.', 'type' => 'string', 'required' => true, 'example' => 'my body', 'title' => ''], + ], + [ + 'name' => 'StoreOffline', + 'in' => 'query', + 'schema' => ['description' => 'Whether to store the message offline. StoreOffline is set to false by default.'."\n" + ."\n" + .'If stored, and the user is offline during the push, the message is sent again when the user comes online within the time-to-live (TTL). The default time-to-live (TTL) is 72 hours.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'JobKey', + 'in' => 'query', + 'schema' => ['description' => 'The custom ID for the push Job. If JobKey is not empty, this field is included in the receipt log. For receipt logs, see [Receipt Logs](~~434651~~).', 'type' => 'string', 'required' => false, 'example' => '123', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'type' => 'object', 'properties' => [ - 'MessageId' => [ - 'description' => '', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - 'type' => 'string', - ], - 'RequestId' => [ - 'description' => '', - 'example' => '500131', - 'type' => 'string', - ], + 'MessageId' => ['description' => 'The message ID that identifies a push.', 'type' => 'string', 'example' => '501029', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], ], - 'type' => 'object', + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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' => 'Push Message to iOS Devices'."\n", + 'description' => '**This API is deprecated. Use the [advanced push API](~~2249916~~) for more push capabilities. In that API, set the push platform `DeviceType` to `iOS` and the push type `PushType` to `MESSAGE` to achieve the same effect.**'."\n" + ."\n" + .'**Before you use this API, review the [billing methods and pricing](~~434638~~) for EMAS Mobile Push.**'."\n" + ."\n" + .'By default, this API sends messages only to online devices. If a device is offline, you can set the `StoreOffline` parameter. The push system then saves the message and automatically delivers it when the device comes back online.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'CompleteContinuouslyPush' => [ - 'summary' => '完成持续推送任务', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2023-10-12T07:14:53.000Z', 'description' => 'Request parameters changed, Error codes changed'], ], - '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' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', + ], + 'PushNoticeToAndroid' => [ + 'summary' => 'Sends a notification to Android devices. The notification appears directly in the device’s notification tray and may be delivered through Alibaba Cloud’s proprietary channel or the device manufacturer’s channel, depending on the scenario.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -3298,98 +4576,76 @@ ], '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' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'Your AppKey.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], ], [ - 'name' => 'MessageId', + 'name' => 'Target', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'The target of the push. Valid values:'."\n" + ."\n" + .'- **DEVICE**: Push to specific devices.'."\n" + ."\n" + .'- **ACCOUNT**: Push to specific accounts.'."\n" + ."\n" + .'- **ALIAS**: Push to users with specific aliases.'."\n" + ."\n" + .'- **TAG**: Push to users with specific tags.'."\n" + ."\n" + .'- **ALL**: Push to all devices.', 'type' => 'string', 'required' => true, - 'example' => '4010290149170430', + 'enum' => ['ALL', 'DEVICE', 'ACCOUNT', 'ALIAS', 'TAG'], + 'example' => 'ALL', + 'title' => '', ], ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'MessageId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '4010290149170430', - ], - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - ], - ], + [ + 'name' => 'TargetValue', + 'in' => 'query', + 'schema' => ['description' => 'Set this based on the Target value. Separate multiple values with commas. If you exceed the limit, send multiple requests.'."\n" + ."\n" + .'- If Target=DEVICE, use values such as `deviceid111,deviceid1111`. Maximum: 1000 devices.'."\n" + ."\n" + .'- If Target=ACCOUNT, use values such as `account111,account222`. Maximum: 1000 accounts.'."\n" + ."\n" + .'- If Target=ALIAS, use values such as `alias111,alias222`. Maximum: 1000 aliases.'."\n" + ."\n" + .'- If Target=TAG, support single or multiple tags. For format details, see [Tag format](~~434847~~).'."\n" + ."\n" + .'- If Target=ALL, set this to **ALL**.', 'type' => 'string', 'required' => true, 'example' => 'ALL', 'title' => ''], ], - ], - '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":""}]', - ], - 'CancelPush' => [ - 'summary' => '取消定时推送任务', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ [ - 'AK' => [], + 'name' => 'Title', + 'in' => 'query', + 'schema' => ['description' => 'The title of the notification.', 'type' => 'string', 'required' => true, 'example' => 'title', 'title' => ''], ], - ], - 'operationType' => 'write', - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'free', - ], - 'parameters' => [ [ - 'name' => 'AppKey', + 'name' => 'Body', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'The body of the notification.', 'type' => 'string', 'required' => true, 'example' => 'body', 'title' => ''], ], [ - 'name' => 'MessageId', + 'name' => 'StoreOffline', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '501029', - ], + 'schema' => ['description' => 'Whether to store the notification for offline delivery. Default: false.'."\n" + ."\n" + .'If enabled, the notification is redelivered when the user comes online within the time-to-live (TTL) period. Default TTL: 72 hours.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'JobKey', + 'in' => 'query', + 'schema' => ['description' => 'A custom ID for the push task. If you specify a non-empty JobKey, it appears in the delivery receipt log. For more information, see [Delivery receipt logs](~~434651~~).', 'type' => 'string', 'required' => false, 'example' => '123', 'title' => ''], + ], + [ + 'name' => 'ExtParameters', + 'in' => 'query', + 'schema' => ['description' => 'Custom key-value pairs for Android-specific extensions. Pass this as a JSON object.', 'type' => 'string', 'required' => false, 'example' => '{"key1":"value1","api_name":"PushNoticeToAndroidRequest"}', 'title' => ''], ], ], 'responses' => [ @@ -3397,192 +4653,193 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], + 'MessageId' => ['description' => 'The message ID for this push request.', 'type' => 'string', 'example' => '501029', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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":""}]', - ], - 'PushV2' => [ - 'summary' => '新版高级推送接口', - 'methods' => [ - 'post', + 'title' => 'Push Notification to Android Devices', + 'description' => '**This operation is deprecated. Use the [Advanced Push API](~~2249916~~) instead. In that API, set the `DeviceType` parameter to `ANDROID` and the `PushType` parameter to `NOTICE`.**'."\n" + ."\n" + .'**Before using this operation, review the [pricing and billing model](~~434638~~) for EMAS Mobile Push.**', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2023-10-12T07:14:53.000Z', 'description' => 'Request parameters changed, Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', + ], + 'PushNoticeToiOS' => [ + 'summary' => 'Send a notification to iOS devices. The notification uses Apple’s APNs channel and appears directly in the device notification center.', + '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' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'docRequired' => true, - 'example' => '****530646', - ], + 'schema' => ['description' => 'Your AppKey.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '24780725', 'title' => ''], ], [ - 'name' => 'IdempotentToken', + 'name' => 'Target', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'The target of the push. Valid values:'."\n" + ."\n" + .'- **DEVICE**: Push to specific devices.'."\n" + ."\n" + .'- **ACCOUNT**: Push to specific accounts.'."\n" + ."\n" + .'- **ALIAS**: Push to users with specific aliases.'."\n" + ."\n" + .'- **TAG**: Push to users with specific tags.'."\n" + ."\n" + .'- **ALL**: Push to all devices.', 'type' => 'string', - 'required' => false, - 'example' => 'c8016d13-6e76-****-9bda-769383d11787', - 'maxLength' => 36, - 'minLength' => 36, + 'required' => true, + 'enum' => ['ALL', 'DEVICE', 'ACCOUNT', 'ALIAS', 'TAG'], + 'example' => 'ALL', + 'title' => '', ], ], [ - 'name' => 'PushTask', + 'name' => 'TargetValue', + 'in' => 'query', + 'schema' => ['description' => 'Values depend on the Target value. Separate multiple values with commas. If you exceed the limit, send multiple requests.'."\n" + ."\n" + .'- If Target=DEVICE, use values such as `deviceid111,deviceid1111`. Maximum: 1000.'."\n" + ."\n" + .'- If Target=ACCOUNT, use values such as `account111,account222`. Maximum: 1000.'."\n" + ."\n" + .'- If Target=ALIAS, use values such as `alias111,alias222`. Maximum: 1000.'."\n" + ."\n" + .'- If Target=TAG, support single or multiple tags. For format details, see [Tag format](~~434847~~).'."\n" + ."\n" + .'- If Target=ALL, set this to **ALL**.', 'type' => 'string', 'required' => true, 'example' => 'ALL', 'title' => ''], + ], + [ + 'name' => 'ApnsEnv', 'in' => 'query', - 'style' => 'json', 'schema' => [ - 'description' => '', + 'description' => 'iOS notifications use Apple’s APNs service. Specify the environment.'."\n" + ."\n" + .'- DEV: Development environment.'."\n" + ."\n" + .'- PRODUCT: Production environment.', + 'type' => 'string', 'required' => true, - '$ref' => '#/components/schemas/PushTask', + 'enum' => ['DEV', 'PRODUCT'], + 'example' => 'DEV', + 'title' => '', ], ], + [ + 'name' => 'Title', + 'in' => 'query', + 'schema' => ['description' => 'The title of the notification.'."\n" + ."\n" + .'- iOS 10 and later: Displays as the notification title.'."\n" + ."\n" + .'- iOS 8.2 through iOS 9.x: Replaces the app name in the notification.', 'type' => 'string', 'required' => false, 'example' => 'title', 'title' => ''], + ], + [ + 'name' => 'Body', + 'in' => 'query', + 'schema' => ['description' => 'The body text of the notification.', 'type' => 'string', 'required' => true, 'example' => 'Hello World', 'title' => ''], + ], + [ + 'name' => 'JobKey', + 'in' => 'query', + 'schema' => ['description' => 'A custom ID for the push task. If you specify a JobKey, the delivery log includes this field. For more information, see [Delivery logs](~~434651~~).', 'type' => 'string', 'required' => false, 'example' => '123', 'title' => ''], + ], + [ + 'name' => 'ExtParameters', + 'in' => 'query', + 'schema' => ['description' => 'A custom key-value map for developer extensions.'."\n" + ."\n" + .'> For iOS devices, pass this parameter as a JSON object. Otherwise, parsing fails.', 'type' => 'string', 'required' => false, 'example' => '{"k1":"ios","k2":"v2"}', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'MessageId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '11747540****88320', - ], - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '159E4422-6624-****-8943-DFD98D34858C', - ], + 'MessageId' => ['description' => 'The message ID for this push request.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '501029', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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' => 'Push Notification to iOS Devices', + 'description' => '**This operation is deprecated. Use the [Advanced Push API](~~2249916~~) instead. Set the `DeviceType` parameter to `iOS` and the `PushType` parameter to `NOTICE`.**'."\n" + ."\n" + .'**Before you use this operation, review the [pricing and billing model](~~434638~~) for EMAS Mobile Push.**', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-01-22T14:27:51.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:51.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-22T14:27:51.000Z', 'description' => 'Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"11747540****88320\\",\\n \\"RequestId\\": \\"159E4422-6624-****-8943-DFD98D34858C\\"\\n}","type":"json"}]', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"RequestId\\": \\"501029\\"\\n}","type":"json"}]', ], - 'MassPushV2' => [ - 'summary' => '新版高级推送接口', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'PushV2' => [ + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -3594,44 +4851,28 @@ 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREemasBNY9P0', - 'FEATUREemasTZ8VEZ', - ], + 'abilityTreeNodes' => ['FEATUREemasBNY9P0', 'FEATUREemasTZ8VEZ'], ], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'docRequired' => true, - ], + 'schema' => ['description' => 'AppKey value.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'example' => '****530646', 'title' => ''], ], [ 'name' => 'IdempotentToken', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'maxLength' => 36, - 'minLength' => 36, - ], + 'schema' => ['description' => 'An idempotency token to prevent duplicate pushes caused by client-side retries. If you call this API with the same IdempotentToken within 15 minutes, only one push is sent. Subsequent calls return the result of the first successful push.'."\n" + ."\n" + .'> - Format the token as a standard 36-character UUID (8-4-4-4-12). Valid characters are hexadecimal digits 0–9 and a–f. Case-insensitive.'."\n" + .'>'."\n" + .'> - This parameter prevents duplicates only from retries. It does not prevent duplicates from concurrent calls.', 'type' => 'string', 'maxLength' => 36, 'minLength' => 36, 'required' => false, 'example' => 'c8016d13-6e76-****-9bda-769383d11787', 'title' => ''], ], [ - 'name' => 'PushTasks', + 'name' => 'PushTask', 'in' => 'query', 'style' => 'json', - 'schema' => [ - 'type' => 'array', - 'items' => [ - 'required' => false, - '$ref' => '#/components/schemas/PushTask', - ], - 'required' => true, - ], + 'schema' => ['description' => 'Push task definition.', 'required' => true, '$ref' => '#/components/schemas/PushTask', 'title' => '', 'example' => ''], ], ], 'responses' => [ @@ -3639,379 +4880,177 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'type' => 'string', - ], - 'MessageIds' => [ - 'type' => 'array', - 'items' => [ - 'type' => 'string', - ], - ], + 'MessageId' => ['description' => 'ID of the push message.', 'type' => 'string', 'example' => '11747540****88320', 'title' => ''], + 'RequestId' => ['description' => 'ID of the request.', 'type' => 'string', 'example' => '159E4422-6624-****-8943-DFD98D34858C', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], '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' => ''], + ['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' => ''], + ['errorCode' => 'PermissionDenied', 'errorMessage' => 'The specified AppKey is not authorized.', 'description' => ''], + ['errorCode' => 'SendSpeedNotSupported', 'errorMessage' => 'SendSpeed is not supported for specified Target.', 'description' => ''], + ['errorCode' => 'SmsProfileConfigFailed', 'errorMessage' => 'Failed to configure SMS profile.', 'description' => ''], + ['errorCode' => 'SmsProfileGetFailed', 'errorMessage' => 'Failed to get SMS profile.', 'description' => ''], + ['errorCode' => 'SmsRoleAuthorizeFailed', 'errorMessage' => 'Failed to authorize SMS role.', 'description' => ''], + ['errorCode' => 'SmsRoleUnauthorized', 'errorMessage' => 'The SMS role is unauthorized.', 'description' => ''], + ['errorCode' => 'TagsNumberBeyondLimit', 'errorMessage' => 'The number of tags bound to this app exceeds the limit.', 'description' => ''], + ['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' => ''], + ['errorCode' => 'TargetNotSupported', 'errorMessage' => 'Target is not supported for batch push.', '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.', - ], - [ - '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' => 'The request processing has failed due to some unknown error.'], + ['errorCode' => 'Timeout', 'errorMessage' => 'The request processing is timeout.', 'description' => 'Request processing timed out.'], + ], + ], + 'title' => 'Advanced Push', + 'summary' => 'This is the advanced push API v2.', + 'description' => '**Before using this API, review the [pricing and billing methods](~~434638~~) for EMAS Mobile Push.**'."\n" + ."\n" + .'This API supports Android, iOS, and HarmonyOS. For each platform, pass its assigned AppKey.', + 'requestParamsDescription' => 'For more information, see the [PushV2 API integration guide](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' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"159E4422-6624-****-8943-DFD98D34858C\\",\\n \\"MessageIds\\": [\\n \\"1091371886864****\\"\\n ]\\n}","type":"json"}]', + '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' => 'Query the list of aliases attached to a specified device.', + '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' => '', - 'docRequired' => true, - 'example' => '23267207', - 'format' => 'int64', - 'maximum' => '1000000000', - 'minimum' => '0', - 'required' => true, - 'type' => 'integer', - ], + 'schema' => ['description' => 'The AppKey value.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], + ], + [ + 'name' => 'DeviceId', + 'in' => 'query', + 'schema' => ['description' => 'The unique identifier for the device in Mobile Push. It is 32 characters long and contains only digits and lowercase letters.', 'type' => 'string', 'required' => true, 'example' => 'e2ba19de97604f55b165576****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - 'type' => 'string', - ], - 'Android' => [ - 'description' => '', - 'example' => 'false', - 'type' => 'boolean', - ], - 'IOS' => [ - 'description' => '', - 'example' => 'true', - 'type' => 'boolean', - ], - 'ProductionCertInfo' => [ - 'description' => '', - 'properties' => [ - 'Status' => [ - 'description' => '', - 'example' => 'OK', - 'type' => 'string', - ], - 'ExipreTime' => [ - 'description' => '', - 'example' => '1764561600000', - 'format' => 'int64', - 'type' => 'integer', - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '159E4422-6624-4750-8943-DFD98D34858C', 'title' => ''], + 'AliasInfos' => [ 'type' => 'object', - ], - 'DevelopmentCertInfo' => [ - 'description' => '', + 'itemNode' => true, 'properties' => [ - 'Status' => [ - 'description' => '', - 'example' => 'EXPIRED', - 'type' => 'string', - ], - 'ExipreTime' => [ - 'description' => '', - 'example' => '1470024000000', - 'format' => 'int64', - 'type' => 'integer', + 'AliasInfo' => [ + 'description' => 'The list of aliases.', + 'type' => 'array', + 'items' => [ + 'properties' => [ + 'AliasName' => ['description' => 'The alias name.', 'type' => 'string', 'example' => 'test_alias1', 'title' => ''], + ], + 'type' => 'object', + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], - 'type' => 'object', + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'type' => 'object', + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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.', - ], + 'title' => 'Query alias', + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:39.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:39.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:39.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryAliases'], ], - 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.', + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryAliases', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', '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":""}]', - 'extraInfo' => ' ', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"159E4422-6624-4750-8943-DFD98D34858C\\",\\n \\"AliasInfos\\": {\\n \\"AliasInfo\\": [\\n {\\n \\"AliasName\\": \\"test_alias1\\"\\n }\\n ]\\n }\\n}","type":"json"}]', ], - 'QueryPushRecords' => [ - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'QueryDeviceInfo' => [ + 'summary' => 'Query details of a specified device.', + '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' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'docRequired' => true, - 'example' => '333526247', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'docRequired' => true, - 'example' => '2021-09-15T02:05:24Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'docRequired' => true, - 'example' => '2021-09-29T06:24:58Z', - ], - ], - [ - 'name' => 'PushType', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'NOTICE', - 'enum' => [ - 'MESSAGE', - 'NOTICE', - ], - ], - ], - [ - 'name' => 'Target', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'DEVICE', - 'enum' => [ - 'ACCOUNT', - 'ALIAS', - 'DEVICE', - 'TAG', - 'TBD', - 'FILE', - 'ALL', - ], - ], - ], - [ - 'name' => 'Source', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'API', - 'enum' => [ - 'CONSOLE', - 'API', - ], - ], + 'schema' => ['description' => 'AppKey information.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23419851', 'title' => ''], ], [ - 'name' => 'Keyword', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '', - ], - ], - [ - 'name' => 'NextToken', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'FFPpkmhCPm*****************xjk=', - ], - ], - [ - 'name' => 'PageSize', + 'name' => 'DeviceId', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '100', - 'minimum' => '1', - 'example' => '10', - 'default' => '20', - ], - ], - [ - 'name' => 'Page', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '10000', - 'minimum' => '1', - 'example' => '8', - 'default' => '1', - ], + 'schema' => ['description' => 'The unique identity of the device in the push system. Query only one at a time.', 'type' => 'string', 'required' => true, 'example' => 'a64ae296f3b04a58a05b30c9****', 'title' => ''], ], ], 'responses' => [ @@ -4019,134 +5058,67 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'NextToken' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'i91D***********kXIh/dVBEQ==', - ], - 'PageSize' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'RequestId' => [ - 'description' => '', - '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' => 'Request ID.', 'type' => 'string', 'example' => '6EEF262B-EA7D-41DC-89B9-20F3D1E28194', 'title' => ''], + 'DeviceInfo' => [ + 'description' => 'Device details.', 'type' => 'object', - 'itemNode' => true, 'properties' => [ - 'PushInfo' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Status' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'SENT', - ], - 'MessageId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '510431', - ], - 'AppKey' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '333526247', - ], - 'DeviceType' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'ANDROID', - ], - 'PushType' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'NOTICE', - ], - 'Body' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'abcd', - ], - 'Title' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'sssss', - ], - 'Source' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'DEVICE', - ], - 'PushTime' => [ - 'description' => '', - 'type' => 'string', - 'example' => '2021-09-15T02:05:24Z', - ], - 'Target' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'DEVICE', - ], - ], - ], - ], - ], + 'Account' => ['description' => 'Account attached to the device.', 'type' => 'string', 'example' => 'test@aliyun.com', 'title' => ''], + 'LastOnlineTime' => ['description' => 'Last online time.', 'type' => 'string', 'example' => '2018-03-27T02:19:40Z', 'title' => ''], + 'PhoneNumber' => ['description' => 'Phone number.', 'type' => 'string', 'example' => '133********', 'title' => ''], + 'PushEnabled' => ['description' => 'Is push feature enabled.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'DeviceType' => ['description' => 'Device type.', 'type' => 'string', 'example' => 'iOS', 'title' => ''], + 'DeviceId' => ['description' => 'Device ID.', 'type' => 'string', 'example' => 'a64ae296f3b04a58a05b30c95****', 'title' => ''], + 'Online' => ['description' => 'Is online.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'Tags' => ['description' => 'Tags attached to the device.', 'type' => 'string', 'example' => 'test_tag,test_tag2', 'title' => ''], + 'DeviceToken' => ['description' => 'Device token.', 'type' => 'string', 'example' => '5ecc7b4012aaa801b63******5543ccbda6b4930d09629e936e1ac4b762a7df', 'title' => ''], + 'Alias' => ['description' => 'Alias attached to the device.', 'type' => 'string', 'example' => 'test_alias,test_alias2', 'title' => ''], + 'Brand' => ['description' => 'Device brand.', 'type' => 'string', 'example' => 'HUAWEI', 'title' => ''], + 'Model' => ['description' => 'Device model.', 'type' => 'string', 'example' => 'VOG-AL00', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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' => 'Query device details ', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2023-09-26T08:23:22.000Z', 'description' => 'Response parameters changed, Error codes changed'], + ['createdAt' => '2023-09-26T08:23:22.000Z', 'description' => 'Response parameters changed, Error codes changed'], + ['createdAt' => '2023-09-26T08:23:22.000Z', 'description' => 'Response parameters changed, Error codes changed'], + ], + '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' => 'All Resource', '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":""}]', + 'responseDemo' => '[{"errorExample":"","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}","type":"json"}]', ], 'QueryDeviceStat' => [ - 'summary' => '设备新增与留存', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -4154,70 +5126,66 @@ ], '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' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'AppKey information.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '2016-07-28T00:00:00Z', - ], + 'schema' => ['description' => 'The start time of the query. The time format follows the ISO8601 standard and uses UTC time, in the format YYYY-MM-DDThh:mm:ssZ.'."\n" + ."\n" + .'> The statistics start date is 00:00 UTC+8 on the start time\'s day.', 'type' => 'string', 'required' => true, 'example' => '2016-07-28T00:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '2016-07-29T00:00:00Z', - ], + 'schema' => ['description' => 'The end time of the query. The time format follows the ISO8601 standard and uses UTC time, in the format YYYY-MM-DDThh:mm:ssZ.'."\n" + ."\n" + .'> The statistics end date is the end time\'s day.', 'type' => 'string', 'required' => true, 'example' => '2016-07-29T00:00:00Z', 'title' => ''], ], [ 'name' => 'DeviceType', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => '><notice>'."\n" + ."\n" + .'This parameter is only valid for early Android and iOS dual-platform application types. If your application is a dual-platform application, specify this parameter as iOS or ANDROID to query the number of devices for each type. By default, it queries ALL types.'."\n" + ."\n" + .'></notice>'."\n" + ."\n" + .'The device type. Valid values:'."\n" + ."\n" + .'- **iOS**: iOS devices'."\n" + ."\n" + .'- **ANDROID**: Android devices'."\n" + ."\n" + .'- **ALL**: All device types', + 'enumValueTitles' => ['ALL' => 'ALL', 'ANDROID' => 'ANDROID', 'iOS' => 'iOS'], 'type' => 'string', 'required' => false, + 'enum' => ['iOS', 'ANDROID', 'ALL'], 'example' => 'iOS', - 'enum' => [ - 'iOS', - 'ANDROID', - 'ALL', - ], + 'title' => '', ], ], [ 'name' => 'QueryType', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'Query new devices or historical cumulative devices. Valid values:'."\n" + ."\n" + .'- **NEW**: New devices'."\n" + ."\n" + .'- **TOTAL**: Cumulative devices', 'type' => 'string', 'required' => true, + 'enum' => ['NEW', 'TOTAL'], 'example' => 'TOTAL', - 'enum' => [ - 'NEW', - 'TOTAL', - ], + 'title' => '', ], ], ], @@ -4226,118 +5194,93 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], 'AppDeviceStats' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ 'AppDeviceStat' => [ - 'description' => '', + 'description' => 'An array of device statistics, AppDeviceStat.', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'Time' => [ - 'description' => '', - 'type' => 'string', - 'example' => '2016-07-28T16:00:00Z', - ], - 'DeviceType' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'iOS', - ], - 'Count' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '100', - ], + 'Time' => ['description' => 'The end time. Use ISO 8601 format in UTC, such as YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'example' => '2016-07-28T16:00:00Z', 'title' => ''], + 'DeviceType' => ['description' => 'Device type.', 'type' => 'string', 'example' => 'iOS', 'title' => ''], + 'Count' => ['description' => 'Number of devices.', 'type' => 'integer', 'format' => 'int64', 'example' => '100', 'title' => ''], ], + 'description' => 'The AppDeviceStat object for device statistics.', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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' => 'New and Retained Devices', + 'summary' => 'Queries device statistics by application dimension.', + 'description' => '> Currently, this API supports only daily data. The daily dimension lets you query data for up to 31 days. Days are calculated based on UTC+8.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'QueryUniqueDeviceStat' => [ - 'summary' => '去重设备统计', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + 'changeSet' => [ + ['createdAt' => '2024-07-10T08:12:34.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-01-25T04:05:37.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:37.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:37.000Z', 'description' => 'Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","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}","type":"json"}]', + ], + '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' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'AppKey information.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], ], [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '2016-07-25T00:00:00Z', - ], - ], - [ - 'name' => 'EndTime', + 'name' => 'Account', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '2016-07-26T00:00:00Z', - ], - ], - [ - 'name' => 'Granularity', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'DAY', - 'enum' => [ - 'DAY', - 'MONTH', - ], - ], + 'schema' => ['description' => 'Account name. You can query only one account at a time.', 'type' => 'string', 'required' => true, 'example' => 'test_account', 'title' => ''], ], ], 'responses' => [ @@ -4345,88 +5288,82 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - 'AppDeviceStats' => [ + 'RequestId' => ['description' => 'Request ID.', 'type' => 'string', 'example' => 'A8A24108-2AD0-4F6E-81C7-A8A24C2C2AD0', 'title' => ''], + 'DeviceIds' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'AppDeviceStat' => [ - 'description' => '', + 'DeviceId' => [ + 'description' => 'List of device IDs.', 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => '', - 'type' => 'string', - 'example' => '2016-07-25T00:00:00Z', - ], - 'Count' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '100', - ], - ], - ], + 'items' => ['description' => 'Device ID', 'type' => 'string', 'example' => 'f6e43770afb944a1a879b46130ZZ****', 'title' => ''], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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":""}]', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'QueryDeviceInfo' => [ - 'summary' => '查询设备详情', - 'methods' => [ - 'post', - 'get', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'AccountLimitExceed', 'errorMessage' => 'The number of devices bound to the account exceeds 10000.', 'description' => 'The number of devices bound to the account exceeds 10000.'], + ], + ], + 'title' => 'Query device list by account ', + 'summary' => 'Retrieve the list of devices associated with an account using the account name.', + 'changeSet' => [ + ['createdAt' => '2022-01-11T10:18:12.000Z', 'description' => 'Error codes changed'], ], - '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' => 'All Resource', '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' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23419851', - ], + 'schema' => ['description' => 'AppKey information.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], ], [ - 'name' => 'DeviceId', + 'name' => 'Alias', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'a64ae296f3b04a58a05b30c9****', - ], + 'schema' => ['description' => 'The alias. You can query only one alias at a time.', 'type' => 'string', 'required' => true, 'example' => 'test_alias', 'title' => ''], ], ], 'responses' => [ @@ -4434,92 +5371,62 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '', - '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' => '', - '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' => [ - 'type' => 'string', - ], - 'Model' => [ - 'type' => 'string', + 'description' => 'List of device IDs.', + 'type' => 'array', + 'items' => ['description' => 'Device ID', 'type' => 'string', 'example' => 'f6e43770afb944a1a879b4613****', 'title' => ''], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'Request ID.', 'type' => 'string', 'example' => '6A9FD644-35A5-40E4-89B0-2021CAEDC1B4', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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":""}]', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'QueryPushStatByApp' => [ - 'summary' => 'App维度推送统计', - 'methods' => [ - 'post', - 'get', + 'title' => 'Query device list by alias', + 'summary' => 'Query the list of devices by alias.', + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:37.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:37.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:37.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryDevicesByAlias'], + ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryDevicesByAlias', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DeviceIds\\": {\\n \\"DeviceId\\": [\\n \\"f6e43770afb944a1a879b4613****\\"\\n ]\\n },\\n \\"RequestId\\": \\"6A9FD644-35A5-40E4-89B0-2021CAEDC1B4\\"\\n}","type":"json"}]', + ], + 'QueryPushRecords' => [ + 'summary' => 'You can query push records with pagination and basic filtering.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -4528,199 +5435,106 @@ 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREemasIDMTIS'], ], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'The AppKey of the application.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'docRequired' => true, 'example' => '333526247', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '2016-07-25T00:00:00Z', - ], + 'schema' => ['description' => 'The start time for the query. Specify the time in UTC, using the ISO-8601 format `YYYY-MM-DDThh:mm:ssZ`.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => '2021-09-15T02:05:24Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', + 'schema' => ['description' => 'The end time for the query. Specify the time in UTC, using the ISO-8601 format `YYYY-MM-DDThh:mm:ssZ`.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => '2021-09-29T06:24:58Z', 'title' => ''], + ], + [ + 'name' => 'PushType', + 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'The push type. Valid values:'."\n" + ."\n" + .'- **MESSAGE**: A message.'."\n" + ."\n" + .'- **NOTICE**: A notification.'."\n" + ."\n" + .'- **LIVE\\_ACTIVITY**: A Live Activity.', 'type' => 'string', - 'required' => true, - 'example' => '2016-07-29T00:00:00Z', + 'required' => false, + 'enum' => ['MESSAGE', 'NOTICE', 'LIVE_ACTIVITY'], + 'example' => 'NOTICE', + 'title' => '', ], ], [ - 'name' => 'Granularity', + 'name' => 'Target', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'The push target. Valid values:'."\n" + ."\n" + .'- **DEVICE**: Push to devices.'."\n" + ."\n" + .'- **ACCOUNT**: Push to accounts.'."\n" + ."\n" + .'- **ALIAS**: Push to aliases.'."\n" + ."\n" + .'- **TAG**: Push to tags.'."\n" + ."\n" + .'- **ALL**: Push to all devices.'."\n" + ."\n" + .'- **TBD**: Initializes a continuous push. The push target is specified in a subsequent call to the `ContinuouslyPush` API operation.', 'type' => 'string', - 'required' => true, - 'example' => 'DAY', - 'enum' => [ - 'DAY', - ], + 'required' => false, + 'enum' => ['ACCOUNT', 'ALIAS', 'DEVICE', 'TAG', 'TBD', 'FILE', 'ALL'], + 'example' => 'DEVICE', + 'title' => '', ], ], - ], - 'responses' => [ - 200 => [ + [ + 'name' => 'Source', + 'in' => 'query', 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - 'AppPushStats' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'AppPushStat' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - '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' => 'The push source. Valid values:'."\n" + ."\n" + .'- **API**: Pushes initiated via an OpenAPI call.'."\n" + ."\n" + .'- **CONSOLE**: Pushes initiated from the Mobile Push console.'."\n" + ."\n" + .'- **OpenAPIExplorer**: Pushes initiated from Alibaba Cloud OpenAPI Explorer.', + 'type' => 'string', + 'required' => false, + 'enum' => ['CONSOLE', 'API', 'OpenAPIExplorer'], + 'example' => 'API', + 'title' => '', ], ], - ], - '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":""}]', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'QueryPushStatByMsg' => [ - 'summary' => '任务维度推送统计', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ [ - 'AK' => [], + 'name' => 'Keyword', + 'in' => 'query', + 'schema' => ['description' => 'The keyword used for the query. The search covers the `MessageId`, `Title`, and `Body` fields. For `Title` and `Body`, the system applies Chinese word segmentation and matches whole tokens instead of substrings.', 'type' => 'string', 'required' => false, 'example' => '统计数据测试通知805', 'title' => ''], ], - ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], - 'parameters' => [ [ - 'name' => 'AppKey', + 'name' => 'NextToken', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'This parameter is deprecated.', 'type' => 'string', 'required' => false, 'example' => 'FFPpkmhCPm*****************xjk=', 'title' => ''], ], [ - 'name' => 'MessageId', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '510427', - ], + 'schema' => ['description' => 'The number of entries to return on each page. Default: 20. Maximum: 100.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '100', 'minimum' => '1', 'default' => '20', 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'Page', + 'in' => 'query', + 'schema' => ['description' => 'The page number to query. Default: 1. Maximum: 10,000.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '10000', 'minimum' => '1', 'default' => '1', 'example' => '8', 'title' => ''], ], ], 'responses' => [ @@ -4728,256 +5542,177 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'CF195C34-98FB-491A-98D7-19CBC1FA880B', - ], - 'PushStats' => [ + 'NextToken' => ['description' => 'Deprecated. This parameter is no longer used.', 'type' => 'string', 'example' => 'i91D***********kXIh/dVBEQ==', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries per page.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9B24B396-249D-55E4-8CA1-66C9B50BB734', 'title' => ''], + 'Total' => ['description' => 'The total number of records.', 'type' => 'integer', 'format' => 'int32', 'example' => '193', 'title' => ''], + 'Page' => ['description' => 'The current page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '11', 'title' => ''], + 'PushInfos' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'PushStat' => [ - 'description' => '', + 'PushInfo' => [ + 'description' => 'The details of a specific notification or message.', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'MessageId' => [ - 'description' => '', + 'Status' => ['description' => 'The status of the message. Valid values:'."\n" + ."\n" + .'- **WAITING**: The push is waiting to be sent.'."\n" + ."\n" + .'- **SENT**: The push has been sent.'."\n" + ."\n" + .'- **CANCELED**: The push has been canceled.', 'type' => 'string', 'example' => 'SENT', 'title' => ''], + 'MessageId' => ['description' => 'The message ID.', 'type' => 'string', 'example' => '510431', 'title' => ''], + 'AppKey' => ['description' => 'The AppKey of the application.', 'type' => 'integer', 'format' => 'int64', 'example' => '333526247', 'title' => ''], + 'DeviceType' => [ + 'description' => 'The device type. Valid values:'."\n" + ."\n" + .'- **ALL**: All device types.'."\n" + ."\n" + .'- **iOS**: iOS devices.'."\n" + ."\n" + .'- **Android**: Android devices.', + 'enumValueTitles' => ['ALL' => 'ALL', 'IOS' => 'iOS', 'ANDROID' => 'Android'], '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', + 'example' => 'ANDROID', + 'title' => '', ], - 'SmsSentCount' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', + 'PushType' => [ + 'description' => 'The push type. Valid values:'."\n" + ."\n" + .'- **MESSAGE**: A message.'."\n" + ."\n" + .'- **NOTICE**: A notification.', + 'enumValueTitles' => ['MESSAGE' => 'MESSAGE', 'NOTICE' => 'NOTICE'], + 'type' => 'string', + 'example' => 'NOTICE', + 'title' => '', ], - 'AcceptCount' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '120', + 'Body' => ['description' => 'The push body.', 'type' => 'string', 'example' => 'abcd', 'title' => ''], + 'Title' => ['description' => 'The push title.', 'type' => 'string', 'example' => 'sssss', 'title' => ''], + 'Source' => [ + 'description' => 'The source of the push. Valid values:'."\n" + ."\n" + .'- **API**: A push triggered by an OpenAPI call, including pushes from the OpenAPI console.'."\n" + ."\n" + .'- **CONSOLE**: A push triggered from the Mobile Push console.', + 'enumValueTitles' => ['CONSOLE' => 'CONSOLE', 'API' => 'API'], + 'type' => 'string', + 'example' => 'DEVICE', + 'title' => '', ], + 'PushTime' => ['description' => 'The UTC time when the push was sent, in ISO 8601 format: YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'example' => '2021-09-15T02:05:24Z', 'title' => ''], + 'Target' => ['description' => 'The push target. Valid values:'."\n" + ."\n" + .'- **ACCOUNT**: Push to a specified account.'."\n" + ."\n" + .'- **ALIAS**: Push to a specified alias.'."\n" + ."\n" + .'- **DEVICE**: Push to a specified device.'."\n" + ."\n" + .'- **TAG**: Push to a specified tag.'."\n" + ."\n" + .'- **ALL**: Push to all devices.'."\n" + ."\n" + .'- **TBD**: Initializes a continuous push. The target is specified later by calling the `ContinuouslyPush` API operation.', 'type' => 'string', 'example' => 'DEVICE', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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":""}]', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'CheckDevices' => [ - 'summary' => '批量检查设备有效性', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], + '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' => 'The request processing has failed due to some unknown error.'], + ['errorCode' => 'Timeout', 'errorMessage' => 'The request processing is timeout.', 'description' => 'Request processing timed out.'], ], ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', + 'responseDemo' => '[{"errorExample":"","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}","type":"json"}]', + 'title' => 'Query Alert Delivery Records ', + 'changeSet' => [ + ['createdAt' => '2024-05-13T08:11:37.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2021-12-27T12:34:38.000Z', 'description' => 'Error codes changed'], ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'example' => '23419851', - 'format' => 'int64', - 'required' => true, - 'type' => 'integer', - ], - ], - [ - 'name' => 'DeviceIds', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'example' => 'ae296f3b04a58a05b30c95f****,ae296f3b04a58a05b30c95f****,ae296f3b04a58a05b30c95f****', - 'required' => true, - 'type' => 'string', - ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryPushRecords'], ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - 'type' => 'string', - ], - 'DeviceCheckInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DeviceCheckInfo' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'properties' => [ - 'DeviceId' => [ - 'description' => '', - 'example' => 'ae296f3b04a58a05b30c95f****', - 'type' => 'string', - ], - 'Available' => [ - 'description' => '', - 'example' => 'true', - 'type' => 'boolean', - ], - ], - 'type' => 'object', - ], - ], - ], - ], + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'mpush:QueryPushRecords', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], ], - 'type' => 'object', ], ], ], - '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":""}]', - 'extraInfo' => ' ', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', ], - 'BindTag' => [ - 'summary' => '绑定标签', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'QueryPushStatByApp' => [ + 'summary' => 'Query push statistics for an app.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'The AppKey value.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], ], [ - 'name' => 'ClientKey', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'e2ba19de97604f55b16557673****', - ], + 'schema' => ['description' => 'The start time of the query. Specify the time in ISO 8601 format, YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'required' => true, 'example' => '2016-07-25T00:00:00Z', 'title' => ''], ], [ - 'name' => 'KeyType', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'DEVICE', - 'enum' => [ - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - ], - ], + 'schema' => ['description' => 'The end time of the query. Specify the time in ISO 8601 format, YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'required' => true, 'example' => '2016-07-29T00:00:00Z', 'title' => ''], ], [ - 'name' => 'TagName', + 'name' => 'Granularity', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'The data granularity of the response. You can only query data for up to 31 days at daily granularity. Valid values:'."\n" + ."\n" + .'- **DAY**: Query data at daily granularity.', 'type' => 'string', 'required' => true, - 'example' => 'test_tag,test_tag2', + 'enum' => ['DAY'], + 'example' => 'DAY', + 'title' => '', ], ], ], @@ -4986,173 +5721,109 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], + 'AppPushStats' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AppPushStat' => [ + 'description' => 'An array of AppPushStat objects. The API returns data based on the specified time granularity.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The timestamp.', 'type' => 'string', 'example' => '2016-07-25T00:00:00Z', 'title' => ''], + 'DeletedCount' => ['description' => 'The number of notifications cleared on devices.', 'type' => 'integer', 'format' => 'int64', 'example' => '10', 'title' => ''], + 'OpenedCount' => ['description' => 'The number of notifications clicked on devices.', 'type' => 'integer', 'format' => 'int64', 'example' => '30', 'title' => ''], + 'SmsReceiveSuccessCount' => ['description' => 'The number of text messages successfully received in composite SMS push notifications. This value can be empty.', 'type' => 'integer', 'format' => 'int64', 'example' => '0', 'title' => ''], + 'SmsSkipCount' => ['description' => 'The number of text messages skipped in composite SMS push notifications. For example, this occurs when no phone number is bound to the device. This value can be empty.', 'type' => 'integer', 'format' => 'int64', 'example' => '0', 'title' => ''], + 'SmsReceiveFailedCount' => ['description' => 'The number of text messages sent but not received on mobile phones in composite SMS push notifications. This value can be empty.', 'type' => 'integer', 'format' => 'int64', 'example' => '0', 'title' => ''], + 'SmsFailedCount' => ['description' => 'The number of text messages that failed to send in composite SMS push notifications. Failures may occur due to service unavailability, authorization failure, or invalid parameters. This value can be empty.', 'type' => 'integer', 'format' => 'int64', 'example' => '0', 'title' => ''], + 'ReceivedCount' => ['description' => 'The number of notifications actually delivered to devices.', 'type' => 'integer', 'format' => 'int64', 'example' => '60', 'title' => ''], + 'SentCount' => ['description' => 'The number of notifications actually sent from the push server.', 'type' => 'integer', 'format' => 'int64', 'example' => '100', 'title' => ''], + 'SmsSentCount' => ['description' => 'The number of text messages sent in composite SMS push notifications. This value can be empty.', 'type' => 'integer', 'format' => 'int64', 'example' => '0', 'title' => ''], + 'AcceptCount' => ['description' => 'The number of push notifications accepted by the push server.', 'type' => 'integer', 'format' => 'int64', 'example' => '120', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], 'description' => '', - 'type' => 'string', - 'example' => '82FD0A09-5BB8-40FB-8221-9A11FE92D620', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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' => 'App dimension push statistics', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'UnbindTag' => [ - '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' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], - ], - [ - 'name' => 'ClientKey', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'e2ba19de97604f55b16557673****', - ], - ], - [ - 'name' => 'KeyType', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'DEVICE', - 'enum' => [ - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - ], - ], - ], - [ - 'name' => 'TagName', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'test_tag1,test_tag2', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '159E4422-6624-4750-8943-DFD98D34858C', - ], + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => 'Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], ], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"159E4422-6624-4750-8943-DFD98D34858C\\"\\n}","type":"json"}]', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'responseDemo' => '[{"errorExample":"","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}","type":"json"}]', ], - 'RemoveTag' => [ - 'summary' => '删除标签', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'QueryPushStatByMsg' => [ + 'summary' => 'Queries push statistics for a message.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppKey', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'The AppKey.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], ], [ - 'name' => 'TagName', + 'name' => 'MessageId', 'in' => 'query', 'schema' => [ - 'description' => '', - 'type' => 'string', + 'description' => 'The ID of the pushed message. This ID is returned after a message is pushed.'."\n" + ."\n" + .'> Push data is available the next day. You cannot query data for the current day.', + 'enumValueTitles' => [], + 'type' => 'integer', + 'format' => 'int64', 'required' => true, - 'example' => 'test_tag', + 'example' => '510427', + 'title' => '', ], ], ], @@ -5161,76 +5832,111 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'CF195C34-98FB-491A-98D7-19CBC1FA880B', 'title' => ''], + 'PushStats' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PushStat' => [ + 'description' => 'An array of PushStat objects. Each object contains the push statistics for a message or notification.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'MessageId' => ['description' => 'The message ID.', 'type' => 'string', 'example' => '510427', 'title' => ''], + 'DeletedCount' => ['description' => 'The number of times the notification was cleared on devices.', 'type' => 'integer', 'format' => 'int64', 'example' => '10', 'title' => ''], + 'OpenedCount' => ['description' => 'The number of times the notification was opened on devices.', 'type' => 'integer', 'format' => 'int64', 'example' => '30', 'title' => ''], + 'SmsReceiveSuccessCount' => ['description' => '(Optional) The number of text messages successfully received in a composite push.', 'type' => 'integer', 'format' => 'int64', 'example' => '0', 'title' => ''], + 'SmsSkipCount' => ['description' => '(Optional) The number of text messages skipped in a composite push, for example, when no mobile number is bound.', 'type' => 'integer', 'format' => 'int64', 'example' => '0', 'title' => ''], + 'SmsReceiveFailedCount' => ['description' => '(Optional) The number of text messages that were sent in a composite push but were not received.', 'type' => 'integer', 'format' => 'int64', 'example' => '0', 'title' => ''], + 'SmsFailedCount' => ['description' => '(Optional) The number of text messages that failed to send in a composite push. This can happen if the service is not activated, authorization is denied, or parameters are invalid.', 'type' => 'integer', 'format' => 'int64', 'example' => '0', 'title' => ''], + 'ReceivedCount' => ['description' => 'The number of messages delivered to devices.', 'type' => 'integer', 'format' => 'int64', 'example' => '60', 'title' => ''], + 'SentCount' => ['description' => 'The number of messages sent from the push server.', 'type' => 'integer', 'format' => 'int64', 'example' => '100', 'title' => ''], + 'SmsSentCount' => ['description' => '(Optional) The number of text messages sent in a composite push.', 'type' => 'integer', 'format' => 'int64', 'example' => '0', 'title' => ''], + 'AcceptCount' => ['description' => 'The number of pushes accepted by the push server.', 'type' => 'integer', 'format' => 'int64', 'example' => '120', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], 'description' => '', - 'type' => 'string', - 'example' => '23000F3C-0EFE-4C89-82EE-E04F42D37B3C', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"23000F3C-0EFE-4C89-82EE-E04F42D37B3C\\"\\n}","type":"json"}]', + 'title' => 'Job Dimension Push Statistics', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => 'Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","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}","type":"json"}]', ], 'QueryTags' => [ - 'summary' => '查询标签列表', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'summary' => 'Queries tags for a specified object, such as a device, account, or alias.', + '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' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'The AppKey value.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], ], [ 'name' => 'ClientKey', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'e2ba19de97604f55b165576****', - ], + 'schema' => ['description' => 'The device, account, or alias. Query one ClientKey at a time.', 'type' => 'string', 'required' => true, 'example' => 'e2ba19de97604f55b165576****', 'title' => ''], ], [ 'name' => 'KeyType', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'The type of the ClientKey.', + 'enumValueTitles' => ['ACCOUNT' => 'Account', 'ALIAS' => 'Alias', 'DEVICE' => 'Device'], 'type' => 'string', 'required' => true, + 'enum' => ['DEVICE', 'ACCOUNT', 'ALIAS'], 'example' => 'DEVICE', - 'enum' => [ - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - ], + 'title' => '', ], ], ], @@ -5239,47 +5945,69 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'D68AE5C6-8AAF-46C9-B627-3FDACD1A4168', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'D68AE5C6-8AAF-46C9-B627-3FDACD1A4168', 'title' => ''], 'TagInfos' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ 'TagInfo' => [ - 'description' => '', + 'description' => 'The list of tags.', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'TagName' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'test_tag2', - ], + 'TagName' => ['description' => 'The name of the attached tag.', 'type' => 'string', 'example' => 'test_tag2', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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":""}]', - ], - 'ListTags' => [ - 'summary' => '获取标签列表', - 'methods' => [ - 'post', - 'get', + 'title' => 'Query Tag List', + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => 'Error codes changed'], ], - 'schemes' => [ - 'http', - 'https', + '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' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"D68AE5C6-8AAF-46C9-B627-3FDACD1A4168\\",\\n \\"TagInfos\\": {\\n \\"TagInfo\\": [\\n {\\n \\"TagName\\": \\"test_tag2\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'QueryUniqueDeviceStat' => [ + 'summary' => 'Obtain deduplicated device statistics for an app.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -5287,21 +6015,37 @@ ], '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' => 'Your app key.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time of the query, in ISO 8601 format. Format: YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'required' => true, 'example' => '2016-07-25T00:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time of the query, in ISO 8601 format. Format: YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'required' => true, 'example' => '2016-07-26T00:00:00Z', 'title' => ''], + ], + [ + 'name' => 'Granularity', + 'in' => 'query', 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', + 'description' => 'The time granularity for the query. Valid values:'."\n" + ."\n" + .'- DAY'."\n" + ."\n" + .'- MONTH', + 'type' => 'string', 'required' => true, - 'example' => '23267207', + 'enum' => ['DAY', 'MONTH'], + 'example' => 'DAY', + 'title' => '', ], ], ], @@ -5310,62 +6054,74 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '6EEF262B-EA7D-41DC-89B9-20F3D1E28194', - ], - 'TagInfos' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', 'title' => ''], + 'AppDeviceStats' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'TagInfo' => [ - 'description' => '', + 'AppDeviceStat' => [ + 'description' => 'An array of AppDeviceStat objects.', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'TagName' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'test_tag2', - ], + 'Time' => ['description' => 'The time slice.', 'type' => 'string', 'example' => '2016-07-25T00:00:00Z', 'title' => ''], + 'Count' => ['description' => 'The number of deduplicated devices.', 'type' => 'integer', 'format' => 'int64', 'example' => '100', 'title' => ''], ], + 'description' => 'An AppDeviceStat object.', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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.', - ], - ], - ], - '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' => 'Deduplicated Device Statistics ', + 'description' => '> This operation returns data only at the daily granularity. You can query up to 31 days of data. Deduplicated device counts reset on the first day of each month.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'BindAlias' => [ - 'summary' => '绑定别名', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + 'changeSet' => [ + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-25T04:05:36.000Z', 'description' => 'Error codes changed'], + ], + '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' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","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}","type":"json"}]', + ], + 'RemoveTag' => [ + 'summary' => 'Removes a tag from an app.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -5373,42 +6129,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' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'The AppKey value.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], ], [ - 'name' => 'DeviceId', + 'name' => 'TagName', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'e2ba19de97604f55b16557673****', - ], - ], - [ - 'name' => 'AliasName', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'test_alias', - ], + 'schema' => ['description' => 'The name of the tag to remove. You can remove only one tag at a time. Maximum length: 128 characters.', 'type' => 'string', 'required' => true, 'example' => 'test_tag', 'title' => ''], ], ], 'responses' => [ @@ -5416,53 +6147,45 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '159E4422-6624-4750-8943-DFD98D34858C', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '23000F3C-0EFE-4C89-82EE-E04F42D37B3C', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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.', - ], + 'title' => 'Remove Tags', + 'description' => 'Deleting a tag takes time. The time required depends on the number of tagged resources. Do not immediately recreate a tag with the same name after you delete it. Wait at least 5 minutes before you recreate a tag in the same app. If you delete multiple tags, wait at least 5 minutes for each deleted tag before you recreate them.', + 'changeSet' => [ + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '1', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RemoveTag'], ], - 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.', + 'product' => ['code' => 'cps', 'title' => '移动推送'], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:RemoveTag', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', '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":""}]', + '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' => [], @@ -5470,193 +6193,96 @@ ], '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' => '', - 'example' => '23267207', - 'format' => 'int64', - 'required' => true, - 'type' => 'integer', - ], + 'schema' => ['description' => 'The AppKey.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], ], [ 'name' => 'DeviceId', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'example' => 'e2ba19de97604f55b16557673****', - 'required' => true, - 'type' => 'string', - ], + 'schema' => ['description' => 'The unique device identifier for push notifications. It is 32 characters long and consists of digits and lowercase letters.', 'type' => 'string', 'required' => true, 'example' => 'e2ba19de97604f55b16557673****', 'title' => ''], ], [ 'name' => 'AliasName', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'example' => 'test_alias', - 'required' => false, - 'type' => 'string', - ], + 'schema' => ['description' => 'The alias to detach.'."\n" + ."\n" + .'An alias supports up to 128 bytes (one Chinese character counts as 3 bytes). This field is required when UnbindAll is false. You can detach up to 10 aliases at once. Separate multiple aliases with commas.', 'type' => 'string', 'required' => false, 'example' => 'test_alias', 'title' => ''], ], [ 'name' => 'UnbindAll', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'example' => 'true', - 'required' => false, - 'type' => 'boolean', - ], + 'schema' => ['description' => 'Whether to detach all aliases. Default is false.'."\n" + ."\n" + .'If true, detaches all aliases currently bound to the device. If false, detaches only the aliases specified in AliasName.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'example' => '159E4422-6624-4750-8943-DFD98D34858C', - 'type' => 'string', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '159E4422-6624-4750-8943-DFD98D34858C', 'title' => ''], ], 'type' => 'object', + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - '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":""}]', - ], - 'QueryAliases' => [ - 'summary' => '查询别名', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + 'title' => 'Detach Alias ', + 'summary' => 'Unbinds an alias. The change takes effect immediately.', + 'changeSet' => [ + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => 'Error codes changed'], ], - 'security' => [ - [ - 'AK' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbindAlias'], ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], - 'parameters' => [ + 'ramActions' => [ [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'example' => '23267207', - 'format' => 'int64', - 'required' => true, - 'type' => 'integer', - ], - ], - [ - 'name' => 'DeviceId', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'example' => 'e2ba19de97604f55b165576****', - 'required' => true, - 'type' => 'string', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'example' => '159E4422-6624-4750-8943-DFD98D34858C', - 'type' => 'string', - ], - 'AliasInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'AliasInfo' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'properties' => [ - 'AliasName' => [ - 'description' => '', - 'example' => 'test_alias1', - 'type' => 'string', - ], - ], - 'type' => 'object', - ], - ], - ], - ], + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:UnbindAlias', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], ], - 'type' => 'object', ], ], ], - '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":""}]', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"159E4422-6624-4750-8943-DFD98D34858C\\"\\n}","type":"json"}]', ], - 'QueryDevicesByAlias' => [ - 'summary' => '通过别名查询设备列表', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'UnbindPhone' => [ + 'summary' => 'Unbind the mobile phone number from a specified device.', + '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' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], + 'schema' => ['description' => 'AppKey information.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], ], [ - 'name' => 'Alias', + 'name' => 'DeviceId', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'aliasName', - ], + 'schema' => ['description' => 'The unique identity of the device. It is 32 characters long and consists of digits and lowercase letters.', 'type' => 'string', 'required' => true, 'example' => 'eb5f741d83d04d34807d229999eefa52', 'title' => ''], ], ], 'responses' => [ @@ -5664,123 +6290,45 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'DeviceIds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DeviceId' => [ - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'f6e43770afb944a1a879b4613****', - ], - ], - ], - ], - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '6A9FD644-35A5-40E4-89B0-2021CAEDC1B4', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '0D1126F0-F8FF-513D-BAFA-F140447BDED4', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DeviceIds\\": {\\n \\"DeviceId\\": [\\n \\"f6e43770afb944a1a879b4613****\\"\\n ]\\n },\\n \\"RequestId\\": \\"6A9FD644-35A5-40E4-89B0-2021CAEDC1B4\\"\\n}","type":"json"}]', - ], - 'QueryDevicesByAccount' => [ - 'summary' => '通过账户查询设备列表', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + 'title' => 'Detach Phone Number', + 'changeSet' => [ + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => 'Error codes changed'], ], - 'security' => [ - [ - 'AK' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbindPhone'], ], + 'product' => ['code' => 'cps', 'title' => '移动推送'], ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], - 'parameters' => [ + 'ramActions' => [ [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], - ], - [ - 'name' => 'Account', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'accountName', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'A8A24108-2AD0-4F6E-81C7-A8A24C2C2AD0', - ], - 'DeviceIds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DeviceId' => [ - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'f6e43770afb944a1a879b46130ZZ****', - ], - ], - ], - ], + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:UnbindPhone', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', '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"}]', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0D1126F0-F8FF-513D-BAFA-F140447BDED4\\"\\n}","type":"json"}]', ], - 'BindPhone' => [ - 'summary' => '绑定手机号码', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'UnbindTag' => [ + 'summary' => 'Unbinds one or more tags from a specified target.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -5788,1042 +6336,798 @@ ], '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' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'enumValueTitles' => [ - 23793506 => '23793506', - 24738888 => '24738888', - 27725900 => '27725900', - 27819095 => '27819095', - ], - 'example' => '27725900', - ], + 'schema' => ['description' => 'The AppKey of your application.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '23267207', 'title' => ''], ], [ - 'name' => 'DeviceId', + 'name' => 'ClientKey', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'enumValueTitles' => [ - 'abcdef1d83d04d34807d229999eefa52' => 'abcdef1d83d04d34807d229999eefa52', - ], - 'example' => 'eb5f741d83d04d34807d229999eefa52', - ], + 'schema' => ['description' => 'The ID of the device.', 'type' => 'string', 'required' => true, 'example' => 'e2ba19de97604f55b16557673****', 'title' => ''], ], [ - 'name' => 'PhoneNumber', + 'name' => 'KeyType', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'The type of the ClientKey. Valid value:'."\n" + ."\n" + .'- **DEVICE**: The key is a device ID.', + 'enumValueTitles' => [], 'type' => 'string', 'required' => true, - 'enumValueTitles' => [ - 23456789102 => '23456789102', - ], - 'example' => '1381111****', + 'enum' => ['DEVICE', 'ACCOUNT', 'ALIAS'], + 'example' => 'DEVICE', + 'title' => '', ], ], + [ + 'name' => 'TagName', + 'in' => 'query', + 'schema' => ['description' => 'Specifies the tag to unbind. To unbind multiple tags, separate them with commas. A maximum of 10 tags, each up to 128 characters long, can be unbound per request. The system supports a total of 10,000 tags.', 'type' => 'string', 'required' => true, 'example' => 'test_tag1,test_tag2', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '0D1126F0-F8FF-513D-BAFA-F140447BDED4', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '159E4422-6624-4750-8943-DFD98D34858C', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"159E4422-6624-4750-8943-DFD98D34858C\\"\\n}","type":"json"}]', + 'title' => 'Detach Tag', + 'changeSet' => [ + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-01-24T14:41:24.000Z', 'description' => 'Error codes changed'], + ], + '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' => 'All Resource', '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":""}]', ], - 'UnbindPhone' => [ - 'summary' => '解绑手机号码', - 'methods' => [ - 'post', - 'get', + ], + 'endpoints' => [ + ['regionId' => 'ap-northeast-1', 'regionName' => 'Japan (Tokyo)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-southeast-1', 'regionName' => 'Singapore', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-southeast-2', 'regionName' => 'Australia (Sydney) Closed', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-southeast-3', 'regionName' => 'Malaysia (Kuala Lumpur)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-southeast-5', 'regionName' => 'Indonesia (Jakarta)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-beijing', 'regionName' => 'China (Beijing)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-chengdu', 'regionName' => 'China (Chengdu)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-hangzhou', 'regionName' => 'China (Hangzhou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => 'cloudpush.vpc-proxy.aliyuncs.com'], + ['regionId' => 'cn-hongkong', 'regionName' => 'China (Hong Kong)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-huhehaote', 'regionName' => 'China (Hohhot)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-qingdao', 'regionName' => 'China (Qingdao)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => 'cloudpush.vpc-proxy.aliyuncs.com'], + ['regionId' => 'cn-shanghai', 'regionName' => 'China (Shanghai)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => 'cloudpush.vpc-proxy.aliyuncs.com'], + ['regionId' => 'cn-shenzhen', 'regionName' => 'China (Shenzhen)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => 'cloudpush.vpc-proxy.aliyuncs.com'], + ['regionId' => 'cn-zhangjiakou', 'regionName' => 'China (Zhangjiakou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => 'cloudpush.vpc-proxy.aliyuncs.com'], + ['regionId' => 'us-west-1', 'regionName' => 'US (Silicon Valley)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'us-east-1', 'regionName' => 'US (Virginia)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'eu-west-1', 'regionName' => 'UK (London)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'eu-central-1', 'regionName' => 'Germany (Frankfurt)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'me-east-1', 'regionName' => 'UAE (Dubai)', 'areaId' => 'middleEast', 'areaName' => 'Middle East', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-south-1', 'regionName' => 'India (Mumbai) Closed', 'areaId' => 'middleEast', 'areaName' => 'Middle East', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-shenzhen-finance-1', 'regionName' => 'China South 1 Finance', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-shanghai-finance-1', 'regionName' => 'China East 2 Finance', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-north-2-gov-1', 'regionName' => 'Beijing Government Cloud', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-hangzhou-finance', 'regionName' => 'China East 1 Finance', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'cloudpush.aliyuncs.com', 'endpoint' => 'cloudpush.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-beijing-finance-1', 'regionName' => 'China North 2 Finance (Preview)', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', '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' => 'The number of devices bound to the account exceeds 10000.'], + ['code' => 'AliasLimitExceed', 'message' => 'The number of aliases bound to the deviceId exceeds 128.', 'http_code' => 400, 'description' => 'The number of aliases bound to the deviceId exceeds 128.'], + ['code' => 'AppNotConfigAndroid', 'message' => 'The PackageName of specified app is not configured.', 'http_code' => null, 'description' => ''], + ['code' => 'AppTypeNotIos', 'message' => 'The AppType of specified AppKey is not iOS.', 'http_code' => 400, 'description' => ''], + ['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' => 'The specified vendor channel information is not configured.'], + ['code' => 'ChannelConfigNotEmpty', 'message' => 'The configuration of %s channel is not empty.', 'http_code' => 400, 'description' => ''], + ['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' => 'The number of devices bound to the alias exceeds 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' => 'The request processing has failed due to some unknown error.'], + ['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' => ''], + ['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' => ''], + ['code' => 'Invalid.Parameter', 'message' => 'The specified parameter is invalid: %s.', 'http_code' => 400, 'description' => ''], + ['code' => 'InvalidAppKey.NotFound', 'message' => 'The specified AppKey is not found.', 'http_code' => 400, 'description' => ''], + ['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' => ''], + ['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' => ''], + ['code' => 'InvalidPeriod.ExceedDays', 'message' => 'The period between specified EndTime and StartTime exceeds %s days.', 'http_code' => 400, 'description' => ''], + ['code' => 'InvalidPeriod.ExceedMonth', 'message' => 'The period between specified EndTime and StartTime exceeds 31 days.', 'http_code' => 400, 'description' => ''], + ['code' => 'InvalidPeriod.ExceedYear', 'message' => 'The period between specified EndTime and StartTime exceeds 366 days.', 'http_code' => 400, 'description' => ''], + ['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' => ''], + ['code' => 'PermissionDenied', 'message' => 'The specified AppKey is not authorized.', 'http_code' => null, 'description' => ''], + ['code' => 'SendSpeedNotSupported', 'message' => 'SendSpeed is not supported for specified Target.', 'http_code' => 400, 'description' => ''], + ['code' => 'SlrDeleteCheckFailed', 'message' => 'Check SLR for delete failed.', 'http_code' => 400, 'description' => ''], + ['code' => 'SmsProfileConfigFailed', 'message' => 'Failed to configure SMS profile.', 'http_code' => 400, 'description' => ''], + ['code' => 'SmsProfileGetFailed', 'message' => 'Failed to get SMS profile.', 'http_code' => 400, 'description' => ''], + ['code' => 'SmsRoleAuthorizeFailed', 'message' => 'Failed to authorize SMS role.', 'http_code' => 400, 'description' => ''], + ['code' => 'SmsRoleUnauthorized', 'message' => 'The SMS role is unauthorized.', 'http_code' => 400, 'description' => ''], + ['code' => 'TagsNumberBeyondLimit', 'message' => 'The number of tags bound to this app exceeds the limit.', 'http_code' => 400, 'description' => ''], + ['code' => 'TargetNotSupported', 'message' => 'Target is not supported for file push.', 'http_code' => 400, 'description' => ''], + ['code' => 'TargetNotSupported', 'message' => 'Target is not supported for batch push.', 'http_code' => 400, 'description' => ''], + ['code' => 'TargetNotSupported', 'message' => 'Target is not supported for iOS live activity.', 'http_code' => 400, 'description' => ''], + ['code' => 'Timeout', 'message' => 'The request processing is timeout.', 'http_code' => 500, 'description' => 'Request processing timed out.'], + ['code' => 'TraceInfoExpired', 'message' => 'The trace information of specified MessageId has expired.', 'http_code' => 400, 'description' => ''], + ], + 'changeSet' => [ + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'MassPush'], + ['description' => 'Request parameters changed', 'api' => 'MassPush'], + ['description' => 'Error codes changed', 'api' => 'Push'], + ['description' => 'Request parameters changed', 'api' => 'Push'], + ], + 'createdAt' => '2025-11-25T08:17:24.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'MassPush'], + ['description' => 'Request parameters changed', 'api' => 'Push'], ], - 'schemes' => [ - 'http', - 'https', + 'createdAt' => '2024-10-10T01:26:55.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'MassPush'], + ['description' => 'Request parameters changed', 'api' => 'Push'], ], - 'security' => [ - [ - 'AK' => [], - ], + 'createdAt' => '2024-08-07T05:34:23.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'QueryDeviceStat'], ], - 'operationType' => 'write', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', + 'createdAt' => '2024-07-10T08:13:05.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'MassPush'], + ['description' => 'Request parameters changed', 'api' => 'Push'], ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], - ], - [ - 'name' => 'DeviceId', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'eb5f741d83d04d34807d229999eefa52', - ], - ], + 'createdAt' => '2024-06-25T04:40:50.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'QueryPushRecords'], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '0D1126F0-F8FF-513D-BAFA-F140447BDED4', - ], - ], - ], - ], + 'createdAt' => '2024-05-13T08:11:44.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'BindPhone'], + ['description' => 'Error codes changed', 'api' => 'QueryAliases'], + ['description' => 'Error codes changed', 'api' => 'QueryDevicesByAlias'], + ['description' => 'Error codes changed', 'api' => 'QueryDeviceStat'], + ['description' => 'Error codes changed', 'api' => 'QueryPushRecords'], + ['description' => 'Error codes changed', 'api' => 'QueryPushStatByApp'], + ], + 'createdAt' => '2024-01-25T04:05:48.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'CheckDevices'], + ['description' => 'Error codes changed', '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":""}]', + 'createdAt' => '2024-01-24T15:21:59.000Z', + 'description' => '', ], - 'PushMessageToiOS' => [ - 'summary' => '推送消息给iOS设备', - 'methods' => [ - 'post', - 'get', + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'RemoveTag'], + ['description' => 'Error codes changed', 'api' => 'UnbindAlias'], + ['description' => 'Error codes changed', 'api' => 'UnbindPhone'], + ['description' => 'Error codes changed', 'api' => 'UnbindTag'], + ], + 'createdAt' => '2024-01-24T14:41:33.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'CancelPush'], + ['description' => 'Error codes changed', 'api' => 'CompleteContinuouslyPush'], + ['description' => 'Error codes changed', 'api' => 'ContinuouslyPush'], + ['description' => 'Error codes changed', 'api' => 'MassPush'], + ['description' => 'Error codes changed', 'api' => 'Push'], + ['description' => 'Error codes changed', 'api' => 'PushMessageToAndroid'], + ['description' => 'Error codes changed', 'api' => 'PushNoticeToiOS'], + ], + 'createdAt' => '2024-01-22T14:28:03.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'MassPush'], + ['description' => 'Request parameters changed', 'api' => 'Push'], ], - 'schemes' => [ - 'http', - 'https', + 'createdAt' => '2023-12-18T11:18:44.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'MassPush'], + ['description' => 'Request parameters changed', 'api' => 'Push'], + ['description' => 'Request parameters changed, Error codes changed', 'api' => 'PushMessageToAndroid'], + ['description' => 'Request parameters changed, Error codes changed', 'api' => 'PushMessageToiOS'], + ['description' => 'Request parameters changed, Error codes changed', 'api' => 'PushNoticeToAndroid'], + ], + 'createdAt' => '2023-10-12T07:15:03.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed, Error codes changed', 'api' => 'QueryDeviceInfo'], ], - 'security' => [ - [ - 'AK' => [], - ], + 'createdAt' => '2023-09-26T08:23:28.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'MassPush'], + ['description' => 'Request parameters changed', 'api' => 'Push'], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'paid', + 'createdAt' => '2023-03-24T08:22:06.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'MassPush'], + ['description' => 'Request parameters changed', 'api' => 'Push'], ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '24780725', - ], - ], - [ - 'name' => 'Target', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'ALL', - 'enum' => [ - 'ALL', - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - 'TAG', - ], - ], - ], - [ - 'name' => 'TargetValue', - 'in' => 'query', - 'schema' => [ - 'description' => '', - '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' => [ - 'type' => 'boolean', - ], - ], - [ - 'name' => 'JobKey', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '123', - ], - ], + 'createdAt' => '2022-06-07T11:37:48.000Z', + 'description' => 'fix: 修复AndroidNotificationNotifyId取值范围问题', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'CheckDevice'], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'MessageId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '501029', - ], - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - ], - ], - ], + 'createdAt' => '2022-03-31T09:28:25.000Z', + 'description' => '修改CheckDevice为废弃,QueryDeviceCount为私有。', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'MassPush'], + ['description' => 'Request parameters changed', 'api' => 'Push'], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'createdAt' => '2022-03-30T09:07:12.000Z', + 'description' => '在Push、MassPushAPI中,增加对Trim、AndroidVivoPushMode、iOSInterruptionLevel、iOSRelevanceScore参数的支持。', ], - 'PushNoticeToiOS' => [ - 'summary' => '推送通知给iOS设备', - 'methods' => [ - 'post', - 'get', + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'QueryDevicesByAccount'], ], - 'schemes' => [ - 'http', - 'https', + 'createdAt' => '2022-01-11T10:18:37.000Z', + 'description' => '完善错误码', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'BindAlias'], + ['description' => 'Error codes changed', 'api' => 'BindTag'], + ['description' => 'Error codes changed', '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' => 'Push'], + ], + 'ram' => [ + 'productCode' => 'Push', + 'productName' => 'Enterprise Mobile Application Studio', + 'ramCodes' => ['mpush', 'mhub'], + 'ramLevel' => 'OPERATION', + 'ramConditions' => [], + 'ramActions' => [ + [ + 'apiName' => 'RemoveTag', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:RemoveTag', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ + [ + 'apiName' => 'ContinuouslyPush', + 'description' => '', 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'paid', - ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '24780725', - ], - ], - [ - 'name' => 'Target', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'ALL', - 'enum' => [ - 'ALL', - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - 'TAG', - ], - ], - ], - [ - 'name' => 'TargetValue', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'ALL', - ], - ], - [ - 'name' => 'ApnsEnv', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'DEV', - 'enum' => [ - 'DEV', - 'PRODUCT', - ], - ], - ], - [ - 'name' => 'Title', - 'in' => 'query', - 'schema' => [ - 'description' => '', - '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' => '', - 'type' => 'string', - 'required' => false, - 'example' => '123', - ], - ], - [ - 'name' => 'ExtParameters', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '{"k1":"ios","k2":"v2"}', + 'ramAction' => [ + 'action' => 'mpush:ContinuouslyPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'MessageId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '501029', - ], - ], + [ + 'apiName' => 'QueryPushStatByMsg', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryPushStatByMsg', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\",\\n \\"RequestId\\": \\"501029\\"\\n}","type":"json"}]', - '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' => 'All Resource', 'arn' => '*'], + ], ], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ + [ + 'apiName' => 'PushMessageToiOS', + 'description' => '', 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'paid', - ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', + 'ramAction' => [ + 'action' => 'mpush:PushMessageToiOS', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'Target', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'ALL', - 'enum' => [ - 'ALL', - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - 'TAG', - ], + ], + [ + 'apiName' => 'PushNoticeToiOS', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:PushNoticeToiOS', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'TargetValue', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'ALL', + ], + [ + 'apiName' => 'BindAlias', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:BindAlias', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', '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' => 'All Resource', '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' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'StoreOffline', - 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', + ], + [ + 'apiName' => 'PushV2', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:PushV2', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'JobKey', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '123', + ], + [ + 'apiName' => 'QueryPushStatByApp', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryPushStatByApp', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'ExtParameters', - 'in' => 'query', - 'schema' => [ - 'description' => '', - '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' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'MessageId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '501029', - ], - 'RequestId' => [ - 'description' => '', - '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' => 'All Resource', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'PushMessageToAndroid' => [ - 'summary' => '推送消息给Android设备', - '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' => 'All Resource', 'arn' => '*'], + ], ], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ + [ + 'apiName' => 'Push', + 'description' => '', 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'paid', - ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23267207', - ], - ], - [ - 'name' => 'Target', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'ALL', - 'enum' => [ - 'ALL', - 'DEVICE', - 'ACCOUNT', - 'ALIAS', - 'TAG', - ], + 'ramAction' => [ + 'action' => 'mpush:Push', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'TargetValue', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'all', + ], + [ + 'apiName' => 'UnbindAlias', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'mpush:UnbindAlias', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', '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' => 'All Resource', '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' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'StoreOffline', - 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', + ], + [ + 'apiName' => 'ListSummaryApps', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'mpush:ListSummaryApps', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'JobKey', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '123', + ], + [ + 'apiName' => 'QueryUniqueDeviceStat', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'mpush:QueryUniqueDeviceStat', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'MessageId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '501029', - ], - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - ], + [ + 'apiName' => 'PushNoticeToAndroid', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:PushNoticeToAndroid', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', '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' => 'All Resource', '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' => 'All Resource', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MessageId\\": \\"501029\\",\\n \\"RequestId\\": \\"9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC\\"\\n}","type":"json"}]', - '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' => 'All Resource', 'arn' => '*'], + ], ], ], - 'operationType' => 'read', - 'deprecated' => true, - 'systemTags' => [ + [ + 'apiName' => 'QueryAliases', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - ], - 'parameters' => [ - [ - 'name' => 'AppKey', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '23419851', + 'ramAction' => [ + 'action' => 'mpush:QueryAliases', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'DeviceId', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'ae296f3b04a58a05b30c95f****', + ], + [ + 'apiName' => 'MassPush', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:MassPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'Available' => [ - 'description' => '', - 'type' => 'boolean', - 'example' => 'ture', - ], - 'RequestId' => [ - 'description' => '', - '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' => 'All Resource', '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' => 'All Resource', '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":""}]', - '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' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'PushMessageToAndroid', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'mpush:PushMessageToAndroid', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Push', 'resourceType' => 'All Resource', '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' => 'All Resource', 'arn' => '*'], + ], ], - 'tenantRelevance' => 'publicInformation', ], - 'parameters' => [], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC', - ], - 'SummaryAppInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'SummaryAppInfo' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'AppKey' => [ - 'description' => '', - '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' => 'All Resource', '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' => 'All Resource', '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":""}]', - ], - ], - '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' => [], ], ]; |
