> ## Documentation Index
> Fetch the complete documentation index at: https://docs.opencharge.network/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Metadata

> Return your service's public metadata including public key, endpoint URL, and capabilities

<Info>
  This endpoint is public and does not require authentication. Other services fetch this to discover how to interact with your merchant and verify your signatures.
</Info>

## Implementation

Host this endpoint at the URL you register in the Router Registry smart contract. The response tells other services:

* **Your public key** - Used to verify signatures on orders you create
* **Your endpoint URL** - Where to send API requests
* **Your capabilities** - Which endpoints you support
* **Settlement preferences** - Which currencies and settlement providers you accept
* **KYC providers** - Supported auto KYC providers that service accepts

## Example Response

```json theme={null}
{
  "opencharge": "0.1",
  "name": "Coffee Shop",
  "profile": "Local coffee shop accepting Opencharge payments",
  "icon": "https://merchant.example/icon.png",
  "config": {
    "publicKey": "a34b5c6d7e8f9a0b...",
    "endpoint": "https://api.merchant.example/opencharge",
    "capabilities": [
      "orders.create",
      "orders.status",
      "transfer.webhook"
    ],
    "settlement": {
      "currencies": ["USD"],
      "accepts": [100, 101, 102]
    }
  },
  "kyc": [540, 737, 2836]
  "signature": "a1b2c3d4e5f6...7f1b",
  "contact": "support@merchant.example"
}
```

<Note>
  The `signature` field contains your secp256k1 signature of the canonicalized `config` object. This proves the configuration was set by the holder of your private key.
</Note>


## OpenAPI

````yaml merchant-api/endpoint/merchant-api/openapi.json get /metadata.json
openapi: 3.1.0
info:
  title: Opencharge KYC Provider API
  description: >-
    API specification for KYC providers integrating with the Opencharge
    protocol. KYC providers collect and verify user identity information, then
    share it with authorized OCN entities.
  version: 0.1.0
  license:
    name: MIT
servers:
  - url: https://kyc.provider.example/opencharge
    description: Example KYC provider Opencharge endpoint
security: []
paths:
  /metadata.json:
    get:
      summary: Get OCID metadata
      description: >-
        Returns your KYC provider's metadata including public key, endpoint URL,
        and capabilities. Other services fetch this to verify your signatures
        and discover your capabilities.
      operationId: getMetadata
      responses:
        '200':
          description: OCID metadata document
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OCIDMetadata'
              example:
                opencharge: '0.1'
                name: TrustVerify KYC
                profile: Global KYC verification provider
                icon: https://kyc.provider.example/icon.png
                config:
                  publicKey: >-
                    a34b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b
                  endpoint: https://kyc.provider.example/opencharge
                  capabilities:
                    - kyc.grant
                    - kyc.validate
                    - kyc.data
                kyc: []
                signature: a1b2c3d4e5f6...7f1b
                contact: support@kycprovider.example
components:
  schemas:
    OCIDMetadata:
      type: object
      required:
        - opencharge
        - name
        - config
        - signature
      properties:
        opencharge:
          type: string
        name:
          type: string
        profile:
          type: string
        icon:
          type: string
          format: uri
        config:
          $ref: '#/components/schemas/OCIDConfig'
        kyc:
          type: array
          items:
            type: integer
          description: Supported auto KYC providers that service accepts
        signature:
          type: string
        contact:
          type: string
    OCIDConfig:
      type: object
      required:
        - publicKey
        - endpoint
        - capabilities
      properties:
        publicKey:
          type: string
          pattern: ^[a-fA-F0-9]{128}$
        endpoint:
          type: string
          format: uri
        capabilities:
          type: array
          items:
            type: string
            enum:
              - kyc.grant
              - kyc.validate
              - kyc.data

````