The OpenOTP.HOTP_URI method is used to get a HOTP mobile URI.

The required parameters are the key (in base 64) that is the token binary random seed, the userid (corresponding to the username), the domain and the name which is the display name for the Software Token.
The optional parameters are the state of the token, the digits (6, 8 or 10), the session ID and the boolean tinyurl.

This method returns the enrolment URI to be used in a QRCode.


import requests
import json

# Define the method and parameters
method = 'OpenOTP.HOTP_URI'
params = {
    'name': 'John Doe RCDevs',
    'key': '6f7MXjiju3vmI9Ow6kH7nIdqx8I=',
    'userid': 'john doe',
    'domain': 'RCDEVSDOCS',
    'state': '0',
    'digits': 6,
    'session': 'lgiM1mhGYLL6z3Hy',
    'tinyurl': True
}

# Create the request payload
request_payload = {
    'jsonrpc': "2.0",
    'method': method,
    'params': params,
    'id': 0
}

# Convert payload to JSON
json_payload = json.dumps(request_payload)

# Define the URL and credentials
url = "https://webadm1.rcdevsdocs.com/manag/"
auth = ("RCDEVSDOCS\\administrator", "password")

# Define the headers
headers = {
    "Content-Type": "application/json",
    "Connection": "close"
}

# Make the POST request
response = requests.post(url, data=json_payload, headers=headers, auth=auth, verify=False)

# Print the HTTP response code and response content
print(f"HTTP response code: {response.status_code}")
print(response.json())
    

<?php
#!/bin/php
$method = 'OpenOTP.HOTP_URI';
$params = array(
    'name' => 'John Doe RCDevs',
    'key' => '6f7MXjiju3vmI9Ow6kH7nIdqx8I=',
    'userid' => 'john doe',
    'domain' => 'RCDEVSDOCS',
    'state' => '0',
    'digits' => 6,
    'session' => 'lgiM1mhGYLL6z3Hy',
    'tinyurl' => true
);

$request = array(
    'jsonrpc' => "2.0",
    'method' => $method,
    'params' => $params,
    'id' => 0
);
$json = json_encode($request);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://webadm1.rcdevsdocs.com/manag/");
curl_setopt($ch, CURLOPT_USERPWD, "RCDEVSDOCS\\administrator:password");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("connection: close"));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
$out = curl_exec($ch);
curl_close($ch);

print_r(json_decode($out));
?>
    

# Define the method and parameters
$method = 'OpenOTP.HOTP_URI'
$params = @{
    name = 'John Doe RCDevs'
    key = '6f7MXjiju3vmI9Ow6kH7nIdqx8I='
    userid = 'john doe'
    domain = 'RCDEVSDOCS'
    state = '0'
    digits = 6
    session = 'lgiM1mhGYLL6z3Hy'
    tinyurl = $true
}

# Create the request payload
$requestPayload = @{
    'jsonrpc' = '2.0'
    'method' = $method
    'params' = $params
    'id' = 0
}

# Convert the request payload to JSON
$jsonPayload = $requestPayload | ConvertTo-Json

# Define the URL and credentials
$url = "https://webadm1.rcdevsdocs.com/manag/"
$auth = "RCDEVSDOCS\administrator:password"

# Make the POST request
$response = Invoke-RestMethod -Uri $url -Method Post -Body $jsonPayload -Headers @{ "Content-Type" = "application/json" } -Credential (New-Object System.Management.Automation.PSCredential($auth, (ConvertTo-SecureString "password" -AsPlainText -Force))) -SkipCertificateCheck

# Output the response
Write-Host "HTTP Response Code: $($response.status_code)"
Write-Host $response | ConvertTo-Json