Skip to main content
GET
/
capabilities
Get service capabilities
curl --request GET \
  --url https://kyc.provider.example/opencharge/capabilities \
  --header 'X-OC-ID: <x-oc-id>' \
  --header 'X-OC-Nonce: <x-oc-nonce>' \
  --header 'X-OC-Signature: <x-oc-signature>' \
  --header 'X-OC-Timestamp: <x-oc-timestamp>'
{
  "ocid": 540,
  "name": "TrustVerify KYC",
  "capabilities": [
    "kyc.grant",
    "kyc.validate",
    "kyc.data"
  ],
  "supported_grants": [
    "name",
    "email",
    "phone",
    "date_of_birth",
    "nationality",
    "address",
    "id_card",
    "passport",
    "driver_license",
    "proof_of_address",
    "liveness",
    "aml"
  ]
}
Unlike /metadata.json, this endpoint is authenticated. Return capabilities specific to the requesting partner based on their partnership agreement.

Implementation

app.get('/capabilities', verifyAuth, async (req, res) => {
  const partnerOcid = req.headers['x-oc-id'];

  // Get partner-specific settings
  const partner = await db.getPartner(partnerOcid);

  if (!partner) {
    return res.status(401).json({
      error: { code: 'UNKNOWN_OCID', message: 'Unknown partner' }
    });
  }

  res.json({
    ocid: YOUR_OCID,
    name: "QuickPay Wallet",
    capabilities: partner.enabledCapabilities || [
      "checkout.create",
      "orders.create.session",
      "transfer.create",
      "transfer.webhook"
    ],
    settlement: {
      currencies: partner.currencies || ["USD"],
      accepts: partner.acceptedSettlers || [100, 101]
    }
  });
});

Use Cases

  • Return different settlement options based on partner tier
  • Enable/disable specific capabilities per partner
  • Show different currencies based on partner location

Headers

X-OC-ID
string
required

Caller's OCID

X-OC-Timestamp
string
required

Unix timestamp in seconds

X-OC-Nonce
string
required

Unique request identifier

X-OC-Signature
string
required

secp256k1 ECDSA signature

Response

Service capabilities for the authenticated partner

ocid
integer
required
name
string
required
capabilities
string[]
required
supported_grants
enum<string>[]

List of KYC grants this provider supports

Available options:
name,
email,
phone,
date_of_birth,
nationality,
address,
id_card,
passport,
driver_license,
proof_of_address,
liveness,
aml