> ## 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 Capabilities

> Return partner-specific capabilities and permissions for authenticated callers

<Info>
  Unlike the public `/metadata.json`, this authenticated endpoint returns capabilities specific to the requesting OCID based on your service preferences or partnership agreements.
</Info>

## Use Cases

Use this endpoint to provide differentiated access:

* **Preferred partners** - Grant additional capabilities to strategic partners
* **Restricted access** - Limit certain OCIDs to specific operations
* **Custom settlement** - Offer different settlement options per partner

## Example Response

```json theme={null}
{
  "ocid": 500,
  "name": "Coffee Shop",
  "capabilities": [
    "orders.create",
    "orders.status",
    "transfer.webhook"
  ],
  "settlement": {
    "currencies": ["USD"],
    "accepts": [100, 101]
  }
}
```

## Authentication

Verify the request signature using the caller's public key from their `/metadata.json` endpoint. See [Request Authentication](/guides/protocol/request-authentication) for details.


## OpenAPI

````yaml merchant-api/endpoint/merchant-api/openapi.json get /capabilities
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:
  /capabilities:
    get:
      summary: Get service capabilities
      description: >-
        Authenticated endpoint for partners to discover their specific
        capabilities at your KYC provider.
      operationId: getCapabilities
      parameters:
        - $ref: '#/components/parameters/X-OC-ID'
        - $ref: '#/components/parameters/X-OC-Timestamp'
        - $ref: '#/components/parameters/X-OC-Nonce'
        - $ref: '#/components/parameters/X-OC-Signature'
      responses:
        '200':
          description: Service capabilities for the authenticated partner
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Capabilities'
              example:
                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
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  parameters:
    X-OC-ID:
      name: X-OC-ID
      in: header
      required: true
      description: Caller's OCID
      schema:
        type: string
      example: '300'
    X-OC-Timestamp:
      name: X-OC-Timestamp
      in: header
      required: true
      description: Unix timestamp in seconds
      schema:
        type: string
      example: '1706500000'
    X-OC-Nonce:
      name: X-OC-Nonce
      in: header
      required: true
      description: Unique request identifier
      schema:
        type: string
      example: req_abc123
    X-OC-Signature:
      name: X-OC-Signature
      in: header
      required: true
      description: secp256k1 ECDSA signature
      schema:
        type: string
      example: a1b2c3d4...7f1b
  schemas:
    Capabilities:
      type: object
      required:
        - ocid
        - name
        - capabilities
      properties:
        ocid:
          type: integer
        name:
          type: string
        capabilities:
          type: array
          items:
            type: string
        supported_grants:
          type: array
          items:
            type: string
            enum:
              - name
              - email
              - phone
              - date_of_birth
              - nationality
              - address
              - id_card
              - passport
              - driver_license
              - proof_of_address
              - liveness
              - aml
          description: List of KYC grants this provider supports
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              enum:
                - INVALID_SIGNATURE
                - TIMESTAMP_EXPIRED
                - NONCE_REUSED
                - UNKNOWN_OCID
                - USER_NOT_FOUND
                - KYC_NOT_COMPLETE
                - GRANT_NOT_AUTHORIZED
                - GRANT_EXPIRED
                - INVALID_GRANT
                - INVALID_CALLBACK_URL
            message:
              type: string
            details:
              type: object

````