Skip to main content
This endpoint is public and does not require authentication. Other services fetch this to discover your capabilities and verify your signatures.

Implementation

Host this endpoint at the URL you register in the Router Registry. The response tells other services:
  • Your public key - Used to verify your signed KYC data
  • Your endpoint URL - Where to send API requests
  • Your capabilities - Which KYC endpoints you support

Example Response

{
  "opencharge": "0.1",
  "name": "TrustVerify KYC",
  "profile": "Global KYC verification provider",
  "icon": "https://kyc.provider.example/icon.png",
  "config": {
    "publicKey": "a34b5c6d7e8f9a0b...",
    "endpoint": "https://kyc.provider.example/opencharge",
    "capabilities": [
      "kyc.grant",
      "kyc.validate",
      "kyc.data"
    ]
  },
  "kyc": [],
  "signature": "a1b2c3d4e5f6...7f1b",
  "contact": "support@kycprovider.example"
}

Key Fields

FieldPurpose
profileDescription of your KYC service
config.publicKeyYour secp256k1 public key (128 hex chars)
config.endpointBase URL for your Opencharge API
config.capabilitiesList of supported KYC operations
signatureYour signature of the canonicalized config

Signing Your Config

Sign the config object to prove you control the private key:
const config = {
  publicKey: YOUR_PUBLIC_KEY,
  endpoint: "https://kyc.provider.example/opencharge",
  capabilities: [
    "kyc.grant",
    "kyc.validate",
    "kyc.data"
  ]
};

const canonical = JSON.stringify(config, Object.keys(config).sort());
const signature = secp256k1_sign(YOUR_PRIVATE_KEY, SHA256(canonical));