Cubist Signing API

The Signing API from Cubist — 21 operation(s) for signing.

OpenAPI Specification

cubist-signing-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: CubeSigner Account Signing API
  description: The CubeSigner management and signing service.
  contact:
    name: Cubist Inc.
    email: hello@cubist.dev
  version: v0.1.0
servers:
- url: https://gamma.signer.cubist.dev
  description: Testing and staging environment
- url: https://prod.signer.cubist.dev
  description: Production environment
security:
- Cognito: []
tags:
- name: Signing
paths:
  /v0/org/{org_id}/ava/sign/{ava_chain}/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign a serialized Avalanche C/X/P-Chain Message
      description: 'Sign a serialized Avalanche C/X/P-Chain Message


        Signs an Avalanche message with a given SecpEth (C-Chain messages) or

        SecpAva (X- and P-Chain messages) key. Currently signing C-Chain messages

        with SecpEth key must also be explicitly allowed via `AllowRawBlobSigning`

        policy.


        This is a pre-release feature.'
      operationId: avaSerializedTxSign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: ava_chain
        in: path
        description: Avalanche chain
        required: true
        schema:
          type: string
        example: P
      - name: pubkey
        in: path
        description: Avalanche address in bech32 or ETH format
        required: true
        schema:
          type: string
        example: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AvaSerializedTxSignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/SignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:ava
  /v0/org/{org_id}/ava/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign JSON-encoded Avalanche X- or P-Chain Message
      description: 'Sign JSON-encoded Avalanche X- or P-Chain Message


        Signs an Avalanche message with a given SecpAva key.

        This is a pre-release feature.'
      operationId: avaSign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: Avalanche bech32 address format without the chain prefix
        required: true
        schema:
          type: string
        example: avax1am4w6hfrvmh3akduzkjthrtgtqafalce6an8cr
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AvaSignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/SignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:ava
  /v0/org/{org_id}/babylon/cov/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign Babylon Covenant Committee Request
      description: 'Sign Babylon Covenant Committee Request


        Signs transactions relevant to a Babylon covenant committee signer,

        i.e., Schnorr and adaptor signatures for the unbonding, slashing, and

        slash-unbonding outputs of a Babylon staking transaction.'
      operationId: babylonCovSign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: hex-encoded public key
        required: true
        schema:
          type: string
        example: '0x03e38106dd76656bc68d02898ede1a911df8c793e46ac4eb37d26c266aae5d2a5a'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BabylonCovSignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/BabylonCovSignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:babylon:covenant
  /v0/org/{org_id}/babylon/registration/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign Babylon Staking Registration
      description: 'Sign Babylon Staking Registration


        Creates and signs the data needed to register a Phase-2 or Phase-3

        Babylon stake. This includes the deposit and unbonding transactions,

        two slashing transactions, the slashing signatures, and the proof of

        possession.


        Note that it is also possible to generate this registration data by

        making four calls to the Babylon staking API, plus one call to the

        PSBT signing API to generate the BIP-322 proof of possession. The

        registration API generates the same data but is easier to use.


        Note that this action can only be called with a Taproot key. If your

        deposit transaction spends UTXOs that are controlled by other keys,

        you can submit the ''deposit'' PSBT to the PSBT signing API one or more

        times to generate the required signatures.


        For more information, consult the

        [Babylon documentation](https://github.com/babylonlabs-io/babylon/blob/release/v1.x/docs/register-bitcoin-stake.md).


        This is a pre-release feature.'
      operationId: babylonRegistration
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: bech32 encoding of the public key
        required: true
        schema:
          type: string
        example: tb1pe4fgyn87pwku2xdptc2dtaeqzyx8wx89cqa6yntu8td49flpt5wq5k6hau
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BabylonRegistrationRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/BabylonRegistrationResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:babylon:registration
  /v0/org/{org_id}/babylon/staking/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign Babylon Staking Transaction
      description: 'Sign Babylon Staking Transaction


        Creates and signs transactions related to Babylon staking (i.e.,

        deposit, early unbond, withdrawal). The return value is a Pre-Signed

        Bitcoin Transaction (PSBT), as defined in BIP-174, which matches the

        format used in most Babylon tooling.


        The ''deposit'' action can be used with either Segwit (i.e., SecpBtc/SecpBtcTest)

        or Taproot (i.e., TaprootBtc/TaprootBtcTest) keys. The remaining actions can be

        used only with Taproot keys.


        This is a pre-release feature.'
      operationId: babylonStaking
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: bech32 encoding of the public key
        required: true
        schema:
          type: string
        example: tb1pe4fgyn87pwku2xdptc2dtaeqzyx8wx89cqa6yntu8td49flpt5wq5k6hau
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BabylonStakingRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/BabylonStakingResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:babylon:staking
  /v0/org/{org_id}/btc/message/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign a Bitcoin message.
      description: 'Sign a Bitcoin message.


        Signs a message using BIP137 message signing with a given Secp256k1 key.'
      operationId: btcMessageSign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: Address of a Segwit or Legacy bitcoin key
        required: true
        schema:
          type: string
        example: bc1q3r35u4th78h06d64mwmp3vpu8qmzya05pq8fwl
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BtcMessageSignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/BtcMessageSignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:btc:message:legacy
        - sign:btc:message:segwit
  /v0/org/{org_id}/btc/psbt/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign a Partially Signed Bitcoin Transaction (PSBT)
      description: 'Sign a Partially Signed Bitcoin Transaction (PSBT)


        Signs all inputs of the supplied PSBT v0 (BIP-174) that pertain to the

        ''pubkey'' specified in the request, which can be either a Taproot or a

        Segwit key. For Segwit keys, CubeSigner-specific deterministic tweaking

        can be applied to ''pubkey'' before signing, on a per-input basis. (See the

        CubeSigner documentation for more information on Segwit tweaking.)


        When calling with a segwit key the required scope is ''sign:btc:psbt:segwit''.

        For a taproot key, the scope is ''sign:btc:psbt:taproot''. Either type of key

        can be used with the ''sign:btc:psbt'' scope.


        This is a pre-release feature.'
      operationId: psbtSign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: bech32(m)-encoded segwit or taproot address
        required: true
        schema:
          type: string
        example: bc1p2wsldez5mud2yam29q22wgfh9439spgduvct83k3pm50fcxa5dps59h4z5
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PsbtSignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/PsbtSignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:btc:psbt:legacy
        - sign:btc:psbt:segwit
        - sign:btc:psbt:taproot
  /v0/org/{org_id}/btc/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign Bitcoin Segwit Transaction
      description: 'Sign Bitcoin Segwit Transaction


        Signs a Bitcoin Segwit transaction with a given key.

        This is a pre-release feature.'
      operationId: btcSign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: bech32-encoded segwit address
        required: true
        schema:
          type: string
        example: bc1q5p5qkae77ly80kr4pyfytdqm7rf08ddhdejl9g
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BtcSignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/SignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:btc:segwit
  /v0/org/{org_id}/btc/taproot/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign Bitcoin Taproot Transaction
      description: 'Sign Bitcoin Taproot Transaction


        Signs a Bitcoin Taproot transaction with a given key.

        This is a pre-release feature.'
      operationId: btcTaprootSign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: bech32m-encoded taproot address
        required: true
        schema:
          type: string
        example: bc1p2wsldez5mud2yam29q22wgfh9439spgduvct83k3pm50fcxa5dps59h4z5
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaprootSignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/SignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:btc:taproot
  /v0/org/{org_id}/diffie_hellman/{key_id}:
    post:
      tags:
      - Signing
      summary: Compute Diffie Hellman shared secret
      description: 'Compute Diffie Hellman shared secret


        For a set of elliptic curve points (P_1, ..., P_i), computes the Diffie Hellman

        shared secret (Q_1, ..., Qi) = (sk * P_1, ... sk * P_i), for sk the secret key.

        Points are specified in a curve-dependent format. See CubeSigner documentation

        for more details.


        The user can optionally specify a NIST P-256 public key, in which case the result

        will be encrypted to the public key using RFC9180 HPKE(P-256, HKDF-SHA256) with

        AES-256-GCM as the symmetric cipher. In this case, the resulting ciphertext will

        contain a serialized JSON blob containing the vector of shared secrets in the same

        order they were specified in the request.


        If the user does not specify a public key, the resulting shared secrets will be

        returned unencrypted. In this case, the caller should sample a random value r

        modulo the group order and mask the requested points as (r * P_1, ..., r * P_i).

        The result will be (r * sk * P_1, ..., r * sk * P_i), which can be unmasked by

        first computing r^-1, the multiplicative inverse of r modulo the group order,

        then computing a scalar multiplication of each returned point with r^-1.


        There is little practical security difference between these two approaches. The

        client is free to choose the one that is easier from an implementation perspective.'
      operationId: diffieHellmanExchange
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: key_id
        in: path
        description: ID of the desired Key
        required: true
        schema:
          type: string
        example: Key#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiffieHellmanRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/DiffieHellmanResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:diffieHellman
  /v0/org/{org_id}/evm/eip191/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign EIP-191 Data
      description: 'Sign EIP-191 Data


        Signs a message using EIP-191 personal_sign with a given Secp256k1 key.'
      operationId: eip191Sign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: Hex-encoded EVM address of the Secp256k1 key
        required: true
        schema:
          type: string
        example: '0x49011adbCC3bC9c0307BB07F37Dda1a1a9c69d2E'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Eip191SignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/SignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:evm:eip191
  /v0/org/{org_id}/evm/eip712/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign EIP-712 Typed Data
      description: 'Sign EIP-712 Typed Data


        Signs typed data according to EIP-712 with a given Secp256k1 key.'
      operationId: eip712Sign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: Hex-encoded EVM address of the Secp256k1 key
        required: true
        schema:
          type: string
        example: '0x49011adbCC3bC9c0307BB07F37Dda1a1a9c69d2E'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Eip712SignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/SignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:evm:eip712
  /v0/org/{org_id}/evm/eip7702/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign an EIP-7702 Authorization
      description: 'Sign an EIP-7702 Authorization


        Signs an EIP-7702 authorization tuple `(chain_id, address, nonce)` with a given

        Secp256k1 key. The resulting 65-byte signature (`r || s || y_parity`) can be used to

        assemble a `SignedAuthorization` for an EIP-7702 set-code transaction.'
      operationId: eip7702Sign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: Hex-encoded EVM address of the Secp256k1 key
        required: true
        schema:
          type: string
        example: '0x49011adbCC3bC9c0307BB07F37Dda1a1a9c69d2E'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Eip7702SignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/SignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:evm:eip7702
  /v0/org/{org_id}/solana/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign Solana Message
      description: 'Sign Solana Message


        Signs a Solana message with a given key.

        This is a pre-release feature.'
      operationId: solanaSign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: The base58-encoded public key
        required: true
        schema:
          type: string
        example: 86ZRPszBp5EoPj7wR3bHn7wnAZ5iYfpasRc7DKFPTUaZ
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SolanaSignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/SignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:solana
  /v0/org/{org_id}/sui/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign a serialized SUI transaction.
      description: 'Sign a serialized SUI transaction.


        This is a pre-release feature.'
      operationId: suiSign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: Hex-encoded SUI key address
        required: true
        schema:
          type: string
        example: '0xdd68d35a778db1e3123c950e5db5361333f57733a77486a704dd8c994d96761d'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SuiSignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/SignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:sui
  /v0/org/{org_id}/tendermint/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign a tendermint message.
      description: 'Sign a tendermint message.


        Signs the given base-64 encoded vote or proposal with the given tendermint key.'
      operationId: tendermintSign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: Hex-encoded validator public key with 0x prefix
        required: true
        schema:
          type: string
        example: '0x7d8d344e6e53151692fa78a098630799946ad4d6a027ae6bcd7a78dc78281650'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TendermintSignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/SignResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:tendermint
  /v1/org/{org_id}/blob/sign/{key_id}:
    post:
      tags:
      - Signing
      summary: Sign Raw Blob
      description: 'Sign Raw Blob


        Signs an arbitrary blob with a given key.


        - ECDSA signatures are serialized as big-endian r and s plus recovery-id

        byte v, which can in general take any of the values 0, 1, 2, or 3.


        - EdDSA signatures are serialized in the standard format.


        - BLS signatures are not supported on the blob-sign endpoint.'
      operationId: blobSign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: key_id
        in: path
        description: ID of the desired Key
        required: true
        schema:
          type: string
        example: Key#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BlobSignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/SignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:blob
  /v1/org/{org_id}/eth1/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign EVM Transaction
      description: 'Sign EVM Transaction


        Signs an Ethereum (and other EVM) transaction with a given Secp256k1 key.

        Returns an RLP-encoded transaction with EIP-155 signature.


        The key must be associated with the role and organization on whose behalf this action is called.'
      operationId: eth1Sign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: Hex-encoded ethereum address of the secp key
        required: true
        schema:
          type: string
        example: '0x49011adbCC3bC9c0307BB07F37Dda1a1a9c69d2E'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Eth1SignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/Eth1SignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:evm:tx
  /v1/org/{org_id}/eth2/sign/{pubkey}:
    post:
      tags:
      - Signing
      summary: Sign Validator Request
      description: 'Sign Validator Request


        Signs an eth2 validator request with a given BLS key.


        The key must be associated with the role and organization on whose behalf this action is called.'
      operationId: eth2Sign
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: pubkey
        in: path
        description: Hex-encoded validator (BLS) public key with 0x prefix
        required: true
        schema:
          type: string
        example: '0x9700fbb8c906942442c2a5b3ad7498f27aedda253786a6fbaa8fef47fb7af234e50cf2cce815a553087992ae565d48da'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Eth2SignRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/SignResponse'
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - sign:eth2:validate
  /v1/org/{org_id}/eth2/stake:
    post:
      tags:
      - Signing
      summary: Sign Stake Deposit
      description: 'Sign Stake Deposit


        Signs a deposit transaction with a `validator_key`. If `validator_key` is set to a pregenerated key, we use the

        provided validator key. Otherwise, we generate a new BLS key.


        When using a pregenerated key, the key must be associated with the role and organization on whose

        behalf this action is called.'
      operationId: stake
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      requestBody:
        content:
          application/json:
            schema:


# --- truncated at 32 KB (158 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cubist/refs/heads/main/openapi/cubist-signing-api-openapi.yml