Obol Cluster Lock API

The Cluster Lock API from Obol — 22 operation(s) for cluster lock.

Operations 22

GET /lock/{lockHash} Retrieve a Distributed Validator Cluster Lock Object #
GET /v1/lock/{lockHash} Retrieve a Distributed Validator Cluster Lock Object #
GET /lock/search/{network} Retrieve a list of Distributed Validator Cluster Lock Objects #
GET /v1/lock/search/{network} Retrieve a list of Distributed Validator Cluster Lock Objects #
GET /lock/configHash/{configHash} Retrieve a Distributed Validator Cluster Lock Object #
GET /v1/lock/configHash/{configHash} Retrieve a Distributed Validator Cluster Lock Object #
GET /lock/{lockHash}/launchpad Redirect to the launchpad cluster status page #
GET /v1/lock/{lockHash}/launchpad Redirect to the launchpad cluster status page #
GET /lock/{lockHash}/peer-scores Get average peer scores for operators in a cluster #
GET /v1/lock/{lockHash}/peer-scores Get average peer scores for operators in a cluster #
GET /lock/operator Retrieve a list of Distributed Validator Clusters for which this address is an… #
GET /lock/operator/{address} Retrieve a list of Distributed Validator Clusters for which this address is an… #
GET /v1/lock/operator Retrieve a list of Distributed Validator Clusters for which this address is an… #
GET /v1/lock/operator/{address} Retrieve a list of Distributed Validator Clusters for which this address is an… #
GET /lock/network/{network} Retrieve a list of Distributed Validator Clusters for a given network #
GET /v1/lock/network/{network} Retrieve a list of Distributed Validator Clusters for a given network #
GET /lock/network/summary/{network} Retrieve a list of Distributed Validator Clusters for a given network #
GET /v1/lock/network/summary/{network} Retrieve a list of Distributed Validator Clusters for a given network #
POST /lock Push Distributed Validator Cluster Lock Data #
POST /v1/lock Push Distributed Validator Cluster Lock Data #
POST /lock/verify Verify Distributed Validator Cluster Lock Data #
POST /v1/lock/verify Verify Distributed Validator Cluster Lock Data #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/obol-cluster-lock-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

obol-cluster-lock-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Obol Cluster Lock API
  description: '## What is this API?


    This API is for creating and managing Distributed Validators. This API works in tandem with Obol''s Distributed Validator Launchpad, a dapp designed to allow people to authenticate their counterparties and agree to the terms of a Distributed Validator Cluster. This API will be made more easy for code-only interaction in the coming quarters with the release of the Obol-SDK.


    Read more about Obol and how to use the launchpad on our docs site.


    For enquiries:'
  version: v1.0.0-local
  contact:
    name: Obol Labs
    url: https://obol.tech
    email: support@obol.tech
servers:
- url: https://api.obol.tech
  description: Production environment
- url: http://localhost:3000
  description: Local development server
- url: https://localhost:3000
  description: HTTPS Local development server
tags:
- name: Cluster Lock
paths:
  /lock/{lockHash}:
    get:
      description: This endpoint is used to retrieve a cluster lock object.
      operationId: LockController_getClusterLock[0]
      parameters:
      - name: lockHash
        required: true
        in: path
        description: The `lock_hash` calculated for a cluster lock.
        schema:
          type: string
      responses:
        '200':
          description: The cluster lock object
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockResponse'
        '404':
          description: Cluster not found
        '500':
          description: An unknown error occurred
      summary: Retrieve a Distributed Validator Cluster Lock Object
      tags:
      - Cluster Lock
  /v1/lock/{lockHash}:
    get:
      description: This endpoint is used to retrieve a cluster lock object.
      operationId: LockController_getClusterLock[1]_v1
      parameters:
      - name: lockHash
        required: true
        in: path
        description: The `lock_hash` calculated for a cluster lock.
        schema:
          type: string
      responses:
        '200':
          description: The cluster lock object
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockResponse'
        '404':
          description: Cluster not found
        '500':
          description: An unknown error occurred
      summary: Retrieve a Distributed Validator Cluster Lock Object
      tags:
      - Cluster Lock
  /lock/search/{network}:
    get:
      description: This endpoint is used to search for Cluster Lock Objects that match a substring of their `lock_hash`.
      operationId: LockController_searchClusterLocks[0]
      parameters:
      - name: network
        required: true
        in: path
        description: The network to retrieve clusters on
        examples:
          mainnet:
            summary: Ethereum Mainnet
            value: mainnet
          hoodi:
            summary: Hoodi Test Network
            value: hoodi
          sepolia:
            summary: Sepolia Test Network
            value: sepolia
        schema:
          type: string
      - name: partialLockHash
        required: true
        in: query
        description: A substring of the `lock_hash` calculated for a cluster lock.
        schema:
          type: string
      - name: partialClusterName
        required: true
        in: query
        description: A substring of the cluster name.
        schema:
          type: string
      - name: page
        required: true
        in: query
        description: The page number to retrieve.
        schema:
          type: integer
          default: 0
      - name: limit
        required: true
        in: query
        description: The number of cluster lock objects to return.
        schema:
          type: integer
          default: 100
      responses:
        '200':
          description: A list of Distributed Validator Clusters which the lock hash matches.
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockPagedResponse'
        '404':
          description: Cluster not found
        '500':
          description: An unknown error occurred
      summary: Retrieve a list of Distributed Validator Cluster Lock Objects
      tags:
      - Cluster Lock
  /v1/lock/search/{network}:
    get:
      description: This endpoint is used to search for Cluster Lock Objects that match a substring of their `lock_hash`.
      operationId: LockController_searchClusterLocks[1]_v1
      parameters:
      - name: network
        required: true
        in: path
        description: The network to retrieve clusters on
        examples:
          mainnet:
            summary: Ethereum Mainnet
            value: mainnet
          hoodi:
            summary: Hoodi Test Network
            value: hoodi
          sepolia:
            summary: Sepolia Test Network
            value: sepolia
        schema:
          type: string
      - name: partialLockHash
        required: true
        in: query
        description: A substring of the `lock_hash` calculated for a cluster lock.
        schema:
          type: string
      - name: partialClusterName
        required: true
        in: query
        description: A substring of the cluster name.
        schema:
          type: string
      - name: page
        required: true
        in: query
        description: The page number to retrieve.
        schema:
          type: integer
          default: 0
      - name: limit
        required: true
        in: query
        description: The number of cluster lock objects to return.
        schema:
          type: integer
          default: 100
      responses:
        '200':
          description: A list of Distributed Validator Clusters which the lock hash matches.
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockPagedResponse'
        '404':
          description: Cluster not found
        '500':
          description: An unknown error occurred
      summary: Retrieve a list of Distributed Validator Cluster Lock Objects
      tags:
      - Cluster Lock
  /lock/configHash/{configHash}:
    get:
      description: This endpoint is used to retrieve a cluster lock object by the hash of the configuration used to create it.
      operationId: LockController_getLockByConfigHash[0]
      parameters:
      - name: configHash
        required: true
        in: path
        description: The `config_hash` calculated for a cluster configuration.
        schema:
          type: string
      responses:
        '200':
          description: The cluster lock object
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockResponse'
        '404':
          description: Cluster not found
        '500':
          description: An unknown error occurred
      summary: Retrieve a Distributed Validator Cluster Lock Object
      tags:
      - Cluster Lock
  /v1/lock/configHash/{configHash}:
    get:
      description: This endpoint is used to retrieve a cluster lock object by the hash of the configuration used to create it.
      operationId: LockController_getLockByConfigHash[1]_v1
      parameters:
      - name: configHash
        required: true
        in: path
        description: The `config_hash` calculated for a cluster configuration.
        schema:
          type: string
      responses:
        '200':
          description: The cluster lock object
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockResponse'
        '404':
          description: Cluster not found
        '500':
          description: An unknown error occurred
      summary: Retrieve a Distributed Validator Cluster Lock Object
      tags:
      - Cluster Lock
  /lock/{lockHash}/launchpad:
    get:
      description: This endpoint is used to redirect users to the created cluster status page after DKG is completed.
      operationId: LockController_redirectToClusterStatus[0]
      parameters:
      - name: lockHash
        required: true
        in: path
        description: The `lock_hash` calculated for a Distributed Validator Cluster.
        schema:
          type: string
      responses:
        '302':
          description: Serves a redirect to the launchpad cluster status page
        '404':
          description: Cluster lock not found
        '500':
          description: An unknown error occurred
      summary: Redirect to the launchpad cluster status page
      tags:
      - Cluster Lock
  /v1/lock/{lockHash}/launchpad:
    get:
      description: This endpoint is used to redirect users to the created cluster status page after DKG is completed.
      operationId: LockController_redirectToClusterStatus[1]_v1
      parameters:
      - name: lockHash
        required: true
        in: path
        description: The `lock_hash` calculated for a Distributed Validator Cluster.
        schema:
          type: string
      responses:
        '302':
          description: Serves a redirect to the launchpad cluster status page
        '404':
          description: Cluster lock not found
        '500':
          description: An unknown error occurred
      summary: Redirect to the launchpad cluster status page
      tags:
      - Cluster Lock
  /lock/{lockHash}/peer-scores:
    get:
      description: This endpoint returns the average peer_score for each operator address in a cluster lock within a specified date range. Results are sorted by peer_score in descending order.
      operationId: LockController_getAveragePeerScores[0]
      parameters:
      - name: lockHash
        required: true
        in: path
        description: The `lock_hash` calculated for a cluster lock.
        schema:
          type: string
      - name: startDate
        required: false
        in: query
        description: Start date for the range (ISO 8601 format). If not provided, defaults to endDate - 7 days.
        schema:
          example: '2026-01-21T00:00:00.000Z'
          type: string
      - name: endDate
        required: false
        in: query
        description: End date for the range (ISO 8601 format). If not provided, defaults to the latest available date.
        schema:
          example: '2026-01-28T00:00:00.000Z'
          type: string
      responses:
        '200':
          description: Array of operator addresses with their average peer scores
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    operator_address:
                      type: string
                      example: '0x7a82E643B0c8AE619f71d9667559180c33c92277'
                    avg_peer_score:
                      type: number
                      example: 99.89
                    peer_name:
                      type:
                      - string
                      - 'null'
                      example: puzzled-pen
                      description: Peer name shown when the peer score row has no operator address.
                    peer_nickname:
                      type:
                      - string
                      - 'null'
                      example: Alice node
                      description: Operator-configured peer nickname, when available.
                    last_updated:
                      type: string
                      format: date-time
                      example: '2026-02-10T00:00:00.000Z'
                      description: Latest peer_score date included in this averaged rank row.
        '400':
          description: 'Network error - unable to determine network from fork_version


            Invalid date format'
        '404':
          description: Cluster lock not found
        '500':
          description: An unknown error occurred
      summary: Get average peer scores for operators in a cluster
      tags:
      - Cluster Lock
  /v1/lock/{lockHash}/peer-scores:
    get:
      description: This endpoint returns the average peer_score for each operator address in a cluster lock within a specified date range. Results are sorted by peer_score in descending order.
      operationId: LockController_getAveragePeerScores[1]_v1
      parameters:
      - name: lockHash
        required: true
        in: path
        description: The `lock_hash` calculated for a cluster lock.
        schema:
          type: string
      - name: startDate
        required: false
        in: query
        description: Start date for the range (ISO 8601 format). If not provided, defaults to endDate - 7 days.
        schema:
          example: '2026-01-21T00:00:00.000Z'
          type: string
      - name: endDate
        required: false
        in: query
        description: End date for the range (ISO 8601 format). If not provided, defaults to the latest available date.
        schema:
          example: '2026-01-28T00:00:00.000Z'
          type: string
      responses:
        '200':
          description: Array of operator addresses with their average peer scores
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    operator_address:
                      type: string
                      example: '0x7a82E643B0c8AE619f71d9667559180c33c92277'
                    avg_peer_score:
                      type: number
                      example: 99.89
                    peer_name:
                      type:
                      - string
                      - 'null'
                      example: puzzled-pen
                      description: Peer name shown when the peer score row has no operator address.
                    peer_nickname:
                      type:
                      - string
                      - 'null'
                      example: Alice node
                      description: Operator-configured peer nickname, when available.
                    last_updated:
                      type: string
                      format: date-time
                      example: '2026-02-10T00:00:00.000Z'
                      description: Latest peer_score date included in this averaged rank row.
        '400':
          description: 'Network error - unable to determine network from fork_version


            Invalid date format'
        '404':
          description: Cluster lock not found
        '500':
          description: An unknown error occurred
      summary: Get average peer scores for operators in a cluster
      tags:
      - Cluster Lock
  /lock/operator:
    get:
      description: This endpoint fetches a number of Distributed Validator Clusters for which the address provided is a node operator.
      operationId: LockController_getClusterLocksByOperator[0]
      parameters:
      - name: address
        required: true
        in: path
        description: The operator address.
        schema:
          type: string
      - name: page
        required: true
        in: query
        description: The page number to retrieve.
        schema:
          type: integer
          default: 0
      - name: limit
        required: true
        in: query
        description: The number of cluster lock objects to return.
        schema:
          type: integer
          default: 100
      responses:
        '200':
          description: A list of Distributed Validator Clusters which the operator is a member of.
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockPagedResponse'
        '500':
          description: An unknown error occurred
      summary: Retrieve a list of Distributed Validator Clusters for which this address is an…
      tags:
      - Cluster Lock
  /lock/operator/{address}:
    get:
      description: This endpoint fetches a number of Distributed Validator Clusters for which the address provided is a node operator.
      operationId: LockController_getClusterLocksByOperator[1]
      parameters:
      - name: address
        required: true
        in: path
        description: The operator address.
        schema:
          type: string
      - name: page
        required: true
        in: query
        description: The page number to retrieve.
        schema:
          type: integer
          default: 0
      - name: limit
        required: true
        in: query
        description: The number of cluster lock objects to return.
        schema:
          type: integer
          default: 100
      responses:
        '200':
          description: A list of Distributed Validator Clusters which the operator is a member of.
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockPagedResponse'
        '500':
          description: An unknown error occurred
      summary: Retrieve a list of Distributed Validator Clusters for which this address is an…
      tags:
      - Cluster Lock
  /v1/lock/operator:
    get:
      description: This endpoint fetches a number of Distributed Validator Clusters for which the address provided is a node operator.
      operationId: LockController_getClusterLocksByOperator[2]_v1
      parameters:
      - name: address
        required: true
        in: path
        description: The operator address.
        schema:
          type: string
      - name: page
        required: true
        in: query
        description: The page number to retrieve.
        schema:
          type: integer
          default: 0
      - name: limit
        required: true
        in: query
        description: The number of cluster lock objects to return.
        schema:
          type: integer
          default: 100
      responses:
        '200':
          description: A list of Distributed Validator Clusters which the operator is a member of.
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockPagedResponse'
        '500':
          description: An unknown error occurred
      summary: Retrieve a list of Distributed Validator Clusters for which this address is an…
      tags:
      - Cluster Lock
  /v1/lock/operator/{address}:
    get:
      description: This endpoint fetches a number of Distributed Validator Clusters for which the address provided is a node operator.
      operationId: LockController_getClusterLocksByOperator[3]_v1
      parameters:
      - name: address
        required: true
        in: path
        description: The operator address.
        schema:
          type: string
      - name: page
        required: true
        in: query
        description: The page number to retrieve.
        schema:
          type: integer
          default: 0
      - name: limit
        required: true
        in: query
        description: The number of cluster lock objects to return.
        schema:
          type: integer
          default: 100
      responses:
        '200':
          description: A list of Distributed Validator Clusters which the operator is a member of.
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockPagedResponse'
        '500':
          description: An unknown error occurred
      summary: Retrieve a list of Distributed Validator Clusters for which this address is an…
      tags:
      - Cluster Lock
  /lock/network/{network}:
    get:
      description: This endpoint fetches a number of cluster lock objects for a given network.
      operationId: LockController_getClusterLocksByNetwork[0]
      parameters:
      - name: network
        required: true
        in: path
        description: The network to retrieve clusters on
        examples:
          mainnet:
            summary: Ethereum Mainnet
            value: mainnet
          hoodi:
            summary: Hoodi Test Network
            value: hoodi
          sepolia:
            summary: Sepolia Test Network
            value: sepolia
        schema:
          type: string
      - name: page
        required: true
        in: query
        description: The page number to retrieve.
        schema:
          type: integer
          default: 0
      - name: limit
        required: true
        in: query
        description: The number of cluster lock objects to return.
        schema:
          type: integer
          default: 100
      - name: sortBy
        required: false
        in: query
        description: numerical field to sort by
        schema:
          type: string
          default: avg_effectiveness
      - name: sortOrder
        required: false
        in: query
        description: order of sorting the field
        schema:
          type: string
          default: desc
      - name: pool
        required: false
        in: query
        description: cluster type or pool
        schema:
          type: string
      - name: details
        required: true
        in: query
        description: The flag to populate cluster definition information.
        schema:
          type: string
          default: 'false'
      responses:
        '200':
          description: A paged list of Distributed Validator Clusters on this network
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockPagedResponse'
        '400':
          description: Network not spported
        '500':
          description: An unknown error occurred
      summary: Retrieve a list of Distributed Validator Clusters for a given network
      tags:
      - Cluster Lock
  /v1/lock/network/{network}:
    get:
      description: This endpoint fetches a number of cluster lock objects for a given network.
      operationId: LockController_getClusterLocksByNetwork[1]_v1
      parameters:
      - name: network
        required: true
        in: path
        description: The network to retrieve clusters on
        examples:
          mainnet:
            summary: Ethereum Mainnet
            value: mainnet
          hoodi:
            summary: Hoodi Test Network
            value: hoodi
          sepolia:
            summary: Sepolia Test Network
            value: sepolia
        schema:
          type: string
      - name: page
        required: true
        in: query
        description: The page number to retrieve.
        schema:
          type: integer
          default: 0
      - name: limit
        required: true
        in: query
        description: The number of cluster lock objects to return.
        schema:
          type: integer
          default: 100
      - name: sortBy
        required: false
        in: query
        description: numerical field to sort by
        schema:
          type: string
          default: avg_effectiveness
      - name: sortOrder
        required: false
        in: query
        description: order of sorting the field
        schema:
          type: string
          default: desc
      - name: pool
        required: false
        in: query
        description: cluster type or pool
        schema:
          type: string
      - name: details
        required: true
        in: query
        description: The flag to populate cluster definition information.
        schema:
          type: string
          default: 'false'
      responses:
        '200':
          description: A paged list of Distributed Validator Clusters on this network
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockPagedResponse'
        '400':
          description: Network not spported
        '500':
          description: An unknown error occurred
      summary: Retrieve a list of Distributed Validator Clusters for a given network
      tags:
      - Cluster Lock
  /lock/network/summary/{network}:
    get:
      description: This endpoint fetches a nsummary of the lock files stored for a given network
      operationId: LockController_getClusterLockNetworkSummary[0]
      parameters:
      - name: network
        required: true
        in: path
        description: The network to retrieve clusters on
        examples:
          mainnet:
            summary: Ethereum Mainnet
            value: mainnet
          hoodi:
            summary: Hoodi Test Network
            value: hoodi
        schema:
          type: string
      responses:
        '200':
          description: A summary of the Distributed Validator locks for a given network
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockNetworkSummaryResponse'
        '400':
          description: Network not spported
        '500':
          description: An unknown error occurred
      summary: Retrieve a list of Distributed Validator Clusters for a given network
      tags:
      - Cluster Lock
  /v1/lock/network/summary/{network}:
    get:
      description: This endpoint fetches a nsummary of the lock files stored for a given network
      operationId: LockController_getClusterLockNetworkSummary[1]_v1
      parameters:
      - name: network
        required: true
        in: path
        description: The network to retrieve clusters on
        examples:
          mainnet:
            summary: Ethereum Mainnet
            value: mainnet
          hoodi:
            summary: Hoodi Test Network
            value: hoodi
        schema:
          type: string
      responses:
        '200':
          description: A summary of the Distributed Validator locks for a given network
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockNetworkSummaryResponse'
        '400':
          description: Network not spported
        '500':
          description: An unknown error occurred
      summary: Retrieve a list of Distributed Validator Clusters for a given network
      tags:
      - Cluster Lock
  /lock:
    post:
      description: This endpoint saves cluster lock objects that describe the created Distributed Validator Cluster. If the lock_hash is already stored, the existing lock is returned (idempotent; no re-validation) with the same 201 response.
      operationId: LockController_postClusterLock[0]
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterLockDto'
      responses:
        '201':
          description: The cluster lock object (new publish or idempotent retry for an existing lock_hash).
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockResponse'
        '400':
          description: Invalid lock data
        '404':
          description: The cluster definition corresponding to this lock file was not found
        '500':
          description: An unknown error occurred
        '503':
          description: Too many lock validations in progress on this instance. Retry with backoff.
        '504':
          description: Lock validation exceeded the time limit (typically very large locks).
      summary: Push Distributed Validator Cluster Lock Data
      tags:
      - Cluster Lock
  /v1/lock:
    post:
      description: This endpoint saves cluster lock objects that describe the created Distributed Validator Cluster. If the lock_hash is already stored, the existing lock is returned (idempotent; no re-validation) with the same 201 response.
      operationId: LockController_postClusterLock[1]_v1
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterLockDto'
      responses:
        '201':
          description: The cluster lock object (new publish or idempotent retry for an existing lock_hash).
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ClusterLockResponse'
        '400':
          description: Invalid lock data
        '404':
          description: The cluster definition corresponding to this lock file was not found
        '500':
          description: An unknown error occurred
        '503':
          description: Too many lock validations in progress on this instance. Retry with backoff.
        '504':
          description: Lock validation exceeded the time limit (typically very large locks).
      summary: Push Distributed Validator Cluster Lock Data
      tags:
      - Cluster Lock
  /lock/verify:
    post:
      description: This endpoint verifies cluster lock data including BLS public keys and signatures created during the DKG phase.
      operationId: LockController_verifyClusterLock[0]
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterLockDto'
      responses:
        '200':
          description: Lock data is valid
        '400':
          description: Invalid lock data
        '500':
          description: An unknown error occurred
        '503':
          description: Too many lock validations in progress on this instance. Retry with backoff.
        '504':
          description: Lock validation exceeded the time limit (typically very large locks).
      summary: Verify Distributed Validator Cluster Lock Data
      tags:
      - Cluster Lock
  /v1/lock/verify:
    post:
      description: This endpoint verifies cluster lock data including BLS public keys and signatures created during the DKG phase.
      operationId: LockController_verifyClusterLock[1]_v1
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterLockDto'
      responses:
        '200':
          description: Lock data is valid
        '400':
          description: Invalid lock data
        '500':
          description: An unknown error occurred
        '503':
          description: Too many lock validations in progress on this instance. Retry with backoff.
        '504':
          description: Lock validation exceeded the time limit (typically very large locks).
      summary: Verify Distributed Validator Cluster Lock Data
      tags:
      - Cluster Lock
components:
  schemas:
    DistributedValidatorDto:
      type: object
      properties:
        distributed_public_key:
          type: string
          pattern: ^(0x|0h)?[0-9A-F]+$
          example: '0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6'
        public_shares:
          description: array of public shares of the distributed public key.
          type: array
          items:
            type: string
            pattern: ^(0x|0h)?[0-9A-F]+$
        deposit_data:
          description: Deposit data for validator activation.
          allOf:
          - $ref: '#/components/schemas/DepositDataDto'
        builder_registration:
          description: Pre-generated signed validator builder registration.
          allOf:
          - $ref: '#/components/schemas/BuilderRegistrationDto'
        partial_deposit_data:
          description: Deposit data for validator activation.
          allOf:
          - $ref: '#/components/schemas/DepositDataDto'
      required:
      - distributed_public_key
      - public_shares
      - deposit_data
      - builder_registration
      - partial_deposit_data
    ClusterLockPagedResponse:
      type: object
      properties:
        cluster_locks:
          type: array
          items:
            type: string
        total_active_stake_eth:
          type: number
          example: 128.5
        total_active_stake_usd:
          type: number
          example: 128.5
        unique_validat

# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/obol/refs/heads/main/openapi/obol-cluster-lock-api-openapi.yml