Nym Technologies Nym Nodes API

The Nym Nodes API from Nym Technologies — 15 operation(s) for nym nodes.

Operations 15

GET /v1/nym-nodes/annotation/{node_id} #
GET /v1/nym-nodes/bonded #
GET /v1/nym-nodes/described #
GET /v1/nym-nodes/historical-performance/{node_id} #
GET /v1/nym-nodes/noise #
GET /v1/nym-nodes/performance-history/{node_id} #
GET /v1/nym-nodes/performance/{node_id} #
POST /v1/nym-nodes/refresh-described #
GET /v1/nym-nodes/rewarded-set #
GET /v1/nym-nodes/stake-saturation/{node_id} #
GET /v1/nym-nodes/uptime-history/{node_id} #
GET /v2/nym-nodes/annotation/{node_id} #
GET /v2/nym-nodes/described #
POST /v3/nym-nodes/stress-testing/batch-submit Accept a batch of stress-test results from an authorised network monitor orchestrator. #
GET /v3/nym-nodes/stress-testing/known-monitors/{identity_key} Report whether the given identity key is currently recognised by this nym-api as an authorised network monitor orchestrator. #

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/nym-technologies-nym-nodes-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 email required.

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

OpenAPI Specification

nym-technologies-nym-nodes-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Node Status API Status Nym Nodes API
  description: ''
  contact:
    name: Nym Technologies SA
  license:
    name: Apache-2.0
    identifier: Apache-2.0
  version: 4.6.2
servers:
- url: https://validator.nymtech.net/api
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Nym Nodes
paths:
  /v1/nym-nodes/annotation/{node_id}:
    get:
      tags:
      - Nym Nodes
      operationId: get_node_annotation
      parameters:
      - name: node_id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/u32'
      - name: output
        in: query
        required: false
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Output'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnnotationResponseV1'
            application/yaml:
              schema:
                $ref: '#/components/schemas/AnnotationResponseV1'
            application/bincode:
              schema:
                $ref: '#/components/schemas/AnnotationResponseV1'
  /v1/nym-nodes/bonded:
    get:
      tags:
      - Nym Nodes
      operationId: get_bonded_nodes
      parameters:
      - name: output
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/Output'
      - name: page
        in: query
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_NymNodeDetails'
            application/yaml:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_NymNodeDetails'
            application/bincode:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_NymNodeDetails'
  /v1/nym-nodes/described:
    get:
      tags:
      - Nym Nodes
      operationId: get_described_nodes
      parameters:
      - name: output
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/Output'
      - name: page
        in: query
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_NymNodeDescriptionV1'
            application/yaml:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_NymNodeDescriptionV1'
            application/bincode:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_NymNodeDescriptionV1'
      deprecated: true
  /v1/nym-nodes/historical-performance/{node_id}:
    get:
      tags:
      - Nym Nodes
      operationId: get_historical_performance
      parameters:
      - name: date
        in: query
        required: true
        schema:
          type: string
          format: date
      - name: output
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/Output'
      - name: node_id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/u32'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeDatePerformanceResponse'
            application/yaml:
              schema:
                $ref: '#/components/schemas/NodeDatePerformanceResponse'
            application/bincode:
              schema:
                $ref: '#/components/schemas/NodeDatePerformanceResponse'
  /v1/nym-nodes/noise:
    get:
      tags:
      - Nym Nodes
      operationId: nodes_noise
      parameters:
      - name: output
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/Output'
      - name: page
        in: query
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_NoiseDetails'
            application/yaml:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_NoiseDetails'
            application/bincode:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_NoiseDetails'
  /v1/nym-nodes/performance-history/{node_id}:
    get:
      tags:
      - Nym Nodes
      operationId: get_node_performance_history
      parameters:
      - name: output
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/Output'
      - name: page
        in: query
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: node_id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/u32'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PerformanceHistoryResponse'
            application/yaml:
              schema:
                $ref: '#/components/schemas/PerformanceHistoryResponse'
            application/bincode:
              schema:
                $ref: '#/components/schemas/PerformanceHistoryResponse'
  /v1/nym-nodes/performance/{node_id}:
    get:
      tags:
      - Nym Nodes
      operationId: get_current_node_performance
      parameters:
      - name: node_id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/u32'
      - name: output
        in: query
        required: false
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Output'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodePerformanceResponse'
            application/yaml:
              schema:
                $ref: '#/components/schemas/NodePerformanceResponse'
            application/bincode:
              schema:
                $ref: '#/components/schemas/NodePerformanceResponse'
  /v1/nym-nodes/refresh-described:
    post:
      tags:
      - Nym Nodes
      operationId: refresh_described
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodeRefreshBody'
        required: true
      responses: {}
  /v1/nym-nodes/rewarded-set:
    get:
      tags:
      - Nym Nodes
      operationId: rewarded_set
      parameters:
      - name: output
        in: query
        required: false
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Output'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RewardedSetResponse'
            application/yaml:
              schema:
                $ref: '#/components/schemas/RewardedSetResponse'
            application/bincode:
              schema:
                $ref: '#/components/schemas/RewardedSetResponse'
  /v1/nym-nodes/stake-saturation/{node_id}:
    get:
      tags:
      - Nym Nodes
      operationId: get_node_stake_saturation
      parameters:
      - name: node_id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/u32'
      - name: output
        in: query
        required: false
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Output'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakeSaturationResponse'
            application/yaml:
              schema:
                $ref: '#/components/schemas/StakeSaturationResponse'
            application/bincode:
              schema:
                $ref: '#/components/schemas/StakeSaturationResponse'
  /v1/nym-nodes/uptime-history/{node_id}:
    get:
      tags:
      - Nym Nodes
      operationId: get_node_uptime_history
      parameters:
      - name: output
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/Output'
      - name: page
        in: query
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: node_id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/u32'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PerformanceHistoryResponse'
            application/yaml:
              schema:
                $ref: '#/components/schemas/PerformanceHistoryResponse'
            application/bincode:
              schema:
                $ref: '#/components/schemas/PerformanceHistoryResponse'
  /v2/nym-nodes/annotation/{node_id}:
    get:
      tags:
      - Nym Nodes
      operationId: v2_get_node_annotation
      parameters:
      - name: node_id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/u32'
      - name: output
        in: query
        required: false
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/OutputV2'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnnotationResponseV2'
            application/yaml:
              schema:
                $ref: '#/components/schemas/AnnotationResponseV2'
  /v2/nym-nodes/described:
    get:
      tags:
      - Nym Nodes
      operationId: v2_get_described_nodes
      parameters:
      - name: output
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/Output'
      - name: page
        in: query
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_NymNodeDescriptionV2'
            application/yaml:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_NymNodeDescriptionV2'
            application/bincode:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_NymNodeDescriptionV2'
  /v3/nym-nodes/stress-testing/batch-submit:
    post:
      tags:
      - Nym Nodes
      summary: Accept a batch of stress-test results from an authorised network monitor orchestrator.
      description: "The batch is rejected unless all of the following hold:\n- the submission timestamp is within a short staleness window of the current time,\n- the signer's key is currently registered in the network-monitors contract,\n- the submission timestamp is strictly greater than the signer's previous accepted submission\n  (timestamp-based replay protection, so orchestrators don't need to keep a nonce counter),\n- the signature on the body verifies against the signer's key.\n\nIndividual result entries that fail per-entry validation (non-mixnode role, performance score\noutside `[0.0, 1.0]`) are logged as errors and dropped, but do not fail the batch."
      operationId: batch_submit_stress_testing_results
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignedMessage'
        required: true
      responses:
        '200':
          description: the submitted batch has been accepted and stored
        '400':
          description: the submitted request is stale or replayed
        '401':
          description: the submitted request was unauthorised or failed integrity check
  /v3/nym-nodes/stress-testing/known-monitors/{identity_key}:
    get:
      tags:
      - Nym Nodes
      summary: 'Report whether the given identity key is currently recognised by this nym-api as an

        authorised network monitor orchestrator.'
      description: 'Intended for orchestrators to self-check after (re)announcing their key on-chain - a

        successful response with `authorised: true` means this nym-api has picked up the chain change

        and is ready to accept stress-test submissions signed by that key.'
      operationId: known_network_monitor
      parameters:
      - name: identity_key
        in: path
        description: base58-encoded ed25519 identity key of the queried network monitor
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnownNetworkMonitorResponse'
        '400':
          description: the provided identity key is not a valid base58-encoded ed25519 public key
components:
  schemas:
    ChainInteractionCapabilities:
      type: object
      required:
      - has_sufficient_tokens
      - is_fee_grant_grantee
      properties:
        has_sufficient_tokens:
          type: boolean
        is_fee_grant_grantee:
          type: boolean
    NodeRewarding:
      type: object
      required:
      - cost_params
      - operator
      - delegates
      - total_unit_reward
      - unit_delegation
      - last_rewarded_epoch
      - unique_delegations
      properties:
        cost_params:
          $ref: '#/components/schemas/NodeCostParams'
          description: Information provided by the operator that influence the cost function.
        delegates:
          type: string
          description: Total delegation and compounded reward earned by all node delegators.
        last_rewarded_epoch:
          $ref: '#/components/schemas/u32'
          description: 'Marks the epoch when this node was last rewarded so that we wouldn''t accidentally attempt

            to reward it multiple times in the same epoch.'
        operator:
          type: string
          description: Total pledge and compounded reward earned by the node operator.
        total_unit_reward:
          type: string
          description: Cumulative reward earned by the "unit delegation" since the block 0.
        unique_delegations:
          type: integer
          format: int32
          minimum: 0
        unit_delegation:
          type: string
          description: Value of the theoretical "unit delegation" that has delegated to this node at block 0.
    PaginatedResponse_NoiseDetails:
      type: object
      required:
      - pagination
      - data
      properties:
        data:
          type: array
          items:
            type: object
            required:
            - key
            - mixnet_port
            - ip_addresses
            properties:
              ip_addresses:
                type: array
                items:
                  type: string
              key:
                $ref: '#/components/schemas/VersionedNoiseKeyV1'
              mixnet_port:
                type: integer
                format: int32
                minimum: 0
        pagination:
          $ref: '#/components/schemas/Pagination'
    NodeDatePerformanceResponse:
      type: object
      required:
      - node_id
      - date
      properties:
        date:
          type: string
          example: '1970-01-01'
        node_id:
          type: integer
          format: int32
          minimum: 0
        performance:
          type:
          - number
          - 'null'
          format: double
    NetworkRequesterDetailsV1:
      type: object
      required:
      - address
      - uses_exit_policy
      properties:
        address:
          type: string
          description: address of the embedded network requester
        uses_exit_policy:
          type: boolean
          description: flag indicating whether this network requester uses the exit policy rather than the deprecated allow list
    NymNodeAuxiliaryDetailsV1:
      type: object
      properties:
        accepted_operator_terms_and_conditions:
          type: boolean
          description: 'Specifies whether this node operator has agreed to the terms and conditions

            as defined at <https://nymtech.net/terms-and-conditions/operators/v1.0.0>'
        announce_ports:
          $ref: '#/components/schemas/AnnouncePortsV1'
        location:
          type:
          - string
          - 'null'
          description: Optional ISO 3166 alpha-2 two-letter country code of the node's **physical** location
          example: PL
    PerformanceHistoryResponse:
      type: object
      required:
      - node_id
      - history
      properties:
        history:
          $ref: '#/components/schemas/PaginatedResponse_HistoricalPerformanceResponse'
        node_id:
          type: integer
          format: int32
          minimum: 0
    AnnotationResponseV1:
      type: object
      required:
      - node_id
      properties:
        annotation:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/NodeAnnotationV1'
        node_id:
          type: integer
          format: int32
          minimum: 0
    IpPacketRouterDetailsV1:
      type: object
      required:
      - address
      properties:
        address:
          type: string
          description: address of the embedded ip packet router
    Pagination:
      type: object
      required:
      - total
      - page
      - size
      properties:
        page:
          type: integer
          format: int32
          minimum: 0
        size:
          type: integer
          minimum: 0
        total:
          type: integer
          minimum: 0
    NymNode:
      type: object
      description: Information provided by the node operator during bonding that are used to allow other entities to use the services of this node.
      required:
      - host
      - identity_key
      properties:
        custom_http_port:
          type:
          - integer
          - 'null'
          format: int32
          description: 'Allow specifying custom port for accessing the http, and thus self-described, api

            of this node for the capabilities discovery.'
          minimum: 0
        host:
          type: string
          description: 'Network address of this nym-node, for example 1.1.1.1 or foo.mixnode.com

            that is used to discover other capabilities of this node.'
        identity_key:
          type: string
          description: Base58-encoded ed25519 EdDSA public key.
    DetailedNodePerformanceV2:
      type: object
      required:
      - performance_score
      - routing_score
      - config_score
      - stress_testing_score
      properties:
        config_score:
          $ref: '#/components/schemas/ConfigScoreV2'
        performance_score:
          type: number
          format: double
          description: 'routing_score * config_score

            or

            routing_score * config_score * stress_testing_score, if enabled'
        routing_score:
          $ref: '#/components/schemas/RoutingScore'
        stress_testing_score:
          $ref: '#/components/schemas/StressTestingScore'
    VersionedNoiseKeyV1:
      type: object
      required:
      - supported_version
      - x25519_pubkey
      properties:
        supported_version:
          type: integer
          format: int32
          minimum: 0
        x25519_pubkey:
          type: string
    WebSocketsV1:
      type: object
      required:
      - ws_port
      properties:
        ws_port:
          type: integer
          format: int32
          minimum: 0
        wss_port:
          type:
          - integer
          - 'null'
          format: int32
          minimum: 0
    HostInformationV1:
      type: object
      required:
      - ip_address
      - keys
      properties:
        hostname:
          type:
          - string
          - 'null'
        ip_address:
          type: array
          items:
            type: string
        keys:
          $ref: '#/components/schemas/HostKeysV1'
    WireguardDetailsV1:
      type: object
      required:
      - port
      - public_key
      properties:
        metadata_port:
          type: integer
          format: int32
          minimum: 0
        port:
          type: integer
          format: int32
          minimum: 0
        public_key:
          type: string
        tunnel_port:
          type: integer
          format: int32
          minimum: 0
    NodeRefreshBody:
      type: object
      required:
      - node_identity
      - request_timestamp
      - signature
      properties:
        node_identity:
          type: string
        request_timestamp:
          type: integer
          format: int64
        signature:
          type: string
    PaginatedResponse_NymNodeDescriptionV2:
      type: object
      required:
      - pagination
      - data
      properties:
        data:
          type: array
          items:
            type: object
            required:
            - node_id
            - contract_node_type
            - description
            properties:
              contract_node_type:
                $ref: '#/components/schemas/DescribedNodeTypeV1'
              description:
                $ref: '#/components/schemas/NymNodeDataV2'
              node_id:
                type: integer
                format: int32
                minimum: 0
        pagination:
          $ref: '#/components/schemas/Pagination'
    DisplayRole:
      type: string
      enum:
      - entryGateway
      - layer1
      - layer2
      - layer3
      - exitGateway
      - standby
    NodeAnnotationV1:
      type: object
      required:
      - last_24h_performance
      - detailed_performance
      properties:
        current_role:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/DisplayRole'
        detailed_performance:
          $ref: '#/components/schemas/DetailedNodePerformanceV1'
        last_24h_performance:
          type: string
    CoinSchema:
      type: object
      title: Coin
      required:
      - denom
      - amount
      properties:
        amount:
          type: integer
          minimum: 0
        denom:
          type: string
    OutputV2:
      type: string
      enum:
      - json
      - yaml
    BlockHeader:
      type: object
      description: 'Block `Header` values contain metadata about the block and about the

        consensus, as well as commitments to the data in the current block, the

        previous block, and the results returned by the application.


        <https://github.com/tendermint/spec/blob/d46cd7f573a2c6a2399fcab2cde981330aa63f37/spec/core/data_structures.md#header>'
      required:
      - version
      - chain_id
      - height
      - time
      - validators_hash
      - next_validators_hash
      - consensus_hash
      - app_hash
      - proposer_address
      properties:
        app_hash:
          type: string
          description: State after txs from the previous block
        chain_id:
          type: string
          description: Chain ID
        consensus_hash:
          type: string
          description: Consensus params for the current block
        data_hash:
          type:
          - string
          - 'null'
          description: Merkle root of transaction hashes
        evidence_hash:
          type:
          - string
          - 'null'
          description: Hash of evidence included in the block
        height:
          type: integer
          format: int64
          description: Current block height
          minimum: 0
        last_block_id:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/BlockId'
            description: Previous block info
        last_commit_hash:
          type:
          - string
          - 'null'
          description: Commit from validators from the last block
        last_results_hash:
          type:
          - string
          - 'null'
          description: Root hash of all results from the txs from the previous block
        next_validators_hash:
          type: string
          description: Validators for the next block
        proposer_address:
          type: string
          description: Original proposer of the block
        time:
          type: string
          description: Current timestamp
        validators_hash:
          type: string
          description: Validators for the current block
        version:
          $ref: '#/components/schemas/HeaderVersion'
          description: Header version
    RewardedSetResponse:
      type: object
      required:
      - entry_gateways
      - exit_gateways
      - layer1
      - layer2
      - layer3
      - standby
      properties:
        entry_gateways:
          type: array
          items:
            $ref: '#/components/schemas/u32'
        epoch_id:
          type: integer
          format: int32
          minimum: 0
        exit_gateways:
          type: array
          items:
            $ref: '#/components/schemas/u32'
        layer1:
          type: array
          items:
            $ref: '#/components/schemas/u32'
        layer2:
          type: array
          items:
            $ref: '#/components/schemas/u32'
        layer3:
          type: array
          items:
            $ref: '#/components/schemas/u32'
        standby:
          type: array
          items:
            $ref: '#/components/schemas/u32'
    StressTestingScore:
      type: object
      required:
      - score
      - was_reachable
      properties:
        score:
          type: number
          format: double
        was_reachable:
          type: boolean
          description: 'Distinguishes a genuine zero score (node was tested and scored 0) from

            "node was unreachable" (no successful sample was collected). Consumers may use

            this to decide whether to penalise the node or treat the score as missing.'
    ChainBlocksStatusResponseBody:
      type: object
      required:
      - currentTime
      - chainStatus
      properties:
        chainStatus:
          $ref: '#/components/schemas/ChainStatus'
        currentTime:
          type: string
        latestCachedBlock:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/DetailedChainStatus'
    BlockInfo:
      type: object
      required:
      - block_id
      - block
      properties:
        block:
          $ref: '#/components/schemas/FullBlockInfo'
        block_id:
          $ref: '#/components/schemas/BlockId'
    FullBlockInfo:
      type: object
      required:
      - header
      properties:
        header:
          $ref: '#/components/schemas/BlockHeader'
    HostKeysV1:
      type: object
      required:
      - ed25519
      - x25519
      - current_x25519_sphinx_key
      properties:
        current_x25519_sphinx_key:
          $ref: '#/components/schemas/SphinxKeyV1'
        ed25519:
          type: string
        pre_announced_x25519_sphinx_key:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/SphinxKeyV1'
        x25519:
          type: string
          deprecated: true
        x25519_versioned_noise:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/VersionedNoiseKeyV1'
    DetailedChainStatus:
      type: object
      required:
      - abci
      - latest_block
      properties:
        abci:
          $ref: '#/components/schemas/AbciInfo'
        latest_block:
          $ref: '#/components/schemas/BlockInfo'
    AnnouncePortsV1:
      type: object
      properties:
        mix_port:
          type:
          - integer
          - 'null'
          format: int32
          minimum: 0
        verloc_port:
          type:
          - integer
          - 'null'
          format: int32
          minimum: 0
    SphinxKeyV1:
      type: object
      required:
      - rotation_id
      - public_key
      properties:
        public_key:
          type: string
        rotation_id:
          type: integer
          format: int32
          minimum: 0
    NodeAnnotationV2:
      type: object
      required:
      - detailed_performance
      properties:
        chain_interaction_capabilities:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/ChainInteractionCapabilitiesDetailed'
        current_role:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/DisplayRole'
        detailed_performance:
          $ref: '#/components/schemas/DetailedNodePerformanceV2'
    RoutingScore:
      type: object
      required:
      - score
      properties:
        score:
          type: number
          format: double
          description: Total score after taking all the criteria into consideration
    LewesProtocolDetailsV1:
      type: object
      required:
      - content
      - signature
      properties:
        content:
          $ref: '#/components/schemas/LewesProtocolDetailsDataV1'
        signature:
          type: string
    ConfigScoreV1:
      type: object
      required:
      - score
      - self_described_api_available
      - accepted_terms_and_conditions
      - runs_nym_node_binary
      properties:
        accepted_terms_and_conditions:
          type: boolean
        runs_nym_node_binary:
          type: boolean
        score:
          type: number
          format: double
          description: Total score after taking all the criteria into consideration
        self_described_api_available:
          type: boolean
        versions_behind:
          type:
          - integer
          - 'null'
          format: int32
          minimum: 0
    SignedMessage:
      type: object
      required:
      - body
      - signature
      properties:
        body:
          $ref: '#/components/schemas/ChainBlocksStatusResponseBody'
        signature:
          type: string
    DeclaredRolesV1:
      type: object
      required:
      - mixnode
      - entry
      - exit_nr
      - exit_ipr
      properties:
        entry:
          type: boolean
        exit_ipr:
          type: boolean
        exit_nr:
          type: boolean
        mixnode:
          type: boolean
    LewesProtocolDetailsDataV1:
      type: object
      required:
      - enabled
      - control_port
      - data_port
      - x25519
      - kem_keys
      properties:
        control_port:
          type: integer
          format: int32
          description: 'LP TCP control address (default: 41264) for establishing LP sessions'
          minimum: 0
        data_port:
          type: integer
          format: int32
          description: 'LP UDP data address (default: 51264) for Sphinx packets wrapped in LP'
          minimum: 0
        enabled:
          type: boolean
          description: 'Helper field that specifies whether the LP listener(s) is enabled on this node.

            It is directly controlled by the node''s role (i.e. it is enabled if it supports ''entry'' mode)'
        kem_keys:
          type: object
          description: 'Digests 

# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nym-technologies/refs/heads/main/openapi/nym-technologies-nym-nodes-api-openapi.yml