更新验证码应用

PUT
https://api.itniotech.com/otp/app/update/{appId}
通过接口更新验证码应用信息。
 
Url-请求参数
参数 说明 是否必填 类型
appId 应用id,新增时返回 String
 
Body-请求参数
请求参数
参数 说明 是否必填 类型
name 应用名称,4-32字符,不允许重复 String
codeExpiry 发送的验证码的有效期时长,1-60分钟,可选整数值,默认5分钟 Int
appId 应用id,新增时返回 String
periodTotalSendLimit 周期内发送的数量限制 JSONObject
enabled 启用开关,默认关闭 Boolean
unit 周期单位:1-day,2-hour,3-minute,4-second,enabled为开启时,此参数变为必填 Int
period 周期1-90,enabled为开启时,此参数变为必填 Int
limit 限制1-100亿,enabled为开启时,此参数变为必填 Int
periodPhoneSendLimit 周期内向同号码发送的频繁限制 JSONObject
enabled 启用开关,默认关闭 Boolean
unit 周期单位:1-day,2-hour,3-minute,4-second,enabled为开启时,此参数变为必填 Int
period 周期1-90,enabled为开启时,此参数变为必填 Int
limit 限制1-100亿,enabled为开启时,此参数变为必填 Int
 
请求示例
Request URL:
    https://api.itniotech.com/otp/app/update/mRELxtHc
Request Method:
    PUT
Request Headers:
    Content-Type: application/json;charset=UTF-8
    Sign: 05d7a50893e22a5c4bb3216ae3396c7c
    Timestamp: 1630468800
    Api-Key: bDqJFiq9
Request Body:
{
    "name":"test_app",
    "codeExpiry":5,
    "periodTotalSendLimit":{
        "enabled":true,
        "unit":1,
        "period":1,
        "limit":1
    },
    "periodPhoneSendLimit":{
        "enabled":false,
        "unit":null,
        "period":null,
        "limit":null
    }
}
 
响应参数
参数 说明 类型
status 状态码,0成功,其他失败参见响应状态码说明 String
reason 失败原因说明 String
data 响应参数详情 JSONObject
name 应用名称 String
codeExpiry 发送的验证码的有效期时长 Int
appId 应用id String
createTime 创建时间 String
periodTotalSendLimit 周期内发送的数量限制详情 JSONObject
unit 周期单位 Int
period 周期 Int
limit 限制 Int
enabled 启用开关 Boolean
periodPhoneSendLimit 周期内向同号码发送的频繁限制详情 JSONObject
unit 周期单位 Int
period 周期 Int
limit 限制 Int
enabled 启用开关 Boolean
 
响应状态码
status 状态说明
0 成功
-1 账号认证异常
-2 ip限制
-16 时间戳过期
-18 系统异常
-20 数据已存在
-22 参数异常
 

LANGUAGE

Java

PHP

REQUEST

import cn.hutool.crypto.SecureUtil;
 import cn.hutool.http.Header;
 import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.json.JSONUtil;

 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;

private void updateOtpApp() {
    final String baseUrl = "https://api.itniotech.com/otp";
    final String apiKey = "your api key";
    final String apiPwd = "your api secret";
    final String appId = "your appid"; //Application ID

    final String url = baseUrl.concat("/app/update/").concat(appId);
    final String name = "name";
    final Map periodTotalSendLimit = new HashMap<>();
    periodTotalSendLimit.put("enabled", true);
    periodTotalSendLimit.put("unit", 1);
    periodTotalSendLimit.put("period", 1);
    periodTotalSendLimit.put("limit", 1);
    final Map periodPhoneSendLimit = new HashMap<>();
    periodTotalSendLimit.put("enabled", true);
    periodTotalSendLimit.put("unit", 1);
    periodTotalSendLimit.put("period", 1);
    periodTotalSendLimit.put("limit", 1);
    final Integer codeExpiry = 5;

    HttpRequest request = HttpRequest.put(url);

    // currentTime
    final String datetime = String.valueOf(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond());
    // generate md5 key
    final String sign = SecureUtil.md5(apiKey.concat(apiPwd).concat(datetime));
    request.header(Header.CONNECTION, "Keep-Alive")
            .header(Header.CONTENT_TYPE, "application/json;charset=UTF-8")
            .header("Sign", sign)
            .header("Timestamp", datetime)
            .header("Api-Key", apiKey);

    final String params = JSONUtil.createObj()
            .set("name", name)
            .set("appId", appId)
            .set("periodTotalSendLimit", periodTotalSendLimit)
            .set("periodPhoneSendLimit", periodPhoneSendLimit)
            .set("codeExpiry", codeExpiry)
            .toString();
    HttpResponse response = request.body(params).execute();
    if (response.isOk()) {
        String result = response.body();
        System.out.println(result);
    }
} 

REQUEST

header('content-type:text/html;charset=utf8');

$apiKey = "your api key";
$apiSecret = "your api secret";
$appId = "your appid";
$url = "https://api.itniotech.com/otp/app/update/".$appId;
$timeStamp = time();
$sign = md5($apiKey.$apiSecret.$timeStamp);

$dataArr['name'] = 'name';
$dataArr['codeExpiry'] = '5';
$dataArr['appId'] = $appId;
$dataArr['periodTotalSendLimit'] = array(
    "enabled"=>true,
    "unit"=>1,
    "period"=>1,
    "limit"=>1
);
$dataArr['periodPhoneSendLimit'] = array(
    "enabled"=>true,
    "unit"=>1,
    "period"=>1,
    "limit"=>1
);

$data = json_encode($dataArr);
$headers[] = 'Content-Type: application/json;charset=UTF-8';
$headers[] = "Sign: $sign";
$headers[] = "Timestamp: $timeStamp";
$headers[] = "Api-Key: $apiKey";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 600);
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch, CURLOPT_POSTFIELDS , $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

$output = curl_exec($ch);
curl_close($ch);

var_dump($output);
 

RESPONSEEXAMPLE

{
    "status": "0",
    "reason": "success",
    "data": {
        "name": "test_app",
        "appId": "mRELxtHc",
        "periodTotalSendLimit": {
            "unit": 1,
            "period": 1,
            "limit": 1,
            "enabled": true
        },
        "periodPhoneSendLimit": {
            "unit": 1,
            "period": 1,
            "limit": 1,
            "enabled": true
        },
        "codeExpiry": 5,
        "createTime": "2022-01-01T00:00:00+08:00"
    }
}