Table of Contents
# Generate a private key
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
# Extract the public key from the private key
openssl rsa -in private_key.pem -pubout -out public_key.pem
✅ Generated Files:
private_key.pem
→ Used for signing requests.public_key.pem
→ Uploaded to Rocket Resolver for authentication.
1. Login to Rocket Resolver Tenant Admin's Account Management screen.
2. Navigate to the Public API Key Management section.
3. Click the Upload Button and select the public_key.pem
file.
✅ No need to manually convert to Base64! Rocket Resolver will handle the encoding automatically.
# Create a JSON payload
echo -n '{"userEmail": "username@example.com"}' > data.json
# Sign the data using the private key
openssl dgst -sha256 -sign private_key.pem -out signature.bin data.json
# Convert Data & Signature to Base64
base64 -w 0 data.json > data_base64.txt
base64 -w 0 signature.bin > signature_base64.txt
✅ Now you have:
data_base64.txt
→ Base64-encoded JSON payload.signature_base64.txt
→ Base64-encoded signature.
curl -X 'POST' \
'https://api.rocketresolver.com/api/auth/client-login/{tenantId}' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"data": "'$(cat data_base64.txt)'",
"signature": "'$(cat signature_base64.txt)'"
}'
✅ Server returns a JWT token for authentication.
curl -X 'GET' \
'https://api.rocketresolver.com/api/client-api/ticket/{ticketNumber}' \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H 'accept: application/json'
✅ Replace {ticketNumber}
and YOUR_JWT_TOKEN
with actual values.
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.*;
import java.util.Base64;
import javax.crypto.Cipher;
import org.json.JSONObject;
import java.net.http.*;
public class ClientAuth {
public static void main(String[] args) throws Exception {
String tenantId = "your-tenant-id";
String data = "{\"userEmail\": \"user@example.com\"}";
String signedData = signData(data, "private_key.pem");
String base64Data = Base64.getEncoder().encodeToString(data.getBytes());
String base64Signature = Base64.getEncoder().encodeToString(signedData.getBytes());
HttpRequest request = HttpRequest.newBuilder()
.uri(new java.net.URI("https://api.rocketresolver.com/api/auth/client-login/" + tenantId))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(base64Data))
.build();
HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Response: " + response.body());
}
}
import requests
import base64
import json
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding, serialization
with open("private_key.pem", "rb") as key_file:
private_key = serialization.load_pem_private_key(key_file.read(), password=None)
data = json.dumps({"userEmail": "user@example.com"}).encode()
signature = private_key.sign(data, padding.PKCS1v15(), hashes.SHA256())
base64_data = base64.b64encode(data).decode()
base64_signature = base64.b64encode(signature).decode()
response = requests.post(
"https://api.rocketresolver.com/api/auth/client-login/your-tenant-id",
headers={"Content-Type": "application/json"},
json={"data": base64_data, "signature": base64_signature}
)
print("Response:", response.json())
const axios = require("axios");
const fs = require("fs");
const crypto = require("crypto");
const tenantId = "your-tenant-id";
const data = JSON.stringify({ userEmail: "user@example.com" });
const privateKey = fs.readFileSync("private_key.pem", "utf8");
const sign = crypto.createSign("RSA-SHA256");
sign.update(data);
const signature = sign.sign(privateKey, "base64");
const base64Data = Buffer.from(data).toString("base64");
axios.post(`https://api.rocketresolver.com/api/auth/client-login/${tenantId}`, {
data: base64Data,
signature: signature
})
.then(response => console.log("Response:", response.data))
.catch(error => console.error("Error:", error.response ? error.response.data : error.message));
6. 📌 API Endpoints
- Get Ticket:
GET /api/client-api/ticket/{ticketNumber}
- Create Ticket:
POST /api/client-api/ticket/create
- Update Ticket Status:
PUT /api/client-api/ticket/{ticketNumber}/status
- Update Ticket Priority:
PUT /api/client-api/ticket/{ticketNumber}/priority
- Update Ticket Type:
PUT /api/client-api/ticket/{ticketNumber}/type
- Add Comment:
POST /api/client-api/ticket/{ticketNumber}/comment
✅ Summary
You have now successfully:
- Generated an RSA key pair.
- Uploaded the public key.
- Signed and encoded data & signature.
- Authenticated and received a JWT token.
- Accessed Rocket Resolver APIs securely.