Skip to content

API Reference

Diego Alfonso edited this page Jan 26, 2026 · 2 revisions

API Reference

PrivUtil exposes a gRPC-Web API for all tool operations.

Protocol

  • Protocol: gRPC-Web over HTTP
  • Content-Type: application/grpc-web+proto
  • Default Port: 8090

Service Definition

All methods are defined in proto/privutil.proto.

service PrivUtilService {
  rpc Diff(DiffRequest) returns (DiffResponse);
  rpc Base64Encode(Base64Request) returns (Base64Response);
  rpc Base64Decode(Base64Request) returns (Base64Response);
  rpc JsonFormat(JsonFormatRequest) returns (JsonFormatResponse);
  rpc Convert(ConvertRequest) returns (ConvertResponse);
  rpc GenerateUuid(UuidRequest) returns (UuidResponse);
  rpc GenerateLorem(LoremRequest) returns (LoremResponse);
  rpc CalculateHash(HashRequest) returns (HashResponse);
  rpc TextInspect(TextInspectRequest) returns (TextInspectResponse);
  rpc TextManipulate(TextManipulateRequest) returns (TextManipulateResponse);
  rpc UrlEncode(TextRequest) returns (TextResponse);
  rpc UrlDecode(TextRequest) returns (TextResponse);
  rpc HtmlEncode(TextRequest) returns (TextResponse);
  rpc HtmlDecode(TextRequest) returns (TextResponse);
  rpc TimeConvert(TimeRequest) returns (TimeResponse);
  rpc JwtDecode(JwtRequest) returns (JwtResponse);
  rpc RegexTest(RegexRequest) returns (RegexResponse);
  rpc JsonToGo(JsonToGoRequest) returns (JsonToGoResponse);
  rpc CronExplain(CronRequest) returns (CronResponse);
  rpc CertParse(CertRequest) returns (CertResponse);
  rpc ColorConvert(ColorRequest) returns (ColorResponse);
  rpc CaseConvert(CaseRequest) returns (CaseResponse);
  rpc StringEscape(EscapeRequest) returns (EscapeResponse);
  rpc TextSimilarity(SimilarityRequest) returns (SimilarityResponse);
  rpc SqlFormat(SqlRequest) returns (SqlResponse);
  rpc IpCalc(IpRequest) returns (IpResponse);
}

Method Reference

Diff

Compare two texts.

message DiffRequest {
  string text1 = 1;
  string text2 = 2;
}

message DiffResponse {
  string diff_html = 1;
}

Base64Encode / Base64Decode

Encode or decode Base64 strings.

message Base64Request {
  string text = 1;
}

message Base64Response {
  string text = 1;
  string error = 2;
}

JsonFormat

Format or minify JSON.

message JsonFormatRequest {
  string text = 1;
  string indent = 2;  // "2", "4", "tab", "min"
}

Convert

Convert between JSON, YAML, XML.

enum DataFormat {
  JSON = 0;
  YAML = 1;
  XML = 2;
}

message ConvertRequest {
  string data = 1;
  DataFormat source_format = 2;
  DataFormat target_format = 3;
}

GenerateUuid

Generate UUIDs.

message UuidRequest {
  int32 count = 1;
  string version = 2;  // "v1", "v4"
  bool hyphen = 3;
  bool uppercase = 4;
}

message UuidResponse {
  repeated string uuids = 1;
}

TimeConvert

Convert timestamps.

message TimeRequest {
  string input = 1;  // "now", unix timestamp, or ISO format
}

message TimeResponse {
  int64 unix = 1;
  int64 unix_milli = 2;
  string iso = 3;
  string human = 4;
  // ... more formats
}

IpCalc

Calculate IP subnet information.

message IpRequest {
  string cidr = 1;  // "192.168.1.0/24"
}

message IpResponse {
  string network = 1;
  string broadcast = 2;
  string netmask = 3;
  int64 host_count = 4;
  string first_host = 5;
  string last_host = 6;
  string error = 7;
}

Using the API

From TypeScript

import { client } from "./lib/client";
import { DiffRequest } from "./proto/proto/privutil";

const response = await client.diff(
  DiffRequest.create({ text1: "hello", text2: "world" }),
);
console.log(response.diffHtml);

From Go (testing)

conn, _ := grpc.Dial("localhost:8090", grpc.WithInsecure())
client := pb.NewPrivUtilServiceClient(conn)

resp, _ := client.Diff(ctx, &pb.DiffRequest{
    Text1: "hello",
    Text2: "world",
})
fmt.Println(resp.DiffHtml)

Error Handling

All responses include an optional error field:

  • If empty: operation succeeded
  • If set: contains error message
const resp = await client.jsonFormat(req);
if (resp.error) {
  console.error("Error:", resp.error);
} else {
  console.log("Result:", resp.text);
}

Clone this wiki locally