
# HTTP(S)消息格式
#### 操作场景
![](https://support.huaweicloud.com/usermanual-smn/public_sys-resources/caution_3.0-zh-cn.png)
1. 接收SMN服务发送的HTTP(S)消息时，终端证书的CN名称请参考业界规范，部分特殊字符可能导致https消息发送失败。
2. 在互联网上传递未加密的http协议消息内容存在信息泄漏风险，推荐用户终端添加订阅时对接通道优先使用https类型。
 
描述SMN服务向HTTP(S)终端发送消息的格式，您可以通过消息头部信息中的消息类型来区分消息格式。
消息格式包括：HTTP(S)订阅确认消息的格式、HTTP(S)推送消息的格式、HTTP(S)取消订阅消息的格式、HTTP(S)订阅用户确认订阅消息的格式和HTTP(S)订阅用户取消订阅消息的格式五种消息格式，HTTP/HTTPS协议均为POST方式。
当SMN服务向HTTP(S)终端发送消息时，头部包括请求X-SMN-MESSAGE-TYPE，X-SMN-MESSAGE-ID，X-SMN-TOPIC-URN，如[表1]所示。
 表1消息HTTP(S)头部参数说明 
| **参数**             | **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|
| X-SMN-MESSAGE-TYPE | 消息类型，消息类型分别有： - SubscriptionConfirmation：订阅确认消息类型  - Notification：通知消息类型  - UnsubscribeConfirmation：取消订阅消息类型  - HttpSubscriptionUserConfirm：订阅用户订阅确认消息类型  - HttpSubscriptionUserUnsubscribe：订阅用户取消订阅消息类型   |
| X-SMN-MESSAGE-ID   | 消息唯一标识。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| X-SMN-TOPIC-URN    | 主题的唯一标识，表示消息归属的主题。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
![](https://support.huaweicloud.com/usermanual-smn/public_sys-resources/note_3.0-zh-cn.png)
关于HTTP(S)头部字段的说明：
- RFC 7230 章节3.2中规定，HTTP(S)头部的字段名称不区分大小写。
- RFC 7540 章节8.1.2中规定，对于支持HTTP/2的服务端，头部字段信息需要统一改为全小写。
- 对于用户自定义的HTTP(S)头部字段，SMN也将采用上述的处理策略。
- 用户如果从HTTP(S)头部中获取相关字段，建议采用不区分大小写的方式。
 
#### HTTP(S)订阅确认消息的格式
添加HTTP(S)订阅终端以后，SMN会向订阅终端推送一条订阅确认的消息，下面将描述消息的HTTP Content，它是JSON格式的字符串，其中包括subscribe_url值，订阅确认需要GET请求subscribe_url地址进行确认，具体JSON字段说明如[表2]所示。
 表2HTTP(S)订阅确认消息的格式参数说明 
| **参数**            | **说明**                                                                                                                                                                                        |
|:---|:---|
| type              | 消息类型，SubscriptionConfirmation。                                                                                                                                                                |
| signature         | 签名信息。 签名字段包括message，message_id，subscribe_url，timestamp，topic_urn和type，具体签名信息校验，请参见[校验消息签名](https://support.huaweicloud.com/usermanual-smn/smn_ug_a9003.html)。 |
| topic_urn         | 主题的唯一标识，表示消息归属的主题。                                                                                                                                                                            |
| message_id        | 消息唯一标识。                                                                                                                                                                                       |
| signature_version | 签名的版本信息，目前是V1。                                                                                                                                                                                |
| message           | 订阅确认消息的描述。                                                                                                                                                                                    |
| subscribe_url     | 订阅确认需要访问的URL。                                                                                                                                                                                 |
| signing_cert_url  | 用于消息签名的证书URL，不需要鉴权，可直接访问。                                                                                                                                                                     |
| timestamp         | 消息第一次发送的时间戳。                                                                                                                                                                                  |
   
HTTP(S)订阅确认消息样例如下：
```
{
    "subscribe_url": "https://console.******.com/smn/subscription/confirm?token=0a419ac94f80f2c62f14c01e34ae5dfcf6b0b92ef46241218eaae5b4cb90d5d423cf104593284665a1f98691b1576976785114fb4408450e8de153b9f1******&topic_urn=urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******&region=region01&region_id=region01",
    "signature": "W/DQSiqpRkY6En0jNaFtCYOpmUjMhzoJIdMPLhnRv37iPzNhH+SxlievFoUIyS29z7Ig4hL/ECWNfGrRhTqoasiAeOaXOjoRNoQ73YfyqWm7x7OdX+2c202zxaOS5GcsUHohxAS+wCYd6W6aVhx6eQpWzpzLwrGgE+iPmsd5I00HXIBeZEeBx/VuoqkPyBDnSvGNNDTJ2gw+fL7XuKqf/DUUjjI8dkPsp3gAcETe/XMgf3UTMFDvLLrq2fAZVhr/jMR/9m81PwuDs1k9i3iBxT67afzmQ1AhY/a/ayQX7Fmwf/FBpehG1o8e98lXAZFS2nzhvTpttawUFG8Z82******",
    "topic_urn": "urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******",
    "message_id": "54bb04eddfc842e9b44ca36393f77cd3",
    "signature_version": "v1",
    "type": "SubscriptionConfirmation",
    "message": "You are invited to subscribe to topic: urn:smn:regionid:0a419ac94f80f2c62f14c01e34******:test_******. To confirm this subscription, please visit the subscribe_url included in this message. The subscribe_url is valid only within 48 hours.",
    "signing_cert_url": "https://smn.region01.******.com/smn/SMN_region01_3190c26a56fb435f9882e3435b******.pem",
    "timestamp": "2024-07-10T09:43:44Z"
}
```
#### HTTP(S)推送消息的格式
HTTP(S)订阅终端订阅确认后，终端将收到SMN推送的消息，下面将描述HTTP Content信息，它是JSON串，具体字段说明如[表3]所示。
 表3HTTP(S)推送消息的格式参数说明 
| **参数**            | **说明**                                                                                                                                                                                                      |
|:---|:---|
| type              | 消息类型，Notification。                                                                                                                                                                                          |
| signature         | 签名信息。 签名字段包括message，message_id，subject， timestamp，topic_urn和type,具体签名信息校验，如果subject不存在，则不参与校验，请参见[校验消息签名](https://support.huaweicloud.com/usermanual-smn/smn_ug_a9003.html)。 |
| subject           | 消息标题。                                                                                                                                                                                                       |
| topic_urn         | 主题的唯一标识，表示消息归属的主题。                                                                                                                                                                                          |
| message_id        | 消息唯一标识。                                                                                                                                                                                                     |
| signature_version | 签名的版本信息，目前是V1。                                                                                                                                                                                              |
| message           | 订阅推送消息的描述。                                                                                                                                                                                                  |
| unsubscribe_url   | 通过访问该链接可以取消终端订阅。                                                                                                                                                                                            |
| signing_cert_url  | 用于消息签名的证书URL。                                                                                                                                                                                               |
| timestamp         | 消息第一次发送的时间戳。                                                                                                                                                                                                |
   
HTTP(S)推送消息样例如下：
```
{
    "signature": "WmSQ2/0kp2v2u2T33lMqKYrrLxnJoW2NHqIy5QowDuHH3y+HvhCNlCgHDUiAGpb3suCXJm16hWF+EJAYR+tPaTY1q0N3p0p+oBbhlD30fOTxRNsEWRAg73k4qArmQajhdDZOtd57xelQiNhzl2r6iCs0en4kR2iY78zZM/9caZQGBTlNcjkd2lyXYP6aSc7MOgxTsYrRus0A6yipD3zsUA7TvTdfsauAe2hZLR5W0l+um+S3ytT7sA1CMlIJPBXHP5WlqS4iMAeivmufZv7T+G43DbwWfw/seKnK6uFKWd214oqsY2/oLY3C4dcyLdvsy0/7/W8zvxXbgHeSL4******",
    "subject": "SMN",
    "topic_urn": "urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******",
    "message_id": "d84bd6629ef04513ad2e37bffd6e17cb",
    "signature_version": "v1",
    "type": "Notification",
    "message": "{\"enterpriseProjectId\": \"0\", \"eventTime\": \"2019-08-12 22:40:55.040632\", \"chargingMode\": \"postPaid\", \"cloudserviceType\": \"xxx.service.type.bandwidth\", \"eventType\": 1, \"regionId\": \"region01\", \"tenantId\": \"057eefe55400d2742f8cc00178******\", \"resourceType\": \"xxx.resource.type.bandwidth\", \"resourceSpecCode\": \"19_bgp\", \"resourceSize\": 10, \"resourceId\": \"e091f1b1-08ef-4e2b-a27e-f85e4c******\", \"resouceSizeMeasureId\": 15, \"resourceName\": \"elbauto_2019_08_13_06_40_46\"}",
    "unsubscribe_url": "https://console.******.com/smn/subscription/unsubscribe?region=region01&region_id=region01&subscription_urn=urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******:23cf104593284665a1f98691b1******",
    "signing_cert_url": "https://smn.region01.******.com/smn/SMN_region01_3190c26a56fb435f9882e3435b******.pem",
    "timestamp": "2024-07-10T09:45:00Z"
}
```
#### HTTP(S)取消订阅消息的格式
HTTP(S)订阅终端取消订阅确认后，终端将收到SMN推送的取消订阅确认消息，下面将描述HTTP Content信息，它是JSON串，具体字段说明如[表4]所示。
 表4HTTP(S)取消订阅消息的格式参数说明 
| **参数**            | **说明**                                                                                                                                                                                        |
|:---|:---|
| type              | 消息类型，UnsubscribeConfirmation。                                                                                                                                                                 |
| signature         | 签名信息。 签名字段包括message，message_id，subscribe_url、timestamp，topic_urn和type,具体签名信息校验，请参见[校验消息签名](https://support.huaweicloud.com/usermanual-smn/smn_ug_a9003.html)。 |
| topic_urn         | 主题的唯一标识，表示消息归属的主题。                                                                                                                                                                            |
| message_id        | 消息唯一标识。                                                                                                                                                                                       |
| signature_version | 签名的版本信息，目前是V1。                                                                                                                                                                                |
| message           | 取消订阅确认消息的描述。                                                                                                                                                                                  |
| subscribe_url     | 再次订阅确认需要访问的URL。                                                                                                                                                                               |
| signing_cert_url  | 用于消息签名的证书URL。                                                                                                                                                                                 |
| timestamp         | 消息第一次发送的时间戳。                                                                                                                                                                                  |
   
HTTP(S)取消订阅消息样例如下：
```
{
    "signature": "ViE96uGbBkl+S8eWqgebi5KdmRht2U8+Rs88yuyMHq1k4h3jUkcDZ6HCqTqdpJ8nrLcdqETyyEiOQyTszJdU05z+LhfE8jerCCdSbL4zeInVkydHh0kcCRWmORye0/EuQ/gLC1UIXwvUsqbUCPnBRhNFXOeXMOPPCzK+d04xjy4QHd1H/bHxgsY3AlTe0gCFT068Zru7OK6w9aQaY44mXnN3OWGmBmoHyFab5TRXLSQNz/9u/Vj646cQMMaI0PPQ30QzGYD0MtzgDZi12m8jMTHAnMkTEcbLaEgaqmaoEnATSpEcspFKNXv2skwk7rsVakMOISpMH3+qC6RzhE******",
    "topic_urn": "urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******",
    "message_id": "d86c201092574e71a3ca85826652c58b",
    "signature_version": "v1",
    "type": "UnsubscribeConfirmation",
    "message": "You are unsubscribed from topic: urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******. To subscribe to this topic again, please visit the subscribe_url included in this message. The subscribe_url is valid only within 48 hours.",
    "subscribe_url": "https://console.******.com/smn/subscription/confirm?token=0a419ac94f80f2c62f14c01e34ae5dfcf6b0b92ef46241218eaae5b4cb90d5d423cf104593284665a1f98691b1576976785114fb4408450e8de153b9f1******&topic_urn=urn:smn:region01:0a419ac94f80f2c62f14c01e34******:test_******&region=region01&region_id=region01",
    "signing_cert_url": "https://smn.region01.******.com/smn/SMN_region01_3190c26a56fb435f9882e3435b******.pem",
    "timestamp": "2024-07-10T11:45:00Z"
}
```
#### HTTP(S)订阅用户确认订阅消息的格式
添加HTTP(S)订阅用户和HTTP(S)订阅用户取消订阅以后，SMN会向订阅终端推送一条订阅确认的消息，下面将描述消息的HTTP Content，它是JSON格式的字符串，其中包括subscribe_url值，订阅用户确认订阅需要GET请求subscribe_url地址进行确认，具体JSON字段说明如[表5]所示。
 表5HTTP(S)订阅用户确认订阅消息的格式参数说明 
| **参数**            | **说明**                                                       |
|:---|:---|
| type              | 消息类型，HttpSubscriptionUserConfirm。                            |
| signature         | 签名信息。 签名字段包括message，message_id，subscribe_url，timestamp，type。 |
| message_id        | 消息唯一标识。                                                      |
| signature_version | 签名的版本信息，目前是V1。                                               |
| message           | 订阅用户确认订阅消息的描述。                                               |
| subscribe_url     | 订阅用户确认订阅需要访问的URL。                                            |
| signing_cert_url  | 用于消息签名的证书URL，不需要鉴权，可直接访问。                                    |
| timestamp         | 消息第一次发送的时间戳。                                                 |
   
HTTP(S)订阅用户确认消息样例如下：
```
{
    "message": "You are invited to be a subscriber that belongs to test_******. To confirm your subscription, click subscribe_url within 48 hours.",
    "subscribe_url": "https://console.******.com/smn/v2/subscription-users/confirm?ticket_data=******&region=******",
    "type": "HttpSubscriptionUserConfirm",
    "message_id": "1ca9e463f2a84ef69f43b65caf9b2064",
    "signature": "lRzi9ymQoTgGX7dn8s3UtWWHme8Z0gzLFsknuP2LRkxZqBrHJ9s8+LTwHWcqS7GjhACOBRUuKF+TLsl+Z8jjjvpXCL2pxNZUoBNgT8OhHJ1hL5dqqFBmQzWMa1+mleF9Wo/5kvT+z8ab5h2MV3oLI9ZKjhY1L9Aby7CWq6W4sLtqjqakAWnMEM/o+z/HfHSx3SrRkPyyR5yfaw6GV2K8y+OQ+lPKbMC5qeHjHvIvD1zPsTIvwswxyM2Q3q7c6+fAKeyImeWprbkZc/V0i5VXcYib/Wo8LJcyE87NDpeq1uyWnaDjk1+z2jlXaTB+52FHLAgRsyECrdD2PCQqT82pSQ******",
    "signature_version": "v1",
    "signing_cert_url": "https://smn.region01.******.com/smn/SMN_region01_3190c26a56fb435f9882e3435b******.pem",
    "timestamp": "2026-01-01T00:00:00Z"
}
```
#### HTTP(S)订阅用户取消订阅消息的格式
HTTP(S)订阅用户确认订阅以后，SMN会向订阅终端推送一条取消订阅的消息，下面将描述消息的HTTP Content信息，它是JSON串，消息中包含unsubscribe_url，用户可以通过访问该链接取消订阅用户确认订阅，具体字段说明如[表6]所示。
 表6HTTP(S)订阅用户取消订阅消息的格式参数说明 
| **参数**            | **说明**                                                                        |
|:---|:---|
| type              | 消息类型，HttpSubscriptionUserUnsubscribe。                                         |
| signature         | 签名信息。 签名字段包括message，message_id，timestamp，type。 |
| message_id        | 消息唯一标识。                                                                       |
| signature_version | 签名的版本信息，目前是V1。                                                                |
| message           | 订阅用户取消订阅消息的描述。                                                                |
| unsubscribe_url   | 订阅用户取消订阅需要访问的URL。                                                             |
| signing_cert_url  | 用于消息签名的证书URL，不需要鉴权，可直接访问。                                                     |
| timestamp         | 消息第一次发送的时间戳。                                                                  |
   
HTTP(S)取消订阅用户消息样例如下：
```
{
    "message": "You have confirmed to be a subscriber. To cancel the confirmation, click unsubscribe_url within one year. Keep unsubscribe_url secure and do not disclose it to others.",
    "unsubscribe_url": "https://console.******.com/smn/v2/subscription-users/unsubscribe?ticket_data=******&region=******",
    "type": "HttpSubscriptionUserUnsubscribe",
    "message_id": "fb28c8e29af542dc80290a8e5b1b8d82",
    "signature": "nqVADIUhL50Rfe0ksFG3m30bmMnH1icZ4rrhYWHeD2NjrczQyBBl+JIijXpsCa0eBfbijPEJv73M2N1GU4P2gLkI8Q08JrZDxL8NU/b0rDhNfxIunqzWYgfcHl6JkiOU0EY2mkD1ReOXrFaYVS3CLuOiTOKmZsF5+LFz/H8B++uZ8qxOs5PV7mZB7vfCbl5fK/fN3FUN6lY8DW+Qk9sc1L/3784fDJDxdoHQPhraqJOeSwmtO1e+Z3iu4fpPZnsP3x08C3rFCJ+1dhJmlaweGzndXZIJORJm7VDTONTiMOG9E/9G8Wepo85ic+nRF67iHzPVGUoDXROXC8YSg65Zvw******",
    "signature_version": "v1",
    "signing_cert_url": "https://smn.region01.******.com/smn/SMN_region01_3190c26a56fb435f9882e3435b******.pem",
    "timestamp": "2026-01-01T00:00:00Z"
}
```
