华为云用户手册

  • Go语言 package demoimport ("bytes""crypto""crypto/rsa""crypto/x509""encoding/base64""encoding/json""encoding/pem""fmt""io/ioutil")type Message struct {Signature string `json:"signature"`Subject *string `json:"subject"`TopicUrn string `json:"topic_urn"`MessageId string `json:"message_id"`SignatureVersion string `json:"signature_version"`Type string `json:"type"`Message string `json:"message"`SubscribeUrl string `json:"subscribe_url"`UnsubscribeUrl string `json:"unsubscribe_url"`SigningCertUrl string `json:"signing_cert_url"`Timestamp string `json:"timestamp"`}func VerifyMessage(pemFile string, message string) bool {msg := Message{}err := json.Unmarshal([]byte(message), &msg)if err != nil {fmt.Println("Convert json to struct failed")return false}pemContent, err := ioutil.ReadFile(pemFile)if err != nil {fmt.Println("Read pem file failed")return false}certDerblock, _ := pem.Decode(pemContent)if certDerblock == nil {fmt.Println("Decode pem file failed")return false}cert, err := x509.ParseCertificate(certDerblock.Bytes)if err != nil {fmt.Println("Parse cert failed")return false}msgString := buildMessage(&msg)msgHash := crypto.SHA256.New()msgHash.Write([]byte(msgString))msgHashSum := msgHash.Sum(nil)decodeSign, _ := base64.StdEncoding.DecodeString(msg.Signature)publicKey := cert.PublicKey.(*rsa.PublicKey)err = rsa.VerifyPK CS 1v15(publicKey, crypto.SHA256, msgHashSum, decodeSign)if err != nil {fmt.Println("Verify failed")return false} else {fmt.Println("Verify success")return true}}func buildMessage(msg *Message) string {if msg.Type == "Notification" {return buildNotificationMessage(msg)} else if msg.Type == "SubscriptionConfirmation" || msg.Type == "UnsubscribeConfirmation" {return buildSubscriptionMessage(msg)}return ""}func buildNotificationMessage(msg *Message) string {buf := bytes.Buffer{}buf.WriteString("message\n" + msg.Message + "\n")buf.WriteString("message_id\n" + msg.MessageId + "\n")// msg中存在Subject字段不存在的场景,需要特殊处理if msg.Subject != nil {buf.WriteString("subject\n" + *msg.Subject + "\n")}buf.WriteString("timestamp\n" + msg.Timestamp + "\n")buf.WriteString("topic_urn\n" + msg.TopicUrn + "\n")buf.WriteString("type\n" + msg.Type + "\n")return buf.String()}func buildSubscriptionMessage(msg *Message) string {buf := bytes.Buffer{}buf.WriteString("message\n" + msg.Message + "\n")buf.WriteString("message_id\n" + msg.MessageId + "\n")buf.WriteString("subscribe_url\n" + msg.SubscribeUrl + "\n")buf.WriteString("timestamp\n" + msg.Timestamp + "\n")buf.WriteString("topic_urn\n" + msg.TopicUrn + "\n")buf.WriteString("type\n" + msg.Type + "\n")return buf.String()} 该示例代码已在go 1.15版本上测试通过。
  • 操作步骤 验证 SMN 发送的HTTP(S)请求的流程如下: SMN将根据您终端节点接收的HTTP消息,使用其中关键的键-值信息进行签名验证,具体的验证签名键信息请参考特定消息类型的签名键值信息。 通过HTTP消息中的signing_cert_url获取证书内容的地址,通过该地址获取证书内容,并且生成X509证书。 下载证书的链接始终是HTTPS请求,需要验证下载链接服务器的证书的真伪。 从X509证书中提取公钥,用于验证收到消息的可靠性和完整性。 确定消息类型。消息类型为键type对应的值,不同的消息类型对应不同的签名证书验证方式。 创建签名字符串。将消息中的键值对取出来,使其键值按字典序排序。每一个键占一行,每一个值占一行,键所对应的值在该键所占行的下一行。
  • 特定消息类型的签名键值信息 消息通知 消息通知必须包括以下键,如果subject为空,则不参与签名: messagemessage_idsubjecttimestamptopic_urntype 一个消息通知使用的签名键值信息示例如下: messageMy test messagemessage_id88c726942175432bac921eafd0036163subjectdemotimestamp2016-08-15T07:29:16Ztopic_urnurn:smn:regionId:74dc9e44d0cc4573adfce91cdfdd3ba9:xxxxtypeNotification 每一个键占一行,每一个值占一行,键所对应的值在该键所占行的下一行。 订阅确认和取消订阅 订阅确认和取消订阅的消息中必须包含以下键: messagemessage_idsubscribe_urltimestamptopic_urntype 一个订阅确认的消息简单示例如下所示: messageYou are invited to subscribe to topic: urn:smn:regionId:d91989905b8449b896f3a4f0ad57222d:demo. To confirm this subscription, please visit the following SubscribeURL in this message.message_iddef5c309cbff44d5a870787ed937edf8subscribe_urlhttps://ip地址/smn/subscription/confirm?region_id&token&topic_urn:demotimestamp2016-08-15T07:29:16Ztopic_urnurn:smn:regionId:d91989905b8449b896f3a4f0ad57222d:demotypeSubscriptionConfirmation 每一个键占一行,每一个值占一行,键所对应的值在该键所占行的下一行。
  • 授权操作与SMN接口的映射关系 表1 授权操作与SMN接口的映射关系 授权操作 接口名称 接口功能 SMN:UpdateTopic UpdateTopic 修改主题的属性,目前仅支持修改topic的display_name字段。 SMN:DeleteTopic DeleteTopic 删除一个主题以及它的所有订阅者。删除Topic操作可能会导致未推送的消息无法再推送给该Topic的订阅者。 SMN:QueryTopicDetail QueryTopicDetail 查询Topic的详细信息。 SMN:ListTopicAttributes ListTopicAttributes 查询Topic的属性信息。 SMN:UpdateTopicAttribute UpdateTopicAttribute 更新Topic的属性。 SMN:DeleteTopicAttributes DeleteTopicAttributes 删除所有Topic属性。 SMN:DeleteTopicAttributeByName DeleteTopicAttributeByName 删除指定名称的Topic属性。 SMN:ListSubscriptionsByTopic ListSubscriptionsByTopic 分页获取特定主题的订阅列表,订阅列表按照订阅创建时间进行升序排列。分页查询可以指定offset以及limit。如果指定主题不存在订阅者,返回空列表。 SMN:Subscribe Subscribe 为指定Topic添加一个订阅者,并向订阅者发送一个确认的消息。待订阅者进行ConfirmSubscription确认后,该订阅者才能收到Topic发布的消息。 SMN:Unsubscribe Unsubscribe 删除一个订阅,订阅需要鉴权才能删除,仅订阅者或者这个主题的拥有者可以删除,删除时会对身份进行确认。 SMN:Publish Publish 将消息发送给Topic的所有订阅端点。当返回消息ID时,该消息已被保存并开始尝试将其推送给主题的订阅者。消息格式,取决于该主题每一个订阅者的通知协议。 父主题: 附录
  • HTTP(S)取消订阅消息的格式 HTTP(S)订阅终端取消订阅确认后,终端将收到SMN推送的取消订阅确认消息,下面将描述HTTP Content信息,它是JSON串,具体字段说明如表4所示。 表4 HTTP(S)取消订阅消息的格式参数说明 参数 说明 type 消息类型,UnsubscribeConfirmation。 signature 签名信息。 签名字段包括message,message_id,subscribe_url、timestamp,topic_urn和type,具体签名信息校验,请参见校验消息签名。 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_******®ion=region01®ion_id=region01", "signing_cert_url": "https://smn.region01.******.com/smn/SMN_region01_3190c26a56fb435f9882e3435b******.pem", "timestamp": "2024-07-10T11:45:00Z"}
  • HTTP(S)推送消息的格式 HTTP(S)订阅终端订阅确认后,终端将收到SMN推送的消息,下面将描述HTTP Content信息,它是JSON串,具体字段说明如表3所示。 表3 HTTP(S)推送消息的格式参数说明 参数 说明 type 消息类型,Notification。 signature 签名信息。 签名字段包括message,message_id,subject, timestamp,topic_urn和type,具体签名信息校验,如果subject不存在,则不参与校验,请参见校验消息签名。 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®ion_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"}
  • 操作场景 接收SMN服务发送的HTTP(S)消息时,终端证书的CN名称请参考业界规范,部分特殊字符可能导致https消息发送失败。 在互联网上传递未加密的http协议消息内容存在信息泄漏风险,推荐用户终端添加订阅时对接通道优先使用https类型。 描述SMN服务向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 X-SMN-MESSAGE-ID 消息唯一标识。 X-SMN-TOPIC-URN 主题的唯一标识,表示消息归属的主题。 关于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所示。 表2 HTTP(S)订阅确认消息的格式参数说明 参数 说明 type 消息类型,SubscriptionConfirmation。 signature 签名信息。 签名字段包括message,message_id,subscribe_url,timestamp,topic_urn和type,具体签名信息校验,请参见校验消息签名。 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_******®ion=region01®ion_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"}
  • 操作场景 消息模板指消息的固定格式,发布消息时可以使用已创建的消息模板向订阅者发送消息。使用模板发送消息,发送时会自动替换模板变量为对应的参数值。 消息模板通过消息名称进行分组,消息名称下面可以根据不同的协议创建不同的模板。每个模板名称下面都必须要创建一个Default模板。当按照模板格式推送消息时,不同协议订阅者优先会选择模板名称下面对应的协议模板,如果对应的协议模板不存在,则采用默认Default的模板。如果没有预置的Default协议的模板,将不允许发送该模板。 当您需要发送模板格式的消息时,可参考本章节管理消息模板。
  • SMN自定义策略样例 示例1:授权用户创建主题 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "smn:topic:create" ] } ]} 示例2:拒绝用户删除主题 拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。 如果您给用户授予SMN FullAccess的系统策略,但不希望用户拥有SMN FullAccess中定义的删除主题权限,您可以创建一条拒绝删除主题的自定义策略,然后同时将SMN FullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对SMN执行除了删除主题外的所有操作。拒绝策略示例如下: { "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "smn:topic:delete" ] } ]} 示例3:多个授权项策略 一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是项目级服务或都是全局级服务。多个授权语句策略描述如下: { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "smn:topic:create", "smn:tag:create", "smn:application:create" ] }, { "Effect": "Allow", "Action": [ "elb:certificates:create", "elb:whitelists:create", "elb:pools:create", "elb:members:create", "elb:healthmonitors:create", "elb:l7policies:create", "elb:listeners:create", "elb:loadbalancers:create" ] } ]}
  • 操作场景 SMN的终端节点订阅主题且确认订阅后,终端节点才能够接收到向该主题发布的所有消息。当用户在多个区域均需要创建同样的订阅时,终端节点会多次收到确认订阅信息,且需要在每一条订阅消息内确认订阅。为防止这种场景下对终端节点的消息干扰,建议使用订阅用户功能,一次创建用户后即可导入其他区域的订阅。 订阅用户是提供跨区域统一管理订阅者信息的功能。订阅者可以先创建多个订阅用户,当主题需要添加订阅时,再将订阅用户批量添加到该主题上。 当前订阅用户数据仅支持存储在国内,且仅支持国内站点查询订阅用户数据。 当订阅者需要创建订阅用户时,可参考本章节。
  • 响应示例 状态码: 200 OK Offer列表 { "data" : [ { "offer_id" : "e49cc59d-48a7-46b2-bfea-************", "offer_code" : "Fconnector-****88ad1de6fc124c519e56************", "offer_name" : "offer1", "offer_description" : "", "create_time" : "2023-12-01T15:06:48Z", "offer_status" : "ON_BOARD" }, { "offer_id" : "fbf85846-3782-46dc-affb-************", "offer_code" : "Fconnector-****1fc857ef325a4a458042************", "offer_name" : "offer2", "offer_description" : "", "create_time" : "2023-11-29T10:19:53Z", "offer_status" : "ON_BOARD" } ], "total" : 2, "error_code" : null, "error_msg" : null}
  • URI GET /v1/{project_id}/eds/instances/{instance_id}/connectors/{connector_id}/offers 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 获取方法请参考获取项目ID。 instance_id 是 String 实例ID,开通的交换数据平台实例ID。 获取方法请参考获取实例ID。 connector_id 是 String 连接器ID,指定交换数据平台下连接器的ID。 获取方法请参考获取连接器ID。 表2 Query参数 参数 是否必选 参数类型 描述 offer_name 否 String offer名称。 offer_status 否 String offer状态(默认返回已上架offer): APPROVING: 审批中 APPROVE_REJECTED:审批拒绝 ON_BOARDING:上架中 ON_BOARD:已上架 ON_BOARD_FAILED:上架失败 OFF_BOARDING:下架中 OFF_BOARD:已下架 OFF_BOARD_FAILED:下架失败 枚举值: APPROVING APPROVE_REJECTED ON_BOARDING ON_BOARD ON_BOARD_FAILED OFF_BOARDING OFF_BOARD OFF_BOARD_FAILED offset 否 Integer 偏移量,表示从此偏移量开始查询,offset大于等于0。 最小值:0 最大值:999999 缺省值:0 limit 否 Integer 每页显示条目数量,最大数量999,超过999后只返回999(防止单页返回过大)。 最小值:1 最大值:999 缺省值:10
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 data Array of Offer objects 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。 表5 Offer 参数 参数类型 描述 offer_id String Offer ID。 offer_code String offer编码。 offer_name String offer名称。 offer_description String offer描述。 create_time String offer创建时间。 offer_status String offer状态: APPROVING: 审批中 APPROVE_REJECTED:审批拒绝 ON_BOARDING:上架中 ON_BOARD:已上架 ON_BOARD_FAILED:上架失败 OFF_BOARDING:下架中 OFF_BOARD:已下架 OFF_BOARD_FAILED:下架失败 枚举值: APPROVING APPROVE_REJECTED ON_BOARDING ON_BOARD ON_BOARD_FAILED OFF_BOARDING OFF_BOARD OFF_BOARD_FAILED 状态码: 400 表6 响应Body参数 参数 参数类型 描述 data Object 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。 状态码: 500 表7 响应Body参数 参数 参数类型 描述 data Object 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。
  • 响应示例 状态码: 200 OK 新增应用返回体。 { "data" : { "type" : "UNSTRUCTURED", "name" : "OBS-APP-TEST", "id" : "22c59dd8-12ef-4ead-94ff-************", "temp_id" : "335ac118-758e-4324-9d41-************", "temp_name" : "文档下载", "natives" : false, "operation" : [ "DOWNLOAD" ], "description" : "abc", "icon" : "icon: data:image/png;base64,iVBORw0KGgoAAAAN*** // ***代表省略的图标编码", "connection" : { "datasource_type" : "OBS", "connection" : null }, "create_user_id" : "test-***********", "create_user_name" : "test-***********", "create_date" : "2023-12-05T18:27:52Z" }, "total" : 1, "error_code" : null, "error_msg" : null}
  • 请求示例 新增应用。 POST https://{endpoint}/v1/{project_id}/eds/instances/{instance_id}/connectors/{connector_id}/applications{ "type" : "UNSTRUCTURED", "name" : "OBS-APP-TEST", "temp_id" : "335ac118-758e-4324-9d41-************", "icon" : "icon: data:image/png;base64,iVBORw0KGgoAAAAN*** // ***代表省略的图标编码", "description" : "test", "connection" : { "datasource_type" : "OBS", "connection" : { "obs_connection" : { "endpoint" : "obs.************.huawei.com", "bucket_name" : "obs-***", "access_key" : "QA**************", "secret_key" : "8X**************", "path" : "obs-test/folder1" } } }}
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token,通过调用 IAM 服务“获取用户Token”接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 type 是 String 应用模板类型: STRUCTURED:支持jdbc、csv下载 TRUSTED_ENV:支持可信环境下载 LOCAL_DOWN:支持本地下载 LUCKY_EXCEL:支持excel本地预览 UNSTRUCTURED:支持obs、sftp、ftp下载 PDF_JS:支持pdf本地预览 STRUCTURED_VIEW:支持csv jdbc本地预览 WPS:wps应用 IMAGE_VIEWER:本地图片查看 枚举值: STRUCTURED TRUSTED_ENV LOCAL_DOWN LUCKY_EXCEL UNSTRUCTURED PDF_JS STRUCTURED_VIEW WPS IMAGE_VIEWER name 是 String 应用名称。 temp_id 是 String 应用模板ID。 description 否 String 应用描述。 icon 否 String 应用图标。 connection 是 DataSourceConnect object 数据源连接信息。 表4 DataSourceConnect 参数 是否必选 参数类型 描述 datasource_type 否 String 数据源类型。 枚举值: OBS connection 否 DataSourceConnection object 数据源连接信息。 表5 DataSourceConnection 参数 是否必选 参数类型 描述 obs_connection 否 ObsConnection object OBS数据源连接信息。 表6 ObsConnection 参数 是否必选 参数类型 描述 endpoint 否 String OBS访问地址。 参数校验规则:最小长度1,最大长度1000,匹配 域名 正则表达式。 bucket_name 否 String OBS名称。 参数校验规则:最小长度1,最大长度100,匹配字母、数字、下划线、.及-。 access_key 否 String OBS永久访问密钥。 参数校验规则:最大长度1024。 secret_key 否 String OBS永久密钥。 参数校验规则:最大长度1024。 path 否 String OBS访问路径。 参数校验规则:最小长度1,最大长度100,只能包含英文字母、数字、下划线、中文、/、\及-。
  • 响应参数 状态码: 200 表7 响应Body参数 参数 参数类型 描述 data AppInfo object 新增应用返回体。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。 表8 AppInfo 参数 参数类型 描述 type String 实例化的应用类型: STRUCTURED:支持jdbc、csv下载 TRUSTED_ENV:支持可信环境下载 LOCAL_DOWN:支持本地下载 LUCKY_EXCEL:支持excel本地预览 UNSTRUCTURED:支持obs、sftp、ftp下载 PDF_JS:支持pdf本地预览 STRUCTURED_VIEW:支持csv jdbc本地预览 WPS:wps应用 IMAGE_VIEWER:本地图片查看 枚举值: STRUCTURED TRUSTED_ENV LOCAL_DOWN LUCKY_EXCEL UNSTRUCTURED PDF_JS STRUCTURED_VIEW WPS IMAGE_VIEWER name String 应用名称。 id String 应用ID。 temp_id String 应用模板ID。 temp_name String 应用模板名称。 natives Boolean 是否内置应用 true:内置 false:自创 operation Array of strings 应用操作。 枚举值: VIEW PRO CES S DOWNLOAD description String 应用描述。 icon String 应用图标。 connection DataSourceConnect object 应用连接信息。 create_user_id String 创建人ID。 create_user_name String 创建人名称。 create_date String 创建时间。 表9 DataSourceConnect 参数 参数类型 描述 datasource_type String 数据源类型。 枚举值: OBS connection DataSourceConnection object 数据源连接信息。 表10 DataSourceConnection 参数 参数类型 描述 obs_connection ObsConnection object OBS数据源连接信息。 表11 ObsConnection 参数 参数类型 描述 endpoint String OBS访问地址。 参数校验规则:最小长度1,最大长度1000,匹配域名正则表达式。 bucket_name String OBS名称。 参数校验规则:最小长度1,最大长度100,匹配字母、数字、下划线、.及-。 access_key String OBS永久访问密钥。 参数校验规则:最大长度1024。 secret_key String OBS永久密钥。 参数校验规则:最大长度1024。 path String OBS访问路径。 参数校验规则:最小长度1,最大长度100,只能包含英文字母、数字、下划线、中文、/、\及-。 状态码: 400 表12 响应Body参数 参数 参数类型 描述 data Object 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。 状态码: 500 表13 响应Body参数 参数 参数类型 描述 data Object 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。
  • URI POST /v1/{project_id}/eds/instances/{instance_id}/connectors/{connector_id}/applications 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 获取方法请参考获取项目ID。 instance_id 是 String 实例ID,开通的交换数据平台实例ID。 获取方法请参考获取实例ID。 connector_id 是 String 连接器ID,指定交换数据平台下连接器的ID。 获取方法请参考获取连接器ID。
  • 请求示例 归档接收的合约数据。 PUT https://{endpoint}/v1/{project_id}/eds/instances/{instance_id}/connectors/{connector_id}/contracts/received-data-resources{ "data_packet_ids" : [ "44d2f35e-0371-433f-b5b6-************" ], "new_folder_id" : "ROOT"}
  • 响应示例 状态码: 200 OK 归档返回结果。 { "data" : [ { "data_packet_id" : "44d2f35e-0371-433f-b5b6-************", "data_resource_ids" : [ "323daf49-15ee-4ad2-b6f0-************" ] } ], "total" : 1, "error_code" : null, "error_msg" : null}
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 data Array of DataPackageResourceResponse objects 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。 表5 DataPackageResourceResponse 参数 参数类型 描述 data_packet_id String 数据包ID。 data_resource_ids Array of strings 资源ID。 状态码: 400 表6 响应Body参数 参数 参数类型 描述 data Object 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。 状态码: 500 表7 响应Body参数 参数 参数类型 描述 data Object 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。
  • URI PUT /v1/{project_id}/eds/instances/{instance_id}/connectors/{connector_id}/contracts/received-data-resources 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 获取方法请参考获取项目ID。 instance_id 是 String 实例ID,开通的交换数据平台实例ID。 获取方法请参考获取实例ID。 connector_id 是 String 连接器ID,指定交换数据平台下连接器的ID。 获取方法请参考获取连接器ID。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用IAM服务“获取用户Token”接口获取(响应消息头中X-Subject-Token的值)。 最小长度:1 最大长度:100000 x-eds-proxy-userid 否 String 如果X-Auth-Token是租户ID,那么x-eds-proxy-userid填写实际被代理的真实用户ID。 最小长度:0 最大长度:100000 表3 请求Body参数 参数 是否必选 参数类型 描述 data_packet_ids 是 Array of strings 数据包ID。 当前只允许同时归档一条数据。 new_folder_id 是 String 新的目录ID。
  • URI POST /v1/{project_id}/eds/instances/{instance_id}/connectors/{connector_id}/transfer 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 获取方法请参考获取项目ID。 instance_id 是 String 实例ID,开通的交换数据平台实例ID。 获取方法请参考获取实例ID。 connector_id 是 String 连接器ID,指定交换数据平台下连接器的ID。 获取方法请参考获取连接器ID。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 data String 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。 状态码: 400 表5 响应Body参数 参数 参数类型 描述 data Object 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。 状态码: 500 表6 响应Body参数 参数 参数类型 描述 data Object 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。
  • 响应示例 状态码: 200 OK 连接器列表。 { "data" : [ { "connector_id" : "b40b0d94-3201-4687-93aa-************", "connector_name" : "连接器A", "create_user_name" : "pa*******135", "create_user_id" : "0574************", "connector_owner_name" : "pa*******135", "connector_owner_Id" : "0574************", "protocol_signed" : true }, { "connector_id" : "c1bf9bd7-52fc-435b-ae55-************", "connector_name" : "连接器B", "create_user_name" : "pa*******135", "create_user_id" : "0574************", "connector_owner_name" : "pa*******135", "connector_owner_Id" : "0574************", "protocol_signed" : true } ], "total" : 2, "error_code" : null, "error_msg" : null}
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 data Array of ConnectorInfo objects 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。 表5 ConnectorInfo 参数 参数类型 描述 connector_id String 连接器ID。 connector_name String 连接器名称。 create_user_name String 连接器创建人名称。 create_user_id String 连接器创建人ID。 connector_owner_name String 连接器管理员名称。 connector_owner_Id String 连接器管理员ID。 protocol_signed Boolean 签署ids协议标识。 状态码: 400 表6 响应Body参数 参数 参数类型 描述 data Object 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。 状态码: 500 表7 响应Body参数 参数 参数类型 描述 data Object 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。
  • URI GET /v1/{project_id}/eds/instances/{instance_id}/connectors/user-connectors 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 获取方法请参考获取项目ID。 instance_id 是 String 实例ID,开通的交换数据平台实例ID。 获取方法请参考获取实例ID。 表2 Query参数 参数 是否必选 参数类型 描述 offset 否 Integer 偏移量,表示从此偏移量开始查询,offset大于等于0。 最小值:0 最大值:999999 缺省值:0 limit 否 Integer 每页显示条目数量,最大数量999,超过999后只返回999(防止单页返回过大)。 最小值:1 最大值:999 缺省值:10
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 data Array of TeamInfo objects 团队详情。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。 表5 TeamInfo 参数 参数类型 描述 team_id String 团队ID。 team_name String 团队名称。 状态码: 400 表6 响应Body参数 参数 参数类型 描述 data Object 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。 状态码: 500 表7 响应Body参数 参数 参数类型 描述 data Object 返回数据。 total Long 总数。 error_code String 错误码。 error_msg String 错误描述。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全