华为云用户手册

  • 请求消息 请求参数 表2 Body参数 参数 类型 是否必填 说明 product_name string 是 系统中已经创建好的产品的产品名。 device_name string 是 系统中已经创建好的设备的设备名。 topics Array of topics objects 是 自定义Topic列表 表3 topics 参数 类型 是否必填 说明 topic_name string 是 自定义Topic的名称,支持英文大小写、数字、下划线和中划线,不超过64个字符。 topic_perm string 是 自定义Topic的权限,只支持pub或sub两种权限。 remark string 否 描述信息,不能超过200个字符。 请求示例 https://example.cloud.com/v1/80e2b******f4a398d6409a50932d917/link/instances/fb3b24ab-5d87-473d-9c57-fc6******6a1/topics { "product_name" : "product01", "device_name" : "device01", "topics" : [{"topic_name" : "alarm", "topic_perm" : "sub", "remark" : "alarm topic"}]}
  • 部署并发布数据API 调用“部署后端API”接口,部署数据后端并发布一个数据API,获取返回的前端数据API编号。 请求示例: POST /v2/{project_id}/apic/instances/{instance_id}/livedata-apis/{ld_api_id}/deploy{ "deploy_front_api" : true, "roma_app_id" : "xxxxxx" "auth_type" : "APP", "group_id" : "yyyyyy", "env_id" : "DEFAULT_ENVIRONMENT_RELEASE_ID", "method" : "GET", "path" : "/data/test", "protocol" : "HTTPS", "backend_timeout" : 5000, "cors": false} 其中加粗部分需要根据接口参数说明,替换为实际的数据值。{ld_api_id}为创建数据后端时获取并保存的后端API编号,xxxxxx为获取集成应用ID中获取并保存的集成应用ID,yyyyyy为获取API分组ID中获取并保存的API分组ID。 响应示例: { "id" : "5e19590f54444d8a9b8fe698ce26e9fe", "deploy_time" : "2020-09-19T06:58:13Z", "api_id" : "1d0432f1a********ae7bd96ca6", "env_id" : "DEFAULT_ENVIRONMENT_RELEASE_ID", ...} 响应消息中“api_id”的值即为前端数据API的编号,保存并留待后续步骤使用。 (可选)在发布数据API时无法为数据API添加请求参数,若需要为数据API添加请求参数,则调用“修改API”接口为数据API添加请求参数。 请求示例: PUT /v2/{project_id}/apic/instances/{instance_id}/apis/{api_id}{ "name": "Data_API", "type": 1, "req_protocol": "HTTPS", "req_method": "GET", "req_uri": "/data/test", "auth_type": "APP", "backend_type": "HTTP", "group_id": "c77f5e81d********ef2b0ac7600", "req_params": [ { "name": "param01", "type": "STRING", "location": "QUERY" } ],} 其中加粗部分需要根据接口参数说明,替换为实际的数据值。{api_id}为发布数据API时获取并保存的前端数据API编号,“req_protocol”、“req_method”、“req_uri”、“auth_type”、“group_id”需与发布数据API时设置的值保持一致。“parameters”下可根据实际需要设置多个后端请求参数,或不设置请求参数。
  • 为数据API绑定独立 域名 开放的API需要绑定独立域名,用户通过独立域名访问API。 调用“绑定域名”接口,为数据API绑定一个独立域名,并获取返回的域名编号。 请求示例: POST /v2/{project_id}/apic/instances/{instance_id}/api-groups/{group_id}/domains{ "url_domain" : "www.example.com"} 其中加粗部分需要根据接口参数说明,替换为实际的数据值。{group_id}为获取API分组ID中获取并保存的API分组ID。 响应示例: { "url_domain" : "www.example.com", "id" : "c5e0d5ba********ae22c1a17", "status" : 3, "min_ssl_version" : "TLSv1.1"} 响应消息中“id”的值即为域名编号,保存并留待后续步骤使用。 (可选)若部署并发布数据API时配置了使用HTTPS协议,则需要调用“绑定域名证书”接口为独立域名添加SSL证书。 请求示例: POST /v2/{project_id}/apic/instances/{instance_id}/api-groups/{group_id}/domains/{domain_id}/certificate{ "name" : "cert_demo", "private_key" : "-----Start certificate----********-----End certificate-----", "cert_content" : "-----Start RSA private key----- ********-----End RSA private key-----"} 其中加粗部分需要根据接口参数说明,替换为实际的数据值。{group_id}为获取API分组ID中获取并保存的API分组ID,{domain_id}为绑定独立域名时获取并保存的域名编号。
  • 获取集成应用ID 在ROMA Connect实例中创建的资源(如数据源、API等)都要归属到某个集成应用下,在创建资源前需要获取资源所归属的集成应用ID。 如果有可用的集成应用,则调用“查询应用列表”接口,获取集成应用ID。 请求示例: GET /v2/{project_id}/instances/{instance_id}/apps 其中加粗部分需要根据接口参数说明,替换为实际的数据值。 响应示例: { "total" : 1, "size" : 1, "apps" : [ { "id" : "b2e6b145********f4b8029f95a3", "name" : "AppName", "remark" : "example" } ], ...} 响应消息中“apps”的值为查询到的集成应用信息列表,找到要使用的集成应用,其中“id”的值即为集成应用ID,保存并留待后续步骤使用。 如果没有可用的集成应用,则调用“创建应用”接口,创建一个集成应用并获取集成应用ID。 请求示例: POST /v2/{project_id}/instances/{instance_id}/apps{ "name" : "AppName", "key" : "xxxxxx", "secret" : "******"} 其中加粗部分需要根据接口参数说明,替换为实际的数据值。 响应示例: { "id" : "b2e6b145********f4b8029f95a3", "name" : "AppName", "remark" : "example", ...} 响应消息中“id”的值即为集成应用ID,保存并留待后续步骤使用。
  • 接入数据源 调用“创建数据源”接口,接入需要开放数据的数据库,并获取返回的数据源ID。此处以MySQL数据库为例进行说明,其他类型数据库请参考接口的参数说明。 请求示例: POST /v2/{project_id}/fdi/instances/{instance_id}/datasources{ "datasource_name" : "fdi_ds_mysql", "datasource_type" : "MYSQL", "content" : { "host" : "10.10.10.10", "port" : "3306", "database_name" : "romatest", "user_name" : "romatest", "password" : "******", "mode" : "default" }, "app_id" : "xxxxxx", "description" : "test"} 其中加粗部分需要根据接口参数说明,替换为实际的数据值。xxxxxx为获取集成应用ID中获取并保存的集成应用ID。 响应示例: { "datasource_id" : "0fd3669d********ed3160ed051", "datasource_name" : "fdi_ds_api_v2", "datasource_type" : "API", ...} 响应消息中“datasource_id”的值即为数据源ID,保存并留待后续步骤使用。
  • 创建数据后端 通过创建数据后端,把要开放的数据库转换为API的后端服务。 调用“创建后端API”接口,创建一个自定义后端,并获取返回的后端API编号。 请求示例: POST /v2/{project_id}/apic/instances/{instance_id}/livedata-apis{ "name" : "data_api_demo", "path" : "/data/test", "method" : "GET", "roma_app_id" : "xxxxxx", "version" : "1.0", "content_type" : "json", "return_format" : false, "parameters" : [ { "name" : "param1", "in" : "Parameters", "required" : true } ]} 其中加粗部分需要根据接口参数说明,替换为实际的数据值。xxxxxx为获取集成应用ID中获取并保存的集成应用ID。“parameters”下可根据实际需要设置多个后端请求参数,或不设置请求参数。 响应示例: { "id" : "bd42841c********c6d8a06e37", "name" : "data_backend", "roma_app_id" : "98df09fb********2b55ca6f3d5d", "content_type" : "json", ...} 响应消息中“id”的值即为后端API编号,保存并留待后续步骤使用。 调用“创建后端API脚本”接口,配置数据后端。 请求示例: POST /v2/{project_id}/apic/instances/{instance_id}/livedata-apis/{ld_api_id}/scripts{ "api_type" : "data", "scripts" : [ { "ds_id" : "xxxxxx", "type" : "SQL", "object_name" : "data", "content" : "ZnVuY3Rpb24g******cmxkISIKfQ==" } ]} 其中加粗部分需要根据接口参数说明,替换为实际的数据值。{ld_api_id}为创建自定义后端时获取并保存的后端API编号,xxxxxx为接入数据源中获取并保存的数据源ID。
  • 获取API分组ID API分组是同一类业务API的集合,每个API都要归属到某个API分组下,在发布数据API前需要获取API所归属的API分组ID。 API只有在发布到环境后,才能被外部用户调用,在发布数据API前需要获取API要发布的环境ID。 如果有可用的API分组,则调用“查询分组列表”接口,获取分组ID。 请求示例: GET /v2/{project_id}/apic/instances/{instance_id}/api-groups 其中加粗部分需要根据接口参数说明,替换为实际的数据值。 响应示例: { "total" : 2, "size" : 2, "groups" : [ { "name" : "api_group_001", "id" : "c77f5e81d********ef2b0ac7600", "remark" : "group1", ... }, ... ] } 响应消息中“groups”的值为查询到的API分组列表,找到要使用的API分组,其中“id”的值即为API分组ID,保存并留待后续步骤使用。 如果没有可用的API分组,则调用“创建API分组”接口,创建一个API分组并获取分组ID。 请求示例: POST /v2/{project_id}/apic/instances/{instance_id}/api-groups{ "name" : "api_group_001", "version" : "V2", "roma_app_id" : "xxxxxx"} 其中加粗部分需要根据接口参数说明,替换为实际的数据值。xxxxxx为获取集成应用ID中获取并保存的集成应用ID。 响应示例: { "name" : "api_group_001", "id" : "c77f5e81d********ef2b0ac7600", "remark" : "group1", ...} 响应消息中“id”的值即为API分组ID,保存并留待后续步骤使用。
  • 获取数据API的调用信息 调用“查询API详情”接口,查看并保存API的调用信息,包括API的请求协议、请求方式、请求路径、访问域名、请求参数和认证方式。 请求示例: GET /v2/{project_id}/apic/instances/{instance_id}/apis/{api_id} 其中加粗部分需要根据接口参数说明,替换为实际的数据值。{api_id}为部署并发布数据API中获取并保存的前端数据API编号。 响应示例: { "name": "API_test", "type": 1, "version": "V1.0", "req_protocol": "HTTP", "req_method": "GET", "req_uri": "/api/demo", "auth_type": "APP", ... "domain_name": "www.example.com", ... "req_params": [], ...} 响应消息中,“req_protocol”为请求协议,“req_method”为请求方式,“req_uri”为请求路径,“domain_name”为访问域名,“req_params”为请求参数信息,“auth_type”为认证方式。 把API调用信息提供给其他用户,其他用户通过调用数据API,获取开放的业务数据。不同的API认证方式,调用数据API的操作有所不同,具体请参考调用开放的API。
  • 响应示例 状态码: 201 Created { "app_code" : "GjOD3g80AABuuFeEJpVQADBlAjBh3UzC7W+gr4VJBB5BtJ4fdVOQoSvoji3gFxUDb5pWBz9wUcw9+8/bFZ1B/4pq29wCMQC0pQWX6zTndljDEl99As1pw+WntAU9xcq+ffagoH6zDpKUvdxV6Ezj8LcCcPZN6BU=", "app_id" : "9ed8b7fe84224de681e7d7a5587e76dc", "id" : "32dc8ca22d1b4b9cb94022186880576b", "create_time" : "2020-07-24T02:37:24.835128293Z"} 状态码: 400 Bad Request { "error_code" : "APIG.2012", "error_msg" : "Invalid parameter value,parameterName:app_id. Please refer to the support documentation"} 状态码: 401 Unauthorized { "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed"} 状态码: 403 Forbidden { "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method"} 状态码: 404 Not Found { "error_code" : "APIG.3004", "error_msg" : "App 9ed8b7fe84224de681e7d7a5587e76dc does not exist"} 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error"}
  • 响应参数 状态码: 404 表3 响应Body参数 参数 参数类型 描述 error_code String 错误码。 最小长度:8 最大长度:36 error_msg String 错误描述。 最小长度:2 最大长度:512 状态码: 500 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码。 最小长度:8 最大长度:36 error_msg String 错误描述。 最小长度:2 最大长度:512
  • 公共资源权限 表1 公共资源权限 权限 对应API接口 授权项(Action) 依赖的授权项 IAM 项目 (Project) 企业项目 (Enterprise Project) 创建实例 - roma:instances:create vpc:vpcs:get vpc:vpcs:list vpc:ports:create vpc:ports:get vpc:ports:update vpc:securityGroups:get vpc:floatingIps:get vpc:publicIps:list vpc:floatingIps:update vpc:subnets:get vpc:securityGroupRules:get √ √ 更新实例 - roma:instances:update vpc:securityGroups:get vpc:publicIps:get vpc:floatingIps:update vpc:ports:update √ √ 删除实例 - roma:instances:delete - √ √ 查看实例列表 - roma:instances:list - √ √ 查看实例详情 - roma:instances:get - √ √ 创建应用 POST /v2/{project_id}/instances/{instance_id}/apps roma:applications:create - √ √ 更新应用 PUT /v2/{project_id}/instances/{instance_id}/apps/{app_id} roma:applications:update - √ √ 删除应用 DELETE /v2/{project_id}/instances/{instance_id}/apps/{app_id} roma:applications:delete - √ √ 应用用户管理 PUT /v2/{project_id}/instances/{instance_id}/apps/{app_id}/users roma:applications:user - √ √ 查看应用列表 GET /v2/{project_id}/instances/{instance_id}/apps roma:applications:list - √ √ 查看应用详情 GET /v2/{project_id}/instances/{instance_id}/apps/{app_id} roma:applications:get - √ √ 导入资产 POST /v2/{project_id}/instances/{instance_id}/assets/import roma:assets:import - √ √ 导出资产 POST /v2/{project_id}/instances/{instance_id}/assets/export roma:assets:export - √ √ 创建数据字典 POST /v2/{project_id}/instances/{instance_id}/dictionaries roma:dictionaries:create - √ √ 更新数据字典 PUT /v2/{project_id}/instances/{instance_id}/dictionaries/{dict_id} roma:dictionaries:update - √ √ 删除数据字典 DELETE /v2/{project_id}/instances/{instance_id}/dictionaries/{dict_id} roma:dictionaries:delete - √ √ 查看数据字典列表 GET /v2/{project_id}/instances/{instance_id}/dictionaries roma:dictionaries:list - √ √ 查看数据字典详情 GET /v2/{project_id}/instances/{instance_id}/dictionaries/{dict_id} roma:dictionaries:get - √ √ 父主题: 权限和授权项
  • 响应消息体 响应消息体通常以结构化格式(如JSON或XML)返回,与响应消息头中Content-type对应,传递除响应消息头之外的内容。 对于获取用户Token接口,返回如下消息体。为篇幅起见,这里只展示部分内容。 { "token": { "expires_at": "2019-02-13T06:52:13.855000Z", "methods": [ "password" ], "catalog": [ { "endpoints": [ { "region_id": "az-01",...... 当接口调用出错时,会返回错误码及错误信息说明,错误响应的Body体格式如下所示。 { "error_msg": "The format of message is error", "error_code": "AS.0001"} 其中,error_code表示错误码,error_msg表示错误描述信息。
  • 响应消息 响应参数 表3 响应参数 名称 类型 描述 clientId string 设备的客户端ID。 dataFormatTrans string 转发消息的数据传输格式。如果开启base64加密,则传输格式为base64/raw;如果不开启base64加密,则传输格式为json/raw。 deviceOid integer 设备ID。 instanceNo integer 数据源端实例的编号。 productOid integer 产品ID。 ruleOid integer 规则ID。 ruleSrcLevel integer 规则的级别,0为产品级,1为设备级。 ruleSrcOid integer 规则源ID。 topicName string 主题名。 响应示例 { "clientId": "D5695180f67c7200", "topicName": "7aANi9569518/out/ device01", "ruleSrcOid": 38, "ruleOid": 600004, "ruleSrcLevel": 1, "productOid": 569518, "deviceOid": 354769, "instanceNo": 1212, "dataFormatTrans": "json/raw"}
  • URI GET /v1/{project_id}/link/instances/{instance_id}/topics 表1 参数说明 参数 类型 是否必填 说明 project_id string 是 租户每个区域对应的项目ID。 instance_id string 是 租户使用ROMA Connect的实例ID。 device_name string 是 根据输入的设备名称查询。 product_name string 是 根据输入的产品名称查询。
  • 请求消息 请求参数 表2 Body参数 参数 类型 是否必填 说明 app_id string 否 应用ID,当系统中规则不存在,则该参数为必选。 rule_name string 是 系统中已经创建好的规则名称,如果规则不存在,默认创建该规则。 level string 是 规则的级别,产品级填‘product’,设备级填‘device’。 product_name string 是 系统中已经创建好的产品的产品名。 device_name string 否 系统中已经创建的设备名,当规则级别是产品级时,不用传设备名的参数。 topic string 否 设备对应的Topic的名称,只能使用pub权限的Topic,每个设备的Topic只能添加到一个规则下面,不能重复添加到不同的规则,当规则的级别是产品级时,不用传Topic的参数。 is_base64 boolean 是 转发的消息是否要进行base64编码,传入true会对消息进行base64编码。 contain_deviceinfo boolean 否 转发的消息是否要包含设备的信息,传入true会在原始消息的基础上增加额外设备的信息。 请求示例 https://example.cloud.com/v1/80e2b******f4a398d6409a50932d917/link/instances/fb3b24ab-5d87-473d-9c57-fc6******6a1/rules/sources { "app_id" : "app01", "rule_name" : "rule01", "product_name" : "product01", "device_name" : "device01", "topic" : "7aANi9569518/out/ device01", "is_base64" : false, "contain_deviceinfo" : false, "level" : "device"}
  • 请求消息 请求参数 表2 Body参数 名称 类型 是否必填 描述 app_id string 是 应用ID。 product_name string 是 需要创建产品的名称,输入参数不能为空,长度最大64,仅支持中文、英文字母、数字、下划线和中划线。 remark string 否 描述信息,不能超过200个字符。 请求示例 https://example.cloud.com/v1/80e2b******f4a398d6409a50932d917/link/instances/fb3b24ab-5d87-473d-9c57-fc6******6a1/products{"app_id" : "app01","product_name" : "product01","remark" : "this is a demo."}
  • 响应消息 响应参数 表3 响应参数 名称 类型 描述 password string 密码。 product_id integer 产品ID。 product_name string 产品名。 product_serial string 产品序列号。 remark string 描述信息,不能超过200个字符。 user_name string 用户名。 响应示例 { "product_id": 250, "product_name": "product01", "product_serial": "wbgfcYR6p250", "remark": "this is a demo.", "password": "*****************", "user_name": "8f9be623df1249429dcfead6c0d541d3"}
  • 数据集成权限 表1 数据集成权限 权限 对应API接口 授权项(Action) 依赖的授权项 IAM项目 (Project) 企业项目 (Enterprise Project) 创建任务 POST /v2/{project_id}/fdi/instances/{instance_id}/tasks roma:tasks:create - √ √ 更新任务 - roma:tasks:update - √ √ 删除任务 DELETE /v2/{project_id}/fdi/instances/{instance_id}/tasks/{task_id} roma:tasks:delete - √ √ 启动停止任务 POST /v2/{project_id}/fdi/instances/{instance_id}/batch-operation/tasks roma:tasks:operate - √ √ 查看任务列表 - roma:tasks:list - √ √ 查看任务详情 GET /v2/{project_id}/fdi/instances/{instance_id}/tasks/{task_id} roma:tasks:get - √ √ 创建连接器 - roma:connectors:create - √ √ 更新连接器 - roma:connectors:update - √ √ 删除连接器 - roma:connectors:delete - √ √ 发布连接器 - roma:connectors:release - √ √ 查看连接器列表 - roma:connectors:list - √ √ 查看连接器详情 - roma:connectors:get - √ √ 父主题: 权限和授权项
  • 方案实现 ROMA Connect支持通过控制台或API方式进行业务配置。本章节主要介绍如何调用ROMA Connect的业务API完成业务系统数据开放的配置,以指导开发者在进行业务系统开发时,如何集成ROMA Connect的业务功能。 调用业务API实现业务系统数据开放的流程如下: 获取集成应用ID。 如果有可用的集成应用,则调用“查询应用列表”接口,获取集成应用ID。 如果没有可用的集成应用,则调用“创建应用”接口,创建一个集成应用并获取集成应用ID。 接入数据源。 调用“创建数据源”接口,接入需要开放数据的数据库,并获取返回的数据源ID。 创建数据后端。 调用“创建后端API”接口,创建一个自定义后端,并获取返回的后端API编号。 调用“创建后端API脚本”接口,配置数据后端。 获取API分组ID。 如果有可用的API分组,则调用“查询分组列表”接口,获取分组ID。 如果没有可用的API分组,则调用“创建API分组”接口,创建一个API分组并获取分组ID。 部署并发布数据API。 调用“部署后端API”接口,部署数据后端并发布一个数据API,获取返回的前端数据API编号。 (可选)若需要为数据API添加请求参数,则需要调用“修改API”接口为数据API添加请求参数。 为数据API绑定独立域名。 调用“绑定域名”接口,为数据API绑定一个独立域名,并获取返回的域名编号。 (可选)若数据API使用HTTPS请求协议,则需要调用“绑定域名证书”接口为独立域名添加SSL证书。 获取数据API的调用信息。 调用“查询API详情”接口,查看并保存API的调用信息,包括API的请求协议、请求方式、请求路径、访问域名、请求参数和认证方式。 把API调用信息提供给其他用户,其他用户通过调用数据API,获取开放的业务数据。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 名称 描述 是否必选 示例 Content-Type 发送的实体的MIME类型。推荐用户默认使用application/json,有其他取值时会在具体接口中专门说明。 是 application/json X-Project-Id project id,项目编号。请参考获取项目ID章节获取项目编号。 否 如果是专属云场景采用AK/SK认证方式的接口请求或者多project场景采用AK/SK认证的接口请求,则该字段必选。 e9993fc787d**********aa340f9c0f4 X-Auth-Token 用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。 否 使用Token认证时该字段必选。 注:以下仅为Token示例片段 MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见AK/SK认证 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 POST https://iam.xxx.com/v3/auth/tokensContent-Type: application/json
  • 请求URI 请求URI由如下部分组成。 {URI-scheme}://{Endpoint}/{resource-path}?{query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 描述 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,具体请参考地区和终端节点获取。 resource-path 资源路径,也即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。多个查询参数之间使用“&”隔开。 例如您获取到某区域IAM的Endpoint(iam.xxx.com),并在获取用户Token接口的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 https://iam.xxx.com/v3/auth/tokens 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求消息体 请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,********为用户登录密码,xxxxxxxxxxxxxxxxxx为project的ID,获取方法请参见获取项目ID。 scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可以设置Token的作用域为某个账号下所有资源或账号的某个project下的资源,详细定义请参见获取用户Token接口。 POST https://iam.xxx.com/v3/auth/tokensContent-Type: application/json{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "id": "xxxxxxxxxxxxxxxxxx" } } }} 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://iam.xxx.com/v3/auth/tokens
  • 设备集成权限 表1 设备集成权限 权限 对应API接口 授权项(Action) 依赖的授权项 IAM项目 (Project) 企业项目 (Enterprise Project) 创建产品模板 POST /v2/{project_id}/link/instances/{instance_id}/product-templates roma:productTemplates:create - √ √ 更新产品模板 PUT /v2/{project_id}/link/instances/{instance_id}/product-templates/{product_template_id} roma:productTemplates:update - √ √ 删除产品模板 DELETE /v2/{project_id}/link/instances/{instance_id}/product-templates/{product_template_id} roma:productTemplates:delete - √ √ 父主题: 权限和授权项
  • 调用API获取项目ID 项目ID可以通过调用IAM的查询指定条件下的项目信息API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects/”,其中{Endpoint}为IAM的终端节点,可以从地区和终端节点获取。接口的认证鉴权请参见认证鉴权。 响应示例如下,其中projects下的“id”即为项目ID。 { "projects": [ { "domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false, "parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "xxxxxxxx", "description": "", "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99" }, "id": "a4a5d4098fb4474fa22cd05f897d6b99", "enabled": true } ], "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects" }}
  • 基本概念 账号 用户在云服务平台注册的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用他们进行日常管理工作。 用户 由账号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) 一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 企业项目 企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户指南》。 父主题: 使用前必读
  • 概述 ROMA Connect是一个全栈式的应用与 数据集成平台 ,提供消息、数据、API、设备等集成能力,简化企业上云,支持云上云下、跨区域集成,帮助企业实现数字化转型。 您可以使用本文档提供的API对ROMA Connect进行相关操作,如创建、删除、变更API、添加自定义后端等。支持的全部操作请参见API概览。 在调用ROMA Connect API之前,请确保已经充分了解ROMA Connect相关概念,详细信息请参见产品介绍。 父主题: 使用前必读
  • 请求消息 请求参数 表2 Body参数 参数 类型 是否必填 说明 rule_name string 是 系统中已经创建好的规则名称,如果规则不存在,默认创建该规则。 mqs_topic string 是 转发目的端的MQS的Topic名称。 connect_address string 是 MQS Broker的连接地址。 destination string 是 消息转发的目的端的类型,目前只支持ROMA_MQS,KAFKA。 mqs_sasl_ssl Boolean 否 转发的目的端MQS是否开启SSL,这里需要确认MQS是否启用了SSL。 user_name string 否 MQS启用SSL时,需要传入MQS的用户名,未启用SSL不需要传入该参数。 password string 否 MQS启用SSL时,需要传入MQS的密码,未启用SSL不需要传入该参数。 请求示例 https://example.cloud.com/v1/80e2b******f4a398d6409a50932d917/link/instances/fb3b24ab-5d87-473d-9c57-fc6******6a1/rules/destination { "rule_name" : "rule01", "mqs_topic" : "mqs-topic01", "connect_address" : "192.168.x.x:9093,192.168.0.x:9093,192.168.0.x:9093", "destination" : "ROMA_MQS", "mqs_sasl_ssl" : false}
  • 响应消息 响应参数 表3 响应参数 名称 类型 描述 destKey string 规则引擎目的端。 instanceId string 实例ID。 ruleDestOid integer 规则引擎目的端ID。 ruleOid integer 规则ID。 server string 连接地址。 sslPassword string SSL密码。 sslUser string SSL用户。 topicName string 主题名。 响应示例 { "ruleDestOid": 29, "ruleOid": 600071, "topicName": "topic02", "destKey": "ROMA_MQS", "instanceId": "8f3b9416-3f73-44e2-a32d-**********", "server": "192.168.0.x:9092,192.x.0.10:9092,192.168.0.x:9092", "sslUser": null, "sslPassword": "" }
  • 响应示例 状态码: 200 OK { "success" : [ { "id" : 711554, "device_name" : "success", "device_id" : 711554 } ], "failed" : [ { "id" : 711554, "device_name" : "failed", "device_id" : 711554 } ]} 状态码: 400 Bad Request { "error_code" : "SCB.00000000", "error_msg" : "Parameter is not valid for operation [romalink.link-device.forceDisconnect]. Parameter is [deviceDisconnectRequest]. Processor is [body].", "request_id" : "cb39e78a-afd3-4e04-901d-70468b1c23dc-1619602712496-cnnorth7a-P-romalink-service01"} 状态码: 404 Not Found { "error_code" : "ROMA.00110006", "error_msg" : "The resource does not exist. Check whether the resource ID 1 is correct.", "request_id" : "624c8be1-39b6-47b7-941d-c159aced368a-1619602544650-cnnorth7a-P-romalink-service01"} 状态码: 500 Internal Server Error { "error_code" : "ROMA.00110002", "error_msg" : "The instance does not exist. project_id: 397cd10b30544c588b2f4a56d83856c4, instance_id: f3bb386a-23ec-47aa-9943-4c60ac658611", "request_id" : "c8c06d0a-be92-4fdf-9d10-bc20131ab158-1619593104919-cnnorth7a-P-romalink-service01"}
共100000条
提示

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