华为云用户手册

  • 请求示例 创建组织,组织名子部门,组织编码1000001,父组织编码20210623103509267-6ABA-201FFC...,组织类型部门。 POST https://{domain_name}/api/v2/tenant/organizations Authorization: Bearer 334963fc-1e4a-473b-9096-52a929140... { "code": "1000001", "name": "子部门", "parent_id": "20210623103509267-6ABA-201FFC...", "category": "department" }
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 Authorization 是 String 认证凭据,值:Bearer {access_token},access_token通过“获取访问凭据”接口获取。 表2 请求Body参数 参数 是否必选 参数类型 描述 code 是 String 组织编码,可输入中英文、数字、下划线和中划线。 最大长度:64 name 是 String 组织名称,所在层级下唯一,可输入中英文、数字、空格、中划线、下划线和&。 最大长度:100 parent_id 否 String 父组织id。创建父组织,不需要传递;创建子组织,需要传递。 category 否 String 组织类型。 缺省值:department:部门 枚举值: department:部门 company:公司 unit:科 group:组
  • 请求示例 获取OAuth2.0授权码。授权类型为固定值code,配置应用注册时生成的clientId,成功授权后的回调地址为https://example.com,授权范围为固定值get_user_info。 GET https://{domain_name}/api/v1/oauth2/authorize?response_type=code&client_id=NzZeWuiJa91dPSRdZQChMazIh13AW...&redirect_uri=https://example.com&scope=get_user_info&state=test
  • URI GET /api/v1/oauth2/authorize 表1 Query参数 参数 是否必选 参数类型 描述 response_type 是 String 授权类型,固定值:code。 client_id 是 String 应用标识,注册应用后,分配的ClientId。 scope 否 String 授权范围 ,固定值:get_user_info。 redirect_uri 否 String 成功授权后的回调地址,地址可以是注册应用时填写的回调地址,也可以是注册应用时填写的回调地址的 域名 ,建议配置为应用的首页或者应用的用户中心。注意需要对uri进行URLEncode处理。 state 否 String 应用的状态值。可用于防止 CS RF攻击,成功授权后回调应用时会原样带回,应用用它校验认证请求与回调请求的对应关系。可以包含字母和数字。
  • 请求示例 根据应用id删除应用侧角色成员,应用侧角色id为20220420144449385-C66D-E8C1D1D79,应用账号id集合为["20220415171558023-84A4-ED5C390B8", "20220414163425614-2FD6-CA9B208BE"]。 DELETE https://{domain_name}/api/v2/tenant/applications/{application_id}/role-member Authorization: Bearer 334963fc-1e4a-473b-9096-52a929140... { "role_id": "20220420144449385-C66D-E8C1D1D79", "account_Ids": [ "20220415171558023-84A4-ED5C390B8", "20220414163425614-2FD6-CA9B208BE" ] }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 Authorization 是 String 认证凭据,值:Bearer {access_token},access_token通过“获取访问凭据”接口获取。 表3 请求Body参数 参数 是否必选 参数类型 描述 role_id 是 String 角色id。 account_Ids 是 Array of strings 应用账号id集合,最大50条。
  • 请求示例 获取凭据,根据应用的clientid以及clientsecret获取接口鉴权token。 POST https://{domain_name}/api/v2/tenant/token Content-Type: application/x-www-form-urlencoded client_id=ONtQq2igSggfFClyGgzmuXR8ubWEP...& client_secret=XdqUmJpG19hNEHz3472XsPcwvfe...& grant_type=client_credentials
  • 响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 access_token String 认证凭据,用于调用管理API。 token_type String 认证凭据类型。固定值:Bearer。 expires_in Integer 过期时间。单位为秒,默认1800s。 scope String 获取的Access Token授权访问范围。 id_token String 授权访问id_token。 状态码: 400 表3 响应Body参数 参数 参数类型 描述 error_code String 错误编号。 error_msg String 错误详情。
  • 请求示例 用户授权应用账号,在应用application_id中创建名为Test01的应用账号。 POST https://{domain_name}/api/v2/tenant/users/{user_id}/applications/{application_id}/accounts Authorization: Bearer 334963fc-1e4a-473b-9096-52a929140... { "account_name":"Test01" }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 Authorization 是 String 认证凭据,值:Bearer {access_token},access_token通过“获取访问凭据”接口获取。 表3 请求Body参数 参数 是否必选 参数类型 描述 account_name 否 String 对用户授权应用,在应用中创建的应用账号名,可选参数,为空默认为用户名。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 Authorization 是 String 认证凭据,值:Bearer {access_token},access_token通过“获取访问凭据”接口获取。 表3 请求Body参数 参数 是否必选 参数类型 描述 code 否 String 组织编码,组织编码为空时默认不修改,可输入中英文、数字、下划线和中划线。 最大长度:64 name 否 String 组织名称,组织名称为空时默认不修改,可输入中英文、数字、空格、中划线、下划线和&。 最大长度:100 parent_id 否 String 父组织id。 category 否 String 组织类型。 缺省值:department:部门 枚举值: department:部门 company:公司 unit:科 group:组
  • 请求示例 修改组织信息,组织编码为TestOrg,组织名为测试机构,父组织为根组织,组织类型为部门。 PUT https://{domain_name}/api/v2/tenant/organizations/{org_id} Authorization: Bearer 334963fc-1e4a-473b-9096-52a929140... { "code": "TestOrg", "name": "测试机构", "parent_id": "", "category": "department" }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 Authorization 是 String 认证凭据,值:Bearer {access_token},access_token通过“获取访问凭据”接口获取。 表3 请求Body参数 参数 是否必选 参数类型 描述 password 是 String 新密码。 old_password 是 String 原密码。
  • 请求示例 校验原密码修改用户密码。 PUT https://{domain_name}/api/v2/tenant/users/{user_id}/change-password-verify Authorization: Bearer 334963fc-1e4a-473b-9096-52a929140... { "password":"N******8", "old_password":"O******4" }
  • 请求示例 根据应用id和机构id修改机构属性,名称为开发组,父机构id为20201027162527852-B712-D040F4...。 PUT https://{domain_name}/api/v2/tenant/applications/{application_id}/organizations/{org_id} Authorization: Bearer 334963fc-1e4a-473b-9096-52a929140... { "name":"开发组", "parent_id":"20201027162527852-B712-D040F4..." }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 Authorization 是 String 认证凭据,值:Bearer {access_token},access_token通过“获取访问凭据”接口获取。 表3 请求Body参数 参数 是否必选 参数类型 描述 name 否 String 机构名称,为空时默认不修改,可输入中英文、数字、空格、中划线、下划线和&。 最大长度:100 parent_id 否 String 父机构id。
  • 请求示例 创建指定应用的应用账号并关联指定用户,账号名为zhangshan,账号名称为zs,关联用户的user_id为20220331164602949-904C-D475B60AE,应用账号为启用状态。 POST https://{domain_name}/api/v2/tenant/applications/{application_id}/accounts/basic-account Authorization: Bearer 334963fc-1e4a-473b-9096-52a929140... { "account_name":"zhangsan", "user_id":"20220331164602949-904C-D475B60AE", "name":"zs", "org_code":"", "password":"", "disabled":false, "extension":{} }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 Authorization 是 String 认证凭据,值:Bearer {access_token},access_token通过“获取访问凭据”接口获取。 表3 请求Body参数 参数 是否必选 参数类型 描述 user_id 是 String 应用账号关联的授权用户id。 account_name 否 String 应用账号名,为空默认为用户名。 name 否 String 应用账号名称。 org_code 否 String 应用机构编码。 password 否 String 应用账号密码。 disabled 否 Boolean 应用账号是否禁用,为空默认为非禁用。 extension 否 Object 自定义扩展属性,需要在应用“对象模型”—“应用账号模型”自定义。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 Authorization 是 String 认证凭据,值:Bearer {access_token},access_token通过“获取访问凭据”接口获取。 表3 请求Body参数 参数 是否必选 参数类型 描述 offset 是 Integer 第几页。 最小值:0 limit 是 Integer 每页多少条。 最小值:10 最大值:100
  • 请求示例 根据应用id和角色id分页查询应用侧角色成员列表,返回查询结果前10条数据,如不满10条,则返回实际数量的结果。 GET https://{domain_name}/api/v2/tenant/applications/{application_id}/role-member-list/{role_id} Authorization: Bearer 334963fc-1e4a-473b-9096-52a929140... { "offset": "0", "limit": "10", }
  • 响应示例 状态码: 200 请求成功。 { "total" : 1, "offset" : 0, "limit" : 10, "role_members" : [ { "id" : "20220210090626329-AFAE-EB2862B3A", "account_name" : "adminAcc", "account_type" : "1", "name" : "管理员", "org_id" : "20220210135202250-92C8-D89EC88C6", "disabled" : false, "extension" : null } ] }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 total Integer 总数 offset Integer 第几页 limit Integer 每页多少条 role_members Array of RoleMemberInfo objects 角色成员信息集合 表5 RoleMemberInfo 参数 参数类型 描述 id String 应用账号id account_name String 应用账号名 name String 应用账号名称 org_id String 应用机构id disabled Boolean 是否禁用 account_type String 应用账号类型 extension Object 自定义扩展属性 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误编号。 error_msg String 错误详情。
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 X-operating-sys-version 是 String 调用方操作系统版本,该参数只用来记录日志,不做校验。例如:Android 10。 X-device-fingerprint 是 String 调用方设备指纹,该参数只用来记录日志,不做校验。例如:156aysdna213sc50。 X-device-ip 否 String 调用方IP,该参数只用来记录日志,不做校验。例如:10.10.10.1。 X-agent 是 String 用户Agent信息,该参数只用来记录日志,例如:Mozilla/5.0 (Linux; Android 10; Redmi K30 Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.99 Mobile Safari/537.36。 X-L 否 String 用于国际化语言设置,支持中文和英文。例如:zh。 X-client-id 是 String 应用标识,注册应用后分配的ClientId。该值可参考通用信息获取。 X-tenant-id 否 String 租户id,ISV应用调用则为必填,需要将{domain_name}换成ISV通用域名{common_domain},请求Header参数中需要指定对应租户的tenant_id,并将X-client-id换成ISV应用模板的client_id。 说明: 此参数只用于ISV应用,当前该应用暂未开放,若需要,请提交工单申请开通。 表2 请求Body参数 参数 是否必选 参数类型 描述 mobile 是 String 手机号,只能由数字组成,且长度为11位。 type 是 String 短信发送的场景,该参数用来设置在以下哪种场景下收到验证码。 枚举值: REGISTER_ SMS :注册短信 LOG IN_SMS:登录短信 FORGET_PWD_SMS:找回密码短信 BIND_MOBILE_SMS:绑定短信 UPDATE_MOBILE_SMS:修改手机号短信 OTP_REST_SMS:二次认证短信 captcha_token 是 String 图形验证码校验通过的凭证。该参数获取方式参考校验图形验证码。
  • 请求示例 发送短信验证码,给指定手机号12345678901用于绑定手机号,图形验证码校验通过凭证为71d******635---{"x":237.0,"y":5.0}。 POST https://{domain_name}/api/v2/sdk/sms/send X-operating-sys-version: Android 10 X-device-fingerprint: 156aysdna213sac X-device-ip: 10.10.10.1 X-agent: Mozilla/5.0 (Linux; Android 10; Redmi K30 Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.99 Mobile Safari/537.36 X-L: zh X-client-id: DRrYIqauawN0I8myTMoDTPys6ezGZxnm X-tenant-id: 08f770f51f80d2f40f38c00cb199fd21 { "mobile": "12345678901", "type": "BIND_MOBILE_SMS", "captcha_token": "71d******635---{\"x\":237.0,\"y\":5.0}" }
  • 业务场景说明 自建MQTT Broker基于MQTT协议的上行数据和下行指令的业务定义如下: 表1 业务场景 业务场景 通信Topic 报文Payload 设备上报数据 /aircondition/data/up { "temperature": 26.0 } 服务端控制指令 /aircondition/cmd { "switch": "off" } 设备使用一机一密的认证方式。 设备通过Topic上报数据,通过消息流转功能将数据转发到后端服务。 服务端通过消息下发接口下发消息给设备。
  • 2.设备端域名切换 完成平台端配置后,需要进行设备端业务开发。完整的设备开发流程可参考设备侧开发。本章节以Paho-MQTT开源MQTT客户端为例,介绍在设备迁移场景下,设备侧如何在只修改接入地址的情况下,实现设备建立MQTT连接、Topc订阅、消息发布等功能。 //接入华为云IoT的域名,在控制台的"总览"界面的"平台接入地址"中获取“设备侧”的MQ TTS 接入地址。 String server = "ssl://******.st1.iotda-device.cn-north-4.myhuaweicloud.com:8883"; // Paho MQTT客户端。 MqttClient myMqttClient = new MqttClient(server, "myClientId", persistence); // Paho MQTT连接参数。 MqttConnectOptions connOpts = new MqttConnectOptions(); connOpts.setCleanSession(true); connOpts.setKeepAliveInterval(120); connOpts.setUserName("myUserName"); connOpts.setPassword("myPassword".toCharArray()); myMqttClient.connect(connOpts); System.out.println("Broker: " + broker + " Connected"); // Paho MQTT消息订阅。 myMqttClient.subscribe("/aircondition/cmd", new MyMessageListener()); // Paho MQTT发布消息。 String topic = "/aircondition/data/up"; String content = "{\"temperature\": 26.0 }"; MqttMessage message = new MqttMessage(content.getBytes()); message.setQos(0); myMqttClient.publish(topic, message);
  • 模拟数据上报及结果验证 使用MQTT模拟器连接到平台(模拟器使用请参考:使用MQTT.fx调测)。 使用模拟器进行消息上报,详情请参考:设备消息上报。 上报内容如下: { "age": "34", "profession": "blue-collar", "maritalStatus": "single", "educationalStatus": "tertiary", "realEstateSituation": "no", "loanStatus": "tertiary" } 查看HTTP服务器是否收到预测结果。 图17 查看消息
  • 前提条件 已注册华为官方账号。未注册可参考注册华为账户完成注册。 已完成实名制认证。未完成可在华为云上单击实名认证完成认证,否则会影响后续云服务的开通。 已开通 设备接入服务 。未开通则访问设备接入服务,单击“免费试用”或单击“价格计算器”购买并开通该服务。 已开通FunctionGraph服务。未开通则访问FunctionGraph服务,单击“立即使用”后开通该服务。 已开通ModelArts服务。未开通则访问 AI开发平台 ,单击“控制台”后进入该服务。 自建一个HTTP服务器,并提供POST接口用来接收推送的数据(本示例默认已经提供好相应的服务器与接口,不再展示如何搭建HTTP服务器指导)。
  • 示例场景 在本示例中,我们实现以下场景: 设备上报银行客户特征信息, 物联网平台 将数据转发至FunctionGraph,由FunctionGraph转发至ModelArts进行AI分析,最终将分析的结果转发至HTTP服务器中。 操作步骤如下: 创建并发布ModelArts模型。 配置FunctionGraph函数。 创建MQTT协议产品,并创建设备。 数据转发规则配置,将数据流转至FunctionGraph。 模拟数据上报及结果验证,查看HTTP服务器是否收到AI分析后的消息。 图1 场景说明
  • 概述 在物联网解决方案中,针对庞大的数据进行自动学习时,需要对海量数据进行标注、训练,按照传统的方式进行标注、训练不仅耗时耗力,而且对资源消耗也非常巨大。华为云物联网平台可以通过规则引擎,将获取的海量数据流转到华为云其他云服务,从而实现将海量数据通过 函数工作流 (FunctionGraph)进行预处理,再将清洗后的数据流入AI开发平台(ModelArts)进行AI分析,并将分析结果统一转发至HTTP服务器中。
共100000条