# 快速入门
#### 操作场景
本节通过调用一系列SMN的API实现通过主题发布消息。
API的调用方法请参见[如何调用API](https://support.huaweicloud.com/api-smn/smn_api_30000.html)。
![](https://support.huaweicloud.com/api-smn/public_sys-resources/note_3.0-zh-cn.png)
通过IAM服务获取到的Token有效期为24小时，需要使用同一个Token鉴权时，可以先将Token缓存，避免频繁调用。
#### 涉及API
当您使用Token认证方式完成认证鉴权时，需要获取用户Token并在调用接口时增加"X-Auth-Token"到业务接口请求消息头中。
- IAM获取token的API
- SMN创建Topic的API
- SMN添加订阅的API
- SMN发送消息的API
 
#### 具体步骤
1. Token认证，具体操作请参考[认证鉴权](https://support.huaweicloud.com/api-smn/smn_api_33000.html)。
2. 创建Topic。发送"POST https://{SMN_Endpoint}/v2/{project_id}/notifications/topics"。
   1. 在Request Header中增加"X-Auth-Token"。
   
   2. 在Request Body中传入参数如下：
      ```
      {
          "name": "test_topic_v2", //Topic名称（必填String）
          "display_name": "test"  //显示名（非必填String）
      }
      ```
      请求响应成功后，返回request_id和topic_urn。
      如果请求失败，则会返回错误码及对应的错误信息说明，详细错误码信息请参考[错误码](https://support.huaweicloud.com/api-smn/ErrorCode.html)。
      
    
3. 添加订阅。发送"POST https://{SMN_Endpoint}/v2/{project_id}/notifications/topics/{topic_urn}/subscriptions"。 其中，topic_urn可在[2.b]的返回体中获取。
   1. 在Request Header中增加"X-Auth-Token"。
   
   2. 在Request Body中传入参数如下：
      ```
      {
          "protocol": "email", //订阅协议（必填String）
          "endpoint": "xxx@xx.com", //邮件地址（必填String）
          "remark": "订阅终端" //备注（非必填String）
      }
      ```
      请求响应成功后，返回request_id和subscription_urn。
      如果请求失败，则会返回错误码及对应的错误信息说明，详细错误码信息请参考[错误码](https://support.huaweicloud.com/api-smn/ErrorCode.html)。
      ![](https://support.huaweicloud.com/api-smn/public_sys-resources/note_3.0-zh-cn.png)
      可为Topic添加多种以及多个订阅终端，支持的订阅协议请参考[订阅](https://support.huaweicloud.com/api-smn/AddSubscription.html)。
      
   
   3. 订阅终端会收到一条确认订阅的消息，请在邮箱中进行确认订阅的操作。
    
4. 发送消息。发送"POST https://{SMN_Endpoint}/v2/{project_id}/notifications/topics/{topic_urn}/publish"。
   1. 在Request Header中增加"X-Auth-Token"。
   
   2. 在Request Body中传入参数如下：
      ```
      {
         "subject":"test message v2", //标题，邮件订阅终端使用（非必填String）
         "message": "Message test message v2." //需要发送的消息（必填String）
      }
      ```
      请求响应成功后，返回request_id和message_id。
      如果请求失败，则会返回错误码及对应的错误信息说明，详细错误码信息请参考[错误码](https://support.huaweicloud.com/api-smn/ErrorCode.html)。
      ![](https://support.huaweicloud.com/api-smn/public_sys-resources/note_3.0-zh-cn.png)
      已完成[3.c]中的确认订阅操作的订阅终端都能收到该消息，否则无法接收消息。
      
    
 
