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: $ref: '#/components/schemas/StakeRequest' required: true responses: '200': $ref: '#/components/responses/StakeResponse' '202': description: '' content: application/json: schema: $ref: '#/components/schemas/AcceptedResponse' default: description: '' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - SignerAuth: - sign:eth2:stake /v1/org/{org_id}/eth2/unstake/{pubkey}: post: tags: - Signing summary: Sign Unstake Request description: 'Sign Unstake Request Handle unstaking request, producing a signed voluntary exit message that can be posted directly to the Beacon chain. The key must be associated with the role and organization on whose behalf this action is called.' operationId: unstake 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 required: true schema: type: string example: '0xa99a76ed7796f7be22d5b7e85deeb7c5677e88e511e0b337618f8c4eb61349b4bf2d153f649f7b53359fe8b94a38e44c' requestBody: content: application/json: schema: $ref: '#/components/schemas/UnstakeRequest' required: true responses: '200': $ref: '#/components/responses/UnstakeResponse' '202': description: '' content: application/json: schema: $ref: '#/components/schemas/AcceptedResponse' default: description: '' content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - SignerAuth: - sign:eth2:unstake components: schemas: BabylonCovStakeExpansionRequest: type: object description: Request to expand an active stake with additional funds. required: - previous_active_stake_tx - previous_staking_output_idx - previous_active_stake_unbonding_script - other_funding_output properties: other_funding_output: type: string description: 'The transaction output that is being used to fund the stake expansion. This is a Bitcoin consensus--encoded hex string.' previous_active_stake_tx: type: string description: 'The active staking transaction that is being expanded with this request. This is a Bitcoin consensus--encoded hex string.' example: 954ba118e7133b4bb3a67acc4f40cb9529aabbc01007229f7bfd85706850175d77d5cbe5e4c0ca67238d14afa47c51cc previous_active_stake_unbonding_script: type: string description: 'The unbonding script in the active staking transaction. This is a Bitcoin consensus--encoded hex string.' example: e133f5a923a07b9c7f6767cda171005b previous_staking_output_idx: type: integer format: int32 description: The index of the active stake output in the active staking transaction. example: 1 minimum: 0 NotFoundErrorCode: type: string enum: - UriSegmentMissing - UriSegmentInvalid - TotpNotConfigured - FidoKeyNotFound - FidoChallengeNotFound - TotpChallengeNotFound - UserExportRequestNotFound - UserExportCiphertextNotFound - OrgExportCiphertextNotFound - UploadObjectNotFound - PolicySecretNotFound - BucketMetaNotFound - TimestreamDisabled - CustomChainNotFound - InvitationNotFound - TransactionNotFound - EmailConfigNotFound VoluntaryExit: type: object description: 'An exit voluntarily submitted a validator who wishes to withdraw. The schema for this message is defined [here](https://github.com/ethereum/consensus-specs/blob/v1.0.1/specs/phase0/beacon-chain.md#signedvoluntaryexit).' required: - epoch - validator_index properties: epoch: $ref: '#/components/schemas/Epoch' validator_index: type: string description: Index of the exiting validator. example: '256' HttpRequestCmp: oneOf: - type: string description: The requests must match exactly. Any given MFA receipt can be used at most once. enum: - Eq - type: object required: - EvmTx properties: EvmTx: $ref: '#/components/schemas/EvmTxCmp' - type: object required: - SolanaTx properties: SolanaTx: $ref: '#/components/schemas/SolanaTxCmp' description: How to compare HTTP requests when verifying MFA receipt (see [MfaRequest::verify_request]) BadGatewayErrorCode: type: string enum: - Generic - CustomChainRpcError - EsploraApiError - SentryApiError - CallWebhookError - OAuthProviderError - OidcDisoveryFailed - OidcIssuerJwkEndpointUnavailable - SmtpServerUnavailable Fork: type: object description: 'Specifies a fork of the `BeaconChain`, to prevent replay attacks. The schema of `Fork` is defined in the [Beacon chain spec](https://github.com/ethereum/consensus-specs/blob/v1.0.1/specs/phase0/beacon-chain.md#fork).' required: - previous_version - current_version - epoch properties: current_version: type: string description: Current fork version. example: '0x43434343' epoch: $ref: '#/components/schemas/Epoch' previous_version: type: string description: Previous fork version. example: '0x42424242' example: current_version: '0x00001020' epoch: '0' previous_version: '0x00001020' SignerErrorCode: oneOf: - $ref: '#/components/schemas/SignerErrorOwnCodes' - $ref: '#/components/schemas/AcceptedValueCode' - $ref: '#/components/schemas/BadRequestErrorCode' - $ref: '#/components/schemas/BadGatewayErrorCode' - $ref: '#/components/schemas/NotFoundErrorCode' - $ref: '#/components/schemas/ForbiddenErrorCode' - $ref: '#/components/schemas/UnauthorizedErrorCode' - $ref: '#/components/schemas/PreconditionErrorCode' - $ref: '#/components/schemas/TimeoutErrorCode' - $ref: '#/components/schemas/ConflictErrorCode' - $ref: '#/components/schemas/InternalErrorCode' DiffieHellmanRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - points properties: points: type: array items: type: string description: 'The set of serialized elliptic curve points from which to compute shared secrets. The serialization format of these points depends on the key type; see the CubeSigner documentation for more information.' maxItems: 32 minItems: 1 public_key: type: string description: 'An optional NIST P-256 public key (base64-encoded SEC1 with or without compression). If provided, the response will be encrypted to this public key using RFC9180 HPKE-DHKEM(P-256, HKDF-SHA256) with AES-256-GCM as the symmetric cipher. If no public key is specified, the results will be returned unencrypted. In this case, the input points should be masked with a random scalar to avoid leaking the shared secret in the response; the results can be unmasked via point multiplication with the inverse of the masking scalar.' example: AkpLT/3dXApJzXSduaPQ7apyT0ADBwqkt1es/aT0iWWf nullable: true BabylonStakingRequest: oneOf: - allOf: - $ref: '#/components/schemas/BabylonStakingDeposit' - type: object required: - action properties: action: type: string enum: - deposit - allOf: - $ref: '#/components/schemas/BabylonStakingEarlyUnbond' - type: object required: - action properties: action: type: string enum: - early_unbond - allOf: - $ref: '#/components/schemas/BabylonStakingWithdrawal' - type: object required: - action properties: action: type: string enum: - withdraw_timelock - allOf: - $ref: '#/components/schemas/BabylonStakingWithdrawal' - type: object required: - action properties: action: type: string enum: - withdraw_early_unbond - allOf: - $ref: '#/components/schemas/BabylonStakingWithdrawal' - type: object required: - action properties: action: type: string enum: - withdraw_slashing - allOf: - $ref: '#/components/schemas/BabylonStakingEarlyUnbond' - type: object required: - action properties: action: type: string enum: - slash_deposit - allOf: - $ref: '#/components/schemas/BabylonStakingEarlyUnbond' - type: object required: - action properties: action: type: string enum: - slash_early_unbond description: The actions possible via the Babylon Staking endpoint discriminator: propertyName: action DepositType: type: string description: The type of deposit to perform enum: - Canonical - Wrapper ClientSessionInfo: type: object description: 'Session information sent to the client. This struct works in tandem with its server-side counterpart [`SessionData`].' required: - session_id - auth_token - refresh_token - epoch - epoch_token - auth_token_exp - refresh_token_exp properties: auth_token: type: string description: Token to use for authorization. auth_token_exp: $ref: '#/components/schemas/EpochDateTime' epoch: type: integer format: int32 description: Epoch at which the token was last refreshed minimum: 0 epoch_token: $ref: '#/components/schemas/B32' refresh_token: type: string description: Token to use for refreshing the `(auth, refresh)` token pair refresh_token_exp: $ref: '#/components/schemas/EpochDateTime' session_id: type: string description: Session ID PrevOutputs: oneOf: - type: object required: - One properties: One: type: object description: '`One` variant allows provision of the single previous output needed. It''s useful, for example, when modifier `SIGHASH_ANYONECANPAY` is provided, only previous output of the current input is needed. The first `index` argument is the input index this output is referring to.' required: - index - tx_out properties: index: type: integer minimum: 0 tx_out: $ref: '#/components/schemas/BtcTxOut' - type: object required: - All properties: All: type: array items: $ref: '#/components/schemas/BtcTxOut' description: 'When `SIGHASH_ANYONECANPAY` is not provided, or when the caller is giving all previous outputs so the same variable can be used for multiple inputs.' description: Contains outputs of previous transactions. BinanceDryRunArgs: type: object required: - method - url properties: method: type: string description: The Binance API method that would have been used url: type: string description: The Binance API url method that would have been called BabylonCovSignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - staking_tx - slashing_tx - unbonding_tx - slash_unbonding_tx - staking_output_idx - slashing_script - unbonding_script - unbonding_slashing_script - fp_enc_keys properties: fp_enc_keys: type: array items: type: string description: 'The keys for the finality providers to which this transaction is being staked. Each key is a hex string containing a SEC1-encoded secp256k1 public key.' example: - 03b573e318803fd7aee1be5b6b18d496cc60ecc52429dbd477a879217c3ed26a795cb4f4e880aaff3a6ad66335e5404fa51caeb4964f0c9f7562737864e3bde5bc slash_unbonding_tx: type: string description: 'The slash-unbonding transaction being approved by the covenant signer. This is a Bitcoin consensus--encoded hex string.' example: 6899b5baf713a2c60e6abf05e8909440d41dc4125b98891c332f7087daf017fb2436286e2aa097464d9c927d644fa6de slashing_script: type: string description: 'The slashing script in the staking transaction. This is a Bitcoin consensus--encoded hex string.' example: 877f05cc626dedcf53b50eeba0821ca0 slashing_tx: type: string description: 'The slashing transaction being approved by the covenant signer. This is a Bitcoin consensus--encoded hex string.' example: f37e7ca2b24a5f7b8b6c9ba054f9932efb047ce80cf50a118e3f72751429fb13a355fa093bd358cdc30efacf5a62cabe stake_expansion: allOf: - $ref: '#/components/schemas/BabylonCovStakeExpansionRequest' nullable: true staking_output_idx: type: integer format: int32 description: The output index of the Babylon staking scripts in the staking transaction. example: 1 minimum: 0 staking_tx: type: string description: 'The staking transaction being approved by the covenant signer. This is a Bitcoin consensus--encoded hex string.' example: 954ba118e7133b4bb3a67acc4f40cb9529aabbc01007229f7bfd85706850175d77d5cbe5e4c0ca67238d14afa47c51cc unbonding_script: type: string description: 'The unbonding script in the staking transaction. This is a Bitcoin consensus--encoded hex string.' example: 55f6638c0c0c0b0e51ca922e0e9e6abd unbonding_slashing_script: type: string description: 'The slashing script in the unbonding transaction. This is a Bitcoin consensus--encoded hex string.' example: e133f5a923a07b9c7f6767cda171005b unbonding_tx: type: string description: 'The unbonding transaction being approved by the covenant signer. This is a Bitcoin consensus--encoded hex string.' example: 969cb95129a55a96d51919f5f67f3adc597ecdee6eda21e7777f370c3b1809336ee7d08ec574c8bbb361ff63d032a976 DepositTxn: type: object description: Information produced by a successful deposit required: - new_validator_pk - chain_id - deposit_txn properties: chain_id: type: integer format: int64 description: Chain ID for which the deposit transaction was created minimum: 1 deposit_txn: type: object description: The deposit transaction. Includes only `to`, `value`, and `data` fields. new_validator_pk: type: string description: The hex-encoded compressed form of the new validator BLS public key example: chain_id: 5 deposit_txn: data: 0x... to: '0xff50ed3d0ec03ac01d4c79aad74928bff48a7b2b' value: '0x1bc16d674ec800000' new_validator_pk: 9700fbb8c906942442c2a5b3ad7498f27aedda253786a6fbaa8fef47fb7af234e50cf2cce815a553087992ae565d48da SignerErrorOwnCodes: type: string enum: - PreComputed - StatusCodeWithMessage - JrpcError - UnhandledError - ProxyStartError - EnclaveError - PolicyErrorWithEvalTree - RpcApi BtcSighashType: type: string enum: - All - None - Single - AllPlusAnyoneCanPay - NonePlusAnyoneCanPay - SinglePlusAnyoneCanPay BlobSignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - message_base64 properties: adaptor_pk: type: string description: 'An optional base64 string comprising a SEC1-encoded secp256k1 public key. This field can be used *only* with Schnorr keys. If this field is present, the response will be a Schnorr adaptor signature in the format specified by Blockstream for use in libsecp256k1-zkp. See for more information.' example: Arny4WoHDNBVXYcynhNl9/y7JttJ2rk0CCRfLR7t3aDg nullable: true bls_dst: type: string description: 'An optional domain separation tag for use *only* with BLS signing requests. This field must not be supplied for requests involving non-BLS key types. If this field is not present or null, the domain separation tag specified in the IETF BLS Signatures draft versions 4 and 5, section 4.2.3 (minimal pubkey size variant) is used. Otherwise, this field must contain a base-64 string encoding a non-empty byte vector. When using a custom tag, RFC9380 (Section 3.1) recommends a length of at least 16 bytes.' example: EbbLvCxI7gan71iISDsfr46etOv606QkGGDP5PpVl5Q= nullable: true message_base64: type: string description: 'The blob to sign, encoded as a base64 string. Note that certain signing keys impose additional requirements on the contents of the message. For example, Secp256k1 keys require that the message is 32 bytes long.' segwit_tweak: type: string description: 'An optional tweak value for use only with (some) secp256k1 key types. This field must not be supplied for requests involving any other key type. If this field is not present or null, no tweak is applied. Otherwise, this field must contain a base-64 string encoding a vector of exactly 32 bytes. See the CubeSigner documentation for more information on the Segwit tweaking procedure.' example: F41HAy2q5Gn8laF2CuMsZbRAQTmD+4Ob3VUMZ7TBGK4= nullable: true taproot_tweak: type: string description: 'An optional tweak value for use *only* with Taproot keys. This field must not be supplied for requests involving any other key type. If this field is not present or null, no tweak is applied. If the field is an empty string, the key is tweaked with an unspendable script path per BIP0341. Otherwise, this field must contain a 32-byte, base-64 string representing the Merkle root with which to tweak the key before signing.' example: F41HAy2q5Gn8laF2CuMsZbRAQTmD+4Ob3VUMZ7TBGK4= nullable: true example: message_base64: YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTYK Status: type: object required: - count - num_auth_factors - allowed_approvers - approved_by properties: allowed_approvers: type: array items: type: string description: Users who are allowed to approve. Must be non-empty. allowed_mfa_types: type: array items: $ref: '#/components/schemas/MfaType' description: Allowed approval types. When omitted, defaults to any. nullable: true approved_by: type: object description: Users who have already approved additionalProperties: type: object additionalProperties: $ref: '#/components/schemas/ApprovalInfo' count: type: integer format: int32 description: How many users must approve minimum: 0 num_auth_factors: type: integer format: int32 description: How many auth factors to require per user minimum: 0 request_comparer: $ref: '#/components/schemas/HttpRequestCmp' FeeType: type: string description: 'This type specifies the interpretation of the `fee` field in Babylon staking requests. If `sats`, the field is intpreted as a fixed value in sats. If `sats_pr_vb`, the field is interpreted as a rate and the fee is computed by estimating the weight of the output transaction.' enum: - sats - sats_per_kwu - sats_per_vb MfaRequiredArgs: type: object required: - id - ids - org_id properties: id: type: string description: Always set to first MFA id from `Self::ids` ids: type: array items: type: string minLength: 1 description: Non-empty MFA request IDs org_id: type: string description: Organization id policy_eval_tree: description: Optional policy evaluation tree (included in signer responses, when requested) nullable: true session: allOf: - $ref: '#/components/schemas/NewSessionResponse' nullable: true B32: type: string description: Wrapper around a zeroizing 32-byte fixed-size array Eip7702SignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - address - chain_id - nonce properties: address: type: string description: 'The address to delegate to (the target of the authorization), as hex-encoded bytes. Must be exactly 20 bytes.' example: '0x1100000000000000000000000000000000000011' chain_id: type: integer format: int64 description: 'The chain id for which this authorization is valid. A value of `0` means the authorization is valid on any chain that supports EIP-7702.' minimum: 0 nonce: type: integer format: int64 description: The nonce of the authorizing account. minimum: 0 tweak: type: string description: 'An optional tweak value that will be applied to the secret key before signing. This field must contain a base-64 string encoding a vector of exactly 32 bytes. See the CubeSigner documentation for more information on the tweaking procedure.' example: F41HAy2q5Gn8laF2CuMsZbRAQTmD+4Ob3VUMZ7TBGK4= nullable: true PsbtSignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - psbt properties: psbt: type: string description: 'A hex-serialized PSBT (version 0), with or without leading 0x prefix. This PSBT must contain the transaction inputs and outputs, plus all information needed to sign (e.g., taproot path and leaf information).' sign_all_scripts: type: boolean description: 'When true, unconditionally sign every input to the PSBT controlled by a script spend. Otherwise (false, the default), this endpoint uses a heuristic to decide whether the script controlling a given UTXO requires a signature from this key.' description: A request to sign a PSBT Eip712SignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - typed_data - chain_id properties: chain_id: type: integer format: int64 description: The chain-id to which this typed data will be sent minimum: 1 tweak: type: string description: 'An optional tweak value that will be applied to the secret key before signing. This field must contain a base-64 string encoding a vector of exactly 32 bytes. See the CubeSigner documentation for more information on the tweaking procedure.' example: F41HAy2q5Gn8laF2CuMsZbRAQTmD+4Ob3VUMZ7TBGK4= nullable: true typed_data: $ref: '#/components/schemas/TypedData' example: chain_id: 1337 typed_data: domain: chainId: 1337 name: Ether Mail salt: '0x0000000000000000000000000000000000000000000000000000000000000000' verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC' version: '1' message: contents: Hello, Bob! from: name: Cow wallets: - '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826' - '0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF' to: name: Bob wallets: - '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB' - '0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57' - '0xB0B0b0b0b0b0B000000000000000000000000000' primaryType: Mail types: EIP712Domain: - name: name type: string - name: version type: string - name: chainId type: uint256 - name: verifyingContract type: address - name: salt type: bytes32 Group: - name: name type: string - name: members type: Person[] Mail: - name: from type: Person - name: to type: Person - name: contents type: string Person: - name: name type: string - name: wallets type: address[] SolanaTxCmp: type: object properties: ignore_blockhash: type: boolean description: Whether the 'recent_blockhash' property of the Solana transaction is allowed to be different. InternalErrorCode: type: string enum: - NoMaterialId - InvalidAuditLogEntry - UnexpectedCheckerRule - UnresolvedPolicyReference - UnexpectedAclAction - FidoKeyAssociatedWithMultipleUsers - ClaimsParseError - InvalidThrottleId - InvalidEmailAddress - EmailTemplateRender - OidcIdentityHeaderMissing - OidcIdentityParseError - SystemTimeError - PasswordHashParseError - SendMailError - ReqwestError - EmailConstructionError - TsWriteError - TsQueryError - DbQueryError - DbGetError - DbDeleteError - DbPutError - DbUpdateError - SerdeError - TestAndSetError - DbGetItemsError - DbWriteError - CubistSignerError - CwListMetricsError - CwPutMetricDataError - GetAwsSecretError - SecretNotFound - KmsGenerateRandomError - MalformedTotpBytes - KmsGenerateRandomNoResponseError - CreateKeyError - ParseDerivationPathError - SplitSignerError - CreateImportKeyError - CreateEotsNoncesError - EotsSignError - BabylonCovSignError - CognitoDeleteUserError - CognitoListUsersError - CognitoGetUserError - MissingUserEmail - CognitoResendUserInvitation - CognitoSetUserPasswordError - GenericInternalError - AssumeRoleWithoutEvidence - OidcAuthWithoutOrg - MissingKeyMetadata - KmsEnableKeyError - KmsDisableKeyError - LambdaInvokeError - LambdaNoResponseError - LambdaFailure - LambdaUnparsableResponse - SerializeEncryptedExportKeyError - DeserializeEncryptedExportKeyError - ReEncryptUserExport - S3UploadError - S3DownloadError - S3CopyError - S3ListObjectsError - S3DeleteObjectsError - S3BuildError - S3PresignedUrlError - ManagedStateMissing - InternalHeaderMissing - InvalidInternalHeaderValue - RequestLocalStateAlreadySet - OidcOrgMismatch - OidcIssuerInvalidJwk - InvalidPkForMaterialId - SegwitTweakFailed - UncheckedOrg - SessionOrgIdMissing - AvaSignCredsMissing - AvaSignSignatureMissing - ExpectedRoleSession - InvalidThirdPartyIdentity - CognitoGetUser - SnsSubscribeError - SnsUnsubscribeError - SnsGetSubscriptionAttributesError - SnsSubscriptionAttributesMissing - SnsSetSubscriptionAttributesError - SnsPublishBatchError - InconsistentMultiValueTestAndSet - MaterialIdError - InvalidBtcAddress - HistoricalTxBodyMissing - InvalidOperation - ParentOrgNotFound - OrgParentLoop - ResolvedParentOrgWithNoScopeCeiling - InvalidUploadObjectId - PolicyEngineNotFound - PolicyEngineError - PolicySecretsEncryptionError - CreatePolicyImportKeyError - InvalidAlias - EmptyUpdateModifiedObject - EmptyUpdateModifiedActions - DbContactAddressesInvalid - InvalidEvmSigedRlp - InvalidErc20Data - InvalidRpcUrl EvmTxDepositErrorCode: type: string enum: - EvmTxDepositReceiverMismatch - EvmTxDepositEmptyData - EvmTxDepositEmptyChainId - EvmTxDepositEmptyReceiver - EvmTxDepositUnexpectedValue - EvmTxDepositUnexpectedDataLength - EvmTxDepositNoAbi - EvmTxDepositNoDepositFunction - EvmTxDepositUnexpectedFunctionName - EvmTxDepositUnexpectedValidatorKey - EvmTxDepositInvalidValidatorKey - EvmTxDepositMissingDepositArg - EvmTxDepositWrongDepositArgType - EvmTxDepositValidatorKeyNotInRole - EvmTxDepositUnexpectedWithdrawalCredentials - EvmTxDepositUnresolvedRole - EvmTxDepositInvalidDepositEncoding Eip191SignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - data properties: data: type: string description: EIP-191 data to sign as hex-encoded bytes. example: '0xdeadbeef13c0ffee' tweak: type: string description: 'An optional tweak value that will be applied to the secret key before signing. This field must contain a base-64 string encoding a vector of exactly 32 bytes. See the CubeSigner documentation for more information on the tweaking procedure.' example: F41HAy2q5Gn8laF2CuMsZbRAQTmD+4Ob3VUMZ7TBGK4= nullable: true ErrorResponse: type: object description: The structure of ErrorResponse must match the response template that AWS uses required: - message - error_code properties: accepted: allOf: - $ref: '#/components/schemas/AcceptedValue' nullable: true error_code: $ref: '#/components/schemas/SignerErrorCode' message: type: string description: Error message policy_eval_tree: description: Optional policy evaluation tree (included in signer responses, when requested) nullable: true request_id: type: string description: Optional request identifier AcceptedValueCode: type: string enum: - SignDryRun - BinanceDryRun - BybitDryRun - CoinbaseDryRun - MfaRequired BybitDryRunArgs: type: object required: - method - url - payload properties: method: type: string description: The Bybit API method that would have been used payload: type: string description: The request body (for POST endpoints) or query string (for GET endpoints). url: type: string description: The Bybit API url that would have been called SignDryRunArgs: type: object required: - mfa_requests properties: mfa_requests: type: array items: $ref: '#/components/schemas/MfaRequestInfo' description: Whether MFA is required policy_eval_tree: description: Optional policy evaluation tree, if requested nullable: true BabylonStakingParams: type: object description: 'Parameter set for Babylon staking. The latest parameter sets are available from ' required: - version - activation_height - covenant_pks - covenant_quorum - unbonding_time - unbonding_fee - max_staking_amount - min_staking_amount - max_staking_time - min_staking_time properties: activation_height: type: integer format: int64 description: Block height at which these params will enter use minimum: 0 covenant_pks: type: array items: type: string description: Public keys of the covenant signers covenant_quorum: type: integer description: Quorum for covenant signer minimum: 0 max_staking_amount: type: integer format: int64 description: Max amount that can be staked in a single txn minimum: 0 max_staking_time: type: integer format: int32 description: Max timelock for staking minimum: 0 min_staking_amount: type: integer format: int64 description: Min amount that must be staked minimum: 0 min_staking_time: type: integer format: int32 description: Min timelock for staking minimum: 0 slashing_fee: type: integer format: int64 description: Minimum fee (in sats) that must be paid as part of the slashing txn minimum: 0 slashing_margin: type: integer format: int64 description: 'An extra number of sats to slash in the slashing txn. This can be used to ensure that the transaction meets the minimum slashing requirement even if the covenant committee members use floats to compute the amount that should be slashed. The default is 2; it should not be necessary to go higher than this.' nullable: true minimum: 0 slashing_pk_script: type: string description: 'The pk_script value for the 0th output index of a slashing transaction, serialized as a hex byte string. This value must be present to create slashing signatures.' nullable: true slashing_rate: type: string description: The fraction of stake slashed if a double-sign is detected nullable: true tag: type: string description: 'Bitcoin transaction tag for staking metadata. If present, an identifiable staking output (i.e., one with an OP_RETURN) will be created.' nullable: true unbonding_fee: type: integer format: int64 description: Fee (in sats) that must be spent as part of the unbonding txn minimum: 0 unbonding_time: type: integer format: int32 description: Min timelock for an unbonding script minimum: 0 version: type: integer format: int32 description: Parameter version minimum: 0 UnstakeRequest: allOf: - type: object description: Unstake message request. required: - network - fork - validator_index - genesis_data properties: epoch: allOf: - $ref: '#/components/schemas/Epoch' nullable: true fork: $ref: '#/components/schemas/Fork' genesis_data: $ref: '#/components/schemas/GenesisData' network: $ref: '#/components/schemas/Network' validator_index: type: string description: 'Validator index (`uint64`) to exit. You can get the validator index from the Beacon node''s `/eth/v1/beacon/states/head/validators/{pubkey}` end-point. This end point returns an object that contains information about the validator (whose public key is `{pubkey}`), including the validator index. The schema of this end-point is defined [here](https://ethereum.github.io/beacon-APIs/#/Beacon/getStateValidator).' example: '31337' - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object SuiSignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - tx properties: tx: type: string description: 'Base64-encoding of a BCS-serialized SUI transaction. When using the SUI TypeScript SDK, these bytes are returned by the `Transaction.build()` method.' description: Request to sign a serialized SUI transaction BtcTx: type: object example: input: - previous_output: 77541aeb3c4dac9260b68f74f44c973081a9d4cb2ebe8038b2d70faa201b6bdb:1 script_sig: '' sequence: 4294967294 witness: [] lock_time: 1170 output: - script_pubkey: 76a914a457b684d7f0d539a46a45bbc043f35b59d0d96388ac value: 199996600 - script_pubkey: 76a914fd270b1ee6abcaea97fea7ad0402e8bd8ad6d77c88ac value: 800000000 version: 1 Transaction: $ref: '#/components/schemas/TypedTransaction' UnsafeConf: type: object description: Options that should be set only for local devnet testing. properties: deposit_contract_addr: type: string description: The hex-encoded address of the deposit contract. If omitted, inferred from `chain_id` example: '0xff50ed3d0ec03ac01d4c79aad74928bff48a7b2b' nullable: true genesis_fork_version: type: string description: The hex-encoded 4-byte fork version example: '0x00001020' nullable: true TaprootSignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - sig_kind - tx properties: sig_kind: $ref: '#/components/schemas/TaprootSignatureKind' tx: $ref: '#/components/schemas/BtcTx' AcceptedResponse: allOf: - $ref: '#/components/schemas/ErrorResponse' - type: object EvmTxCmp: type: object properties: grace: type: integer format: int64 description: 'To prevent replay attacks, any given MFA receipt is normally allowed to be used only once. In this case, however, because EVM transactions already have a replay prevention mechanism (namely the ''nonce'' property), we allow the user to specify a grace period (in seconds) to indicate how long an MFA receipt should remain valid after its first use. Note that we allow both ''grace'' and ''ignore_nonce'' to be set because once an MFA request enters its grace period we unconditionally set its ''ignore_nonce'' property to ''false'' to ensure that any subsequent requests that claim the same receipt must sign for the same nonce as the request we signed originally with that receipt. Also note that the grace period cannot extend the lifetime of an MFA request beyond its original expiration date. The grace period must not be greater than 30 days.' nullable: true minimum: 0 ignore_gas: type: boolean description: Whether the 'gas' property of the EVM transaction is allowed to be different. ignore_nonce: type: boolean description: Whether the 'nonce' property of the EVM transaction is allowed to be different. AvaSignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - tx properties: tx: type: object description: 'Transaction to sign. Examples: - {"P": { "AddPermissionlessValidator": [TxJson](https://github.com/ava-labs/avalanche-rs/blob/avalanche-types-v0.1.3/crates/avalanche-types/src/platformvm/txs/add_permissionless_validator.rs#L14) }} - {"P": { "AddSubnetValidator": [TxJson](https://github.com/ava-labs/avalanche-rs/blob/avalanche-types-v0.1.3/crates/avalanche-types/src/platformvm/txs/add_subnet_validator.rs#L29) }} - {"P": { "AddValidator": [TxJson](https://github.com/ava-labs/avalanche-rs/blob/avalanche-types-v0.1.3/crates/avalanche-types/src/platformvm/txs/add_validator.rs#L12) }} - {"P": { "CreateChain": [TxJson](https://github.com/ava-labs/avalanche-rs/blob/avalanche-types-v0.1.3/crates/avalanche-types/src/platformvm/txs/create_chain.rs#L8) }} - {"P": { "CreateSubnet": [TxJson](https://github.com/ava-labs/avalanche-rs/blob/avalanche-types-v0.1.3/crates/avalanche-types/src/platformvm/txs/create_subnet.rs#L8) }} - {"P": { "Export": [TxJson](https://github.com/ava-labs/avalanche-rs/blob/avalanche-types-v0.1.3/crates/avalanche-types/src/platformvm/txs/export.rs#L12) }} - {"P": { "Import": [TxJson](https://github.com/ava-labs/avalanche-rs/blob/avalanche-types-v0.1.3/crates/avalanche-types/src/platformvm/txs/import.rs#L12) }} - {"X": { "Base": [TxJson](https://github.com/ava-labs/avalanche-rs/blob/avalanche-types-v0.1.3/crates/avalanche-types/src/avm/txs/mod.rs#L21) }} - {"X": { "Export": [TxJson](https://github.com/ava-labs/avalanche-rs/blob/avalanche-types-v0.1.3/crates/avalanche-types/src/avm/txs/export.rs#L16) }} - {"X": { "Import": [TxJson](https://github.com/ava-labs/avalanche-rs/blob/avalanche-types-v0.1.3/crates/avalanche-types/src/avm/txs/import.rs#L14) }}' description: Request to sign an Avalanche transaction BabylonRegistrationRequest: allOf: - allOf: - type: object description: Data needed to create the Babylon deposit scripts required: - network - staker_pk - finality_provider_pks - lock_time properties: explicit_params: allOf: - $ref: '#/components/schemas/BabylonStakingParams' nullable: true finality_provider_pks: type: array items: type: string description: 'The Schnorr public key (i.e., 32-byte X-coordinate) of the finality provider to which the stake is delegated.' lock_time: type: integer format: int32 description: The lock time used for the withdrawal output in the staking deposit transaction minimum: 0 network: $ref: '#/components/schemas/BabylonNetworkId' staker_pk: type: string description: 'The Schnorr public key (i.e., 32-byte X-coordinate) of the staker. This is the key that signs the slashing, withdrawal, and unbonding scripts.' version: type: integer format: int32 description: The parameter version to use. If `None`, uses the latest version. nullable: true minimum: 0 - type: object required: - psbt - value - change - fee - fee_type properties: change: type: string description: The change address, specified as a Bitcoin spend script fee: type: integer format: int64 description: 'The transaction fee value. The `fee_type` field determines whether this is a fixed fee in sats or a rate in sats per (estimated) virtual byte of transaction weight (i.e., sats per vb).' minimum: 0 fee_type: $ref: '#/components/schemas/FeeType' ignore_psbt_outputs: type: boolean description: 'By default, the PSBT in this request can only specify transaction inputs: PSBTs that specify outputs will result in an error. When this flag is set, existing outputs in the PSBT will instead be ignored (i.e., deleted from the PSBT) when creating the deposit transaction.' psbt: type: string description: 'A hex-serialized PSBT (version 0) containing the transaction inputs and all necessary information for signing (e.g., taproot path and leaf information). This PSBT must not have any transaction outputs; they will be added to the returned PSBT.' value: type: integer format: int64 description: The value to be staked in sats minimum: 0 description: Data needed to create a Babylon deposit transaction - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - bbn_addr properties: bbn_addr: type: string description: 'The Babylon address that will receive the staking rewards for this deposit. Babylon requires this to be the same address that registers the deposit on the Babylon chain. This must be a secp256k1 Cosmos address with either a `bbn` or a `cosmos` human-readable part (i.e., `bbn1...` or `cosmos1...`). The latter lets you specify the material-id of a SecpCosmos CubeSigner key.' example: bbn1n5anmc0kkrh70yjy7f6f399c74yd09xl5teffm description: Babylon staking registration specification PolicyErrorOwnCodes: type: string enum: - Inapplicable - SuiTxReceiversDisallowedTransactionKind - SuiTxReceiversDisallowedTransferAddress - SuiTxReceiversDisallowedCommand - BtcTxDisallowedOutputs - BtcSignatureExceededValue - BtcValueOverflow - BtcSighashTypeDisallowed - Eip7702AddressMismatch - EvmTxReceiverMismatch - EvmTxChainIdMismatch - EvmTxSenderMismatch - EvmTxExceededValue - EvmTxExceededGasCost - EvmTxGasCostUndefined - EvmDataDisallowed - Erc20DataInvalid - EvmContractAddressUndefined - EvmContractChainIdUndefined - EvmDataNotDefined - EvmDataInvalid - EvmContractNotInAllowlist - Erc20ExceededTransferLimit - Erc20ReceiverMismatch - Erc20ExceededApproveLimit - Erc20SpenderMismatch - EvmFunctionNotInAllowlist - EvmFunctionCallInvalid - EvmFunctionCallDisallowedArg - PolicyDisjunctionError - PolicyNegationError - Eth2ExceededMaxUnstake - Eth2ConcurrentUnstaking - NotInIpv4Allowlist - NotInOriginAllowlist - NotInOperationAllowlist - InvalidSourceIp - RawSigningNotAllowed - DiffieHellmanExchangeNotAllowed - Eip712SigningNotAllowed - OidcSourceNotAllowed - NoOidcAuthSourcesDefined - AddKeyToRoleDisallowed - KeysAlreadyInRole - KeyInMultipleRoles - KeyAccessError - RequireRoleSessionKeyAccessError - BtcMessageSigningNotAllowed - Eip191SigningNotAllowed - Eip7702SigningNotAllowed - TaprootSigningDisallowed - SegwitSigningDisallowed - PsbtSigningDisallowed - BabylonStakingDisallowed - TimeLocked - CelPolicyDenied - BabylonStakingNetwork - BabylonStakingParamsVersion - BabylonStakingExplicitParams - BabylonStakingStakerPk - BabylonStakingFinalityProviderPk - BabylonStakingLockTime - BabylonStakingValue - BabylonStakingChangeAddress - BabylonStakingFee - BabylonStakingWithdrawalAddress - BabylonStakingBbnAddress - SolanaInstructionCountLow - SolanaInstructionCountHigh - SolanaNotInInstructionAllowlist - SolanaInstructionMismatch - WasmPoliciesDisabled - WasmPolicyDenied - WasmPolicyFailed - WebhookPoliciesDisabled - DeniedByWebhook - ExplicitlyDenied TypedData: type: object description: 'Represents the [EIP-712](https://eips.ethereum.org/EIPS/eip-712) typed data object. Typed data is a JSON object containing type information, domain separator parameters and the message object.' required: - domain - primaryType - message - types properties: domain: type: object description: 'Represents the [EIP-712](https://eips.ethereum.org/EIPS/eip-712) EIP712Domain object. EIP712Domain is a JSON object with one or more of the below fields. Protocol designers only need to include the fields that make sense for their signing domain.' properties: chainId: type: string description: 'The EIP-155 chain id. The user-agent should refuse signing if it does not match the currently active chain.' example: '0x1' nullable: true name: type: string description: The user readable name of signing domain, i.e., the name of the DApp or the protocol. example: Ether Mail nullable: true salt: oneOf: - type: string description: Hex-encoded byte array of length 32 example: '0xa5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5' - type: array items: type: number example: 165 description: Byte array of length 32 example: - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 - 165 description: A disambiguating salt for the protocol. This can be used as a domain separator of last resort. Can be either a hex-encoded string or byte array verifyingContract: type: string description: The address of the contract that will verify the signature. example: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC' nullable: true version: type: string description: 'The current major version of the signing domain. Signatures from different versions are not compatible.' example: '1' nullable: true message: type: object description: The message to be signed. additionalProperties: {} primaryType: type: string description: The type of the message. types: type: object description: The custom types used by this message. additionalProperties: type: array items: type: object description: Represents the name and type pair required: - name - type properties: name: type: string example: name type: type: string example: type example: name: name type: type CoinbaseDryRunArgs: type: object required: - method - url properties: method: type: string description: The Coinbase API method that would have been used url: type: string description: The Coinbase API url method that would have been called Network: type: string description: Network name ('mainnet', 'holesky') enum: - mainnet - holesky - hoodi example: holesky Id: type: string SolanaSignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - message_base64 properties: message_base64: type: string description: Solana base64-encoded serialized Message description: Solana signing request example: message_base64: AQABA8OKVzLEjststN4xXr39kLKHT8d58eQY1QEs6MeXwEFBrxTAlULX1troLbWxuAXQqgbQofGi6z8fJi7KAAIf7YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJK0tn39k28s+X86W47EvbRRKnYBVQ8Q/l2m1EbfT7+vAQICAAEMAgAAAGQAAAAAAAAA BabylonStakingWithdrawal: allOf: - type: object description: Data needed to create the Babylon deposit scripts required: - network - staker_pk - finality_provider_pks - lock_time properties: explicit_params: allOf: - $ref: '#/components/schemas/BabylonStakingParams' nullable: true finality_provider_pks: type: array items: type: string description: 'The Schnorr public key (i.e., 32-byte X-coordinate) of the finality provider to which the stake is delegated.' lock_time: type: integer format: int32 description: The lock time used for the withdrawal output in the staking deposit transaction minimum: 0 network: $ref: '#/components/schemas/BabylonNetworkId' staker_pk: type: string description: 'The Schnorr public key (i.e., 32-byte X-coordinate) of the staker. This is the key that signs the slashing, withdrawal, and unbonding scripts.' version: type: integer format: int32 description: The parameter version to use. If `None`, uses the latest version. nullable: true minimum: 0 - type: object required: - txid - vout - value - fee - fee_type - recipient properties: as_base64: type: boolean description: 'If `true`, the resulting PSBT is encoded as a base64 string. Otherwise, it is encoded as a hex string.' fee: type: integer format: int64 description: 'The transaction fee value. The `fee_type` field determines whether this is a fixed fee in sats or a rate in sats per (estimated) virtual byte of transaction weight (i.e., sats per vb).' minimum: 0 fee_type: $ref: '#/components/schemas/FeeType' recipient: type: string description: The withdrawal recipient, specified as a Bitcoin spend script txid: type: string description: Transaction-id of the deposit or early unbonding transaction to withdraw from txn_lock_height: type: integer format: int32 description: 'An optional lock height (in blocks) for this transaction. The resulting transaction cannot be mined before the specified block height.' nullable: true minimum: 0 value: type: integer format: int64 description: The value in sats that is staked in the transaction being withdrawn minimum: 0 vout: type: integer format: int32 description: 'Transaction output index of the staking transaction from which to withdraw. For staking transactions generated by CubeSigner, this will always be 0. For slashing transactions generated by CubeSigner, this will always be 1.' minimum: 0 description: Data needed to create a Babylon withdrawal transaction BabylonNetworkId: type: string description: The network-id for Babylon staking enum: - bbt4 - bbn1 - bbt5 BadRequestErrorCode: type: string enum: - GenericBadRequest - DisallowedAllowRuleReference - InvalidPaginationToken - InvalidEmail - InvalidEmailTemplate - QueryMetricsError - InvalidTelegramData - ValidationError - WebhookPolicyTimeoutOutOfBounds - WebhookPolicyDisallowedUrlScheme - WebhookPolicyDisallowedUrlHost - WebhookPolicyDisallowedHeaders - ReservedName - UserEmailNotConfigured - EmailPasswordNotFound - PasswordAuthNotAllowedByInvitation - OneTimeCodeExpired - InvalidBody - InvalidJwt - InvitationNoLongerValid - TokenRequestError - InvalidMfaReceipt - InvalidMfaPolicyCount - InvalidMfaPolicyNumAuthFactors - InvalidMfaPolicyNumAllowedApprovers - InvalidMfaPolicyGracePeriodTooLong - InvalidBabylonStakingPolicyParams - InvalidSuiTxReceiversEmptyAllowlist - InvalidBtcTxReceiversEmptyAllowlist - InvalidRequireRoleSessionAllowlist - InvalidCreateKeyCount - InvalidDiffieHellmanCount - OrgInviteExistingUser - OrgUserAlreadyExists - OrgNameTaken - KwkNotFoundInRegion - OrgIsNotOrgExport - RoleNameTaken - PolicyNameTaken - NameTaken - ContactNameInvalid - ContactAddressesInvalid - ContactLabelInvalid - ContactModified - PolicyNotFound - PolicyVersionNotFound - PolicyRuleDisallowedByType - PolicyTypeDisallowed - PolicyDuplicateError - PolicyStillAttached - PolicyModified - PolicyNotAttached - AddKeyToRoleCountTooHigh - InvalidKeyId - InvalidTimeLockAlreadyInThePast - InvalidRestrictedScopes - InvalidUpdate - InvalidMetadataLength - InvalidLength - InvalidKeyMaterialId - KeyNotFound - SiweChallengeNotFound - SiweInvalidRequest - SiwsChallengeNotFound - SiwsInvalidRequest - UserExportDerivedKey - UserExportPublicKeyInvalid - NistP256PublicKeyInvalid - UnableToAccessSmtpRelay - UserExportInProgress - RoleNotFound - InvalidRoleNameOrId - InvalidMfaReceiptOrgIdMissing - InvalidMfaReceiptInvalidOrgId - MfaRequestNotFound - InvalidKeyType - InvalidPropertiesForKeyType - MismatchedKeyPropertiesPatch - MissingBinanceApiKey - MissingBybitApiKey - MissingCoinbaseApiKey - BinanceKeyMasterMismatch - BybitAccountMismatch - InvalidKeyMaterial - InvalidHexValue - InvalidBase32Value - InvalidBase58Value - InvalidBase64Value - InvalidSs58Value - InvalidForkVersionLength - InvalidEthAddress - InvalidStellarAddress - InvalidOrgNameOrId - InvalidUpdateOrgRequestDisallowedMfaType - InvalidUpdateOrgRequestEmptyAllowedMfaTypes - EmailOtpDelayTooShortForRegisterMfa - InvalidStakeDeposit - InvalidBlobSignRequest - InvalidDiffieHellmanRequest - InvalidSolanaSignRequest - InvalidEip712SignRequest - InvalidEip7702SignRequest - OnlySpecifyOne - IncompatibleParams - NoOidcDataInProof - InvalidEvmSignRequest - InvalidEth2SignRequest - InvalidDeriveKeyRequest - InvalidStakingAmount - CustomStakingAmountNotAllowedForWrapperContract - InvalidUnstakeRequest - InvalidCreateUserRequest - UserAlreadyExists - IdpUserAlreadyExists - CognitoUserAlreadyOrgMember - UserNotFound - UserWithEmailNotFound - PolicyKeyMismatch - EmptyScopes - InvalidScopesForRoleSession - InvalidLifetime - NoSingleKeyForUser - InvalidOrgPolicyRule - SourceIpAllowlistEmpty - LimitWindowTooLong - Erc20ContractDisallowed - EmptyRuleError - PolicyFieldValidationError - OptionalListEmpty - MultipleExclusiveFieldsProvided - DuplicateFieldEntry - InvalidRange - InvalidOrgPolicyRepeatedRule - InvalidSuiTransaction - SuiSenderMismatch - AvaSignHashError - AvaSignError - BtcSegwitHashError - BtcTaprootHashError - BtcSignError - TaprootSignError - Eip712SignError - InvalidMemberRoleInUserAdd - InvalidMemberRoleInRecipientAdd - ThirdPartyUserAlreadyExists - OidcIdentityAlreadyExists - UserAlreadyHasIdentity - ThirdPartyUserNotFound - DeleteOidcUserError - DeleteUserError - SessionRoleMismatch - InvalidOidcToken - InvalidOidcIdentity - OidcIssuerUnsupported - OidcIssuerNotAllowed - OidcIssuerNoApplicableJwk - FidoKeyAlreadyRegistered - FidoKeySignCountTooLow - FidoVerificationFailed - FidoChallengeMfaMismatch - UnsupportedLegacyCognitoSession - InvalidIdentityProof - PaginationDataExpired - ExistingKeysViolateExclusiveKeyAccess - ExportDelayTooShort - ExportWindowTooLong - InvalidTotpFailureLimit - InvalidEip191SignRequest - CannotResendUserInvitation - InvalidNotificationEndpointCount - CannotDeletePendingSubscription - InvalidNotificationUrlProtocol - EmptyOneOfOrgEventFilter - EmptyAllExceptOrgEventFilter - InvalidTapNodeHash - InvalidOneTimeCode - MessageNotFound - MessageAlreadySigned - MessageRejected - MessageReplaced - InvalidMessageType - EmptyAddress - InvalidEth2SigningPolicySlotRange - InvalidEth2SigningPolicyEpochRange - InvalidEth2SigningPolicyTimestampRange - InvalidEth2SigningPolicyOverlappingRule - RpcUrlMissing - MmiChainIdMissing - EthersInvalidRpcUrl - EthersGetTransactionCountError - InvalidPassword - BabylonStakingFeePlusDustOverflow - BabylonStaking - BabylonStakingIncorrectKey - BabylonStakingSegwitNonDeposit - BabylonStakingRegistrationRequiresTaproot - PsbtSigning - TooManyResets - TooManyRequests - TooManyFailedLogins - BadBtcMessageSignP2shFlag - InvalidTendermintRequest - PolicyVersionMaxReached - PolicyVersionInvalid - PolicySecretLimitReached - PolicySecretTooLarge - InvalidImportKey - AlienOwnerInvalid - EmptyUpdateRequest - InvalidPolicyReference - PolicyEngineDisabled - InvalidWasmPolicy - CelProgramTooLarge - InvalidPolicy - RedundantDerivationPath - ImportKeyMissing - InvalidAbiMethods - BabylonCovSign - InvalidPolicyLogsRequest - UserProfileMigrationMultipleEntries - UserProfileMigrationTooManyItems - InputTooShort - InvalidTweakLength - InvalidCustomChains - InvalidRpcRequest TendermintSignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - message_base64 properties: message_base64: type: string description: The bytes of the protobuf-encoded message to sign as a BASE64 string. description: The request for using the Tendermint sign endpoint. AvaSerializedTxSignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - tx properties: tx: type: string description: Serialized transaction to sign description: Request to sign a serialized Avalanche transaction Epoch: type: string description: Epoch is a quoted `uint64`. example: '256' BtcMessageSignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - data properties: data: type: string description: Message to sign as a hex-encoded byte string. example: '0xdeadbeef13c0ffee' is_p2sh: type: boolean description: For segwit, sign the message as p2sh-p2wpkh instead of p2wpkh description: Data to sign HttpRequest: type: object description: 'Information about the request. Captures all the relevant info (including the request body) about requests that require MFA. We use this to verify that when a request is resumed (after obtaining necessary MFA approvals) it is exactly the same as it originally was.' required: - method - path properties: body: type: object description: HTTP request body nullable: true method: type: string description: HTTP method of the request path: type: string description: HTTP path of the request, excluding the host Receipt: type: object description: Receipt that an MFA request was approved. required: - confirmation - final_approver - timestamp properties: confirmation: type: string description: Confirmation code the user needs to present when resuming the original request. example: ba1d75dd-d999-4c1b-944d-25c25440c8af final_approver: type: string description: The ID of the logged-in user whose action created this approval. timestamp: $ref: '#/components/schemas/EpochDateTime' BabylonStakingEarlyUnbond: allOf: - type: object description: Data needed to create the Babylon deposit scripts required: - network - staker_pk - finality_provider_pks - lock_time properties: explicit_params: allOf: - $ref: '#/components/schemas/BabylonStakingParams' nullable: true finality_provider_pks: type: array items: type: string description: 'The Schnorr public key (i.e., 32-byte X-coordinate) of the finality provider to which the stake is delegated.' lock_time: type: integer format: int32 description: The lock time used for the withdrawal output in the staking deposit transaction minimum: 0 network: $ref: '#/components/schemas/BabylonNetworkId' staker_pk: type: string description: 'The Schnorr public key (i.e., 32-byte X-coordinate) of the staker. This is the key that signs the slashing, withdrawal, and unbonding scripts.' version: type: integer format: int32 description: The parameter version to use. If `None`, uses the latest version. nullable: true minimum: 0 - type: object required: - txid - vout - value properties: as_base64: type: boolean description: 'If `true`, the resulting PSBT is encoded as a base64 string. Otherwise, it is encoded as a hex string.' txid: type: string description: Transaction-id of the deposit transaction to unbond or slash. value: type: integer format: int64 description: The value in sats that was staked in the transaction to unbond or slash. minimum: 0 vout: type: integer format: int32 description: 'Transaction output index of the staking transaction to unbond or slash. For staking transactions generated by CubeSigner, this will always be zero.' minimum: 0 description: Data needed to create a Babylon early-unbonding or slashing transaction ForbiddenErrorCode: type: string enum: - AlienKeyCreate - CannotAssumeIdentity - SentryDisallowed - PasskeyLoginDisabled - PasskeyNotRegistered - CannotCreateOrg - WrongMfaEmailOtpJwt - OrgFlagNotSet - FidoRequiredToRemoveTotp - OidcIdentityLimitReached - OidcScopeCeilingMissing - OidcIssuerNotAllowedForMemberRole - OidcNoMemberRolesAllowed - EmailOtpNotConfigured - MfaChallengeExpired - ChainIdNotAllowed - InvalidOrg - OrgIdMismatch - SessionForWrongOrg - SelfDelete - SelfDisable - SelfMfaReset - InvalidOrgMembershipRoleChange - UserDisabled - OrgDisabled - OrgNotFound - OrgWithoutOwner - OrphanedUser - OidcUserNotFound - UserNotInOrg - UserNotOrgOwner - UserNotKeyOwner - InvalidRole - DisabledRole - KeyDisabled - KeyNotInRole - ContactNotInOrg - UserExportRequestNotInOrg - UserExportRequestInvalid - UserExportDisabled - UserNotOriginalKeyOwner - UserNotInRole - MustBeFullMember - SessionExpired - SessionChanged - SessionRevoked - ExpectedUserSession - SessionRoleChanged - ScopedNameNotFound - SessionInvalidEpochToken - SessionInvalidRefreshToken - SessionRefreshTokenExpired - InvalidAuthHeader - SessionNotFound - InvalidArn - SessionInvalidAuthToken - SessionAuthTokenExpired - SessionPossiblyStolenToken - MfaDisallowedIdentity - MfaDisallowedApprover - MfaTypeNotAllowed - MfaNotApprovedYet - MfaConfirmationCodeMismatch - MfaHttpRequestMismatch - MfaRemoveBelowMin - MfaOrgRequirementNotMet - MfaRegistrationDisallowed - TotpAlreadyConfigured - TotpConfigurationChanged - MfaTotpBadConfiguration - MfaTotpBadCode - MfaTotpRateLimit - ImproperSessionScope - FullSessionRequired - SessionWithoutAnyScopeUnder - UserRoleUnprivileged - MemberRoleForbidden - MfaNotConfigured - RemoveLastOidcIdentity - OperationNotAllowed - OrgExportRetrievalDisabled - ChangingKeyExportRequirementIsDisabled - AutoAddBlsKeyToProtectedRole - UserNotPolicyOwner - UserNotContactOwner - UserNotBucketOwner - LegacySessionCannotHaveScopeCeiling - RoleInParentOrgNotAllowed - RemoveKeyFromRoleUserNotAllowed - SiweChallengeExpired - SiweMessageNotValid - SiweMessageInvalidSignature - SiwsChallengeExpired - SiwsDomain - SiwsMessageInvalid - Acl ConflictErrorCode: type: string enum: - ConcurrentRequestDisallowed - ConcurrentLockCreation EpochDateTime: type: integer format: int64 description: 'DateTime measured in seconds since unix epoch. A wrapper type for serialization that encodes a [`SystemTime`] as a [`u64`] representing the number of seconds since [`SystemTime::UNIX_EPOCH`].' minimum: 0 Eth2SignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - network - eth2_sign_request properties: eth2_sign_request: type: object description: 'Subset of the Web3Signer Eth2 BLS signing request whose schema is defined [here](https://consensys.github.io/web3signer/web3signer-eth2.html#tag/Signing/operation/ETH2_SIGN). We handle deposits and voluntary exits separately.' network: $ref: '#/components/schemas/Network' example: eth2_sign_request: aggregation_slot: slot: '36' fork_info: fork: current_version: '0x42424242' epoch: '0' previous_version: '0x42424242' genesis_validators_root: '0x9d13d61212c067e02ce8e608a7007e2c3b02571e9e6f27ff45dfa91bf27c870b' signingRoot: '0x9c57e77c4965727542b9337df6756f948464bca3859bea6ed3c0ec6600d8982a' type: AGGREGATION_SLOT network: mainnet BabylonStakingDeposit: allOf: - type: object description: Data needed to create the Babylon deposit scripts required: - network - staker_pk - finality_provider_pks - lock_time properties: explicit_params: allOf: - $ref: '#/components/schemas/BabylonStakingParams' nullable: true finality_provider_pks: type: array items: type: string description: 'The Schnorr public key (i.e., 32-byte X-coordinate) of the finality provider to which the stake is delegated.' lock_time: type: integer format: int32 description: The lock time used for the withdrawal output in the staking deposit transaction minimum: 0 network: $ref: '#/components/schemas/BabylonNetworkId' staker_pk: type: string description: 'The Schnorr public key (i.e., 32-byte X-coordinate) of the staker. This is the key that signs the slashing, withdrawal, and unbonding scripts.' version: type: integer format: int32 description: The parameter version to use. If `None`, uses the latest version. nullable: true minimum: 0 - type: object required: - psbt - value - change - fee - fee_type properties: change: type: string description: The change address, specified as a Bitcoin spend script fee: type: integer format: int64 description: 'The transaction fee value. The `fee_type` field determines whether this is a fixed fee in sats or a rate in sats per (estimated) virtual byte of transaction weight (i.e., sats per vb).' minimum: 0 fee_type: $ref: '#/components/schemas/FeeType' ignore_psbt_outputs: type: boolean description: 'By default, the PSBT in this request can only specify transaction inputs: PSBTs that specify outputs will result in an error. When this flag is set, existing outputs in the PSBT will instead be ignored (i.e., deleted from the PSBT) when creating the deposit transaction.' psbt: type: string description: 'A hex-serialized PSBT (version 0) containing the transaction inputs and all necessary information for signing (e.g., taproot path and leaf information). This PSBT must not have any transaction outputs; they will be added to the returned PSBT.' value: type: integer format: int64 description: The value to be staked in sats minimum: 0 description: Data needed to create a Babylon deposit transaction BtcSignatureKind: oneOf: - type: object required: - Segwit properties: Segwit: type: object description: Segregated Witness required: - input_index - script_code - value - sighash_type properties: input_index: type: integer description: Transaction input index example: 0 minimum: 0 script_code: type: string description: Script example: '0x76a91479091972186c449eb1ded22b78e40d009bdf008988ac' sighash_type: $ref: '#/components/schemas/BtcSighashType' tweak: type: string description: 'Optional tweak to apply to the key before signing. When supplied, this field must contain a base-64 string encoding a vector of exactly 32 bytes, which are used to compute the tweaked public key. See the CubeSigner documentation for more information on the Segwit tweaking procedure.' example: F41HAy2q5Gn8laF2CuMsZbRAQTmD+4Ob3VUMZ7TBGK4= nullable: true value: type: integer format: int64 description: The total amount of the input (in satoshis). example: 1000000 minimum: 0 AcceptedValue: oneOf: - type: object required: - SignDryRun properties: SignDryRun: $ref: '#/components/schemas/SignDryRunArgs' - type: object required: - BinanceDryRun properties: BinanceDryRun: $ref: '#/components/schemas/BinanceDryRunArgs' - type: object required: - BybitDryRun properties: BybitDryRun: $ref: '#/components/schemas/BybitDryRunArgs' - type: object required: - CoinbaseDryRun properties: CoinbaseDryRun: $ref: '#/components/schemas/CoinbaseDryRunArgs' - type: object required: - MfaRequired properties: MfaRequired: $ref: '#/components/schemas/MfaRequiredArgs' description: Different responses we return for success status codes. BtcSignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - tx - sig_kind properties: sig_kind: $ref: '#/components/schemas/BtcSignatureKind' tx: $ref: '#/components/schemas/BtcTx' PreconditionErrorOwnCodes: type: string enum: - FailOnMfaRequired - KeyRegionLocked - KeyRegionChangedRecently - MfaRegionLocked - Eth2ProposerSlotTooLow - Eth2AttestationSourceEpochTooLow - Eth2AttestationTargetEpochTooLow - Eth2ConcurrentBlockSigning - Eth2ConcurrentAttestationSigning - Eth2MultiDepositToNonGeneratedKey - Eth2MultiDepositUnknownInitialDeposit - Eth2MultiDepositWithdrawalAddressMismatch - ConcurrentSigningWhenTimeLimitPolicyIsDefined - BabylonEotsConcurrentSigning - TendermintStateError - TendermintConcurrentSigning - MfaApprovalsNotYetValid TaprootSignatureKind: type: object required: - input_index - prevouts - sighash_type properties: annex: type: string description: Optional annex, as per BIP341 nullable: true input_index: type: integer description: Transaction input index example: 0 minimum: 0 leaf_hash_code_separator: allOf: - $ref: '#/components/schemas/BtcLeafHashCodeSeparator' nullable: true merkle_root: type: string description: 'If this field is not present or null, no tweak is applied. If the field is an empty string, the key is tweaked with an unspendable script path per BIP0341. Otherwise, this field must contain a base-64 string encoding 32 bytes that represent the Merkle root with which to tweak the key before signing.' example: F41HAy2q5Gn8laF2CuMsZbRAQTmD+4Ob3VUMZ7TBGK4= nullable: true prevouts: $ref: '#/components/schemas/PrevOutputs' sighash_type: type: string description: 'Hash type of an input''s signature, encoded in the last byte of the signature. Possible values: - SIGHASH_ALL - SIGHASH_ALL|SIGHASH_ANYONECANPAY - SIGHASH_DEFAULT - SIGHASH_NONE - SIGHASH_NONE|SIGHASH_ANYONECANPAY - SIGHASH_SINGLE - SIGHASH_SINGLE|SIGHASH_ANYONECANPAY' example: SIGHASH_ALL MfaType: type: string format: '''CubeSigner'' | ''Fido'' | `FidoKey#${string}` | ''Totp'' | ''EmailOtp'' | `EmailOtp#${number}`' description: Different types that can be used to approve an MFA request pattern: ^(CubeSigner|Totp|EmailOtp|EmailOtp#\d+|Fido|FidoKey#[^#\s]+)$ PolicyErrorCode: oneOf: - $ref: '#/components/schemas/PolicyErrorOwnCodes' - $ref: '#/components/schemas/EvmTxDepositErrorCode' BtcTxOut: type: object required: - value - script_pubkey properties: script_pubkey: type: string description: The script which must be satisfied for the output to be spent. value: type: integer format: int64 description: The value of the output, in satoshis. minimum: 0 MfaRequestInfo: type: object description: Returned as a response from multiple routes (e.g., 'get mfa', 'approve mfa', 'approve totp'). required: - id - expires_at - request - status - created_by - provenance properties: created_at: $ref: '#/components/schemas/EpochDateTime' created_by: type: string description: The session identity (user or role) that created this request. expires_at: $ref: '#/components/schemas/EpochDateTime' id: type: string description: Approval request ID. not_valid_until: $ref: '#/components/schemas/EpochDateTime' provenance: type: string description: MFA policy provenance enum: - Org - Key - KeyInRole - Role - User - EditPolicy receipt: allOf: - $ref: '#/components/schemas/Receipt' nullable: true region: type: string description: The region this MFA request was created in. It can only be redeemed from the same region. related_ids: type: array items: type: string description: 'If set, contains the IDs of all MFA requests (including this one!) that were generated at once for the same CubeSigner operation. If not set, it means that this was the lone MFA request generated for `request`. This is useful so that a client can discover all the MFAs whose receipts must be submitted together to carry out the original CubeSigner operation.' request: $ref: '#/components/schemas/HttpRequest' status: $ref: '#/components/schemas/Status' BtcLeafHashCodeSeparator: type: object description: Leaf hash and code, as per BIP341 and https://github.com/rust-bitcoin/rust-bitcoin/blob/464202109d2b2c96e9b4867461bffe420dbd8177/bitcoin/src/crypto/sighash.rs#L691 required: - leaf_hash - code_separator properties: code_separator: type: integer format: int32 description: Code separator minimum: 0 leaf_hash: type: string description: Taproot-tagged hash with tag "TapLeaf". Eth1SignRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - tx - chain_id properties: chain_id: type: integer format: int64 description: The chain id to set in the given transaction. minimum: 1 tweak: type: string description: 'An optional tweak value that will be applied to the secret key before signing. This field must contain a base-64 string encoding a vector of exactly 32 bytes. See the CubeSigner documentation for more information on the tweaking procedure.' example: F41HAy2q5Gn8laF2CuMsZbRAQTmD+4Ob3VUMZ7TBGK4= nullable: true tx: $ref: '#/components/schemas/Transaction' description: EVM transaction signing request. example: chain_id: 43113 tx: chain_id: '0xa869' gas: '0x61a80' maxFeePerGas: '0x9502F900' maxPriorityFeePerGas: '0x50' nonce: '0xb' to: '0xf00ba12f00000000b4121200000f00c0ffeef00d' type: '0x2' value: '0x10000000000' GenesisData: type: object description: 'Genesis data as defined in the [Beacon API spec](https://ethereum.github.io/beacon-APIs/#/Beacon/getGenesis). You can get the genesis data from the Beacon node''s `/eth/v1/beacon/genesis` end-point. This struct definition is originally from lighthouse''s eth2.' required: - genesis_time - genesis_validators_root - genesis_fork_version properties: genesis_fork_version: type: string description: Genesis fork version. example: '0x42424242' genesis_time: type: string description: Genesis time example: '1679326449' genesis_validators_root: type: string description: Genesis validators root. example: '0x270d43e74ce340de4bca2b1936beca0f4f5408d9e78aec4850920baf659d5b69' PreconditionErrorCode: oneOf: - $ref: '#/components/schemas/PreconditionErrorOwnCodes' - $ref: '#/components/schemas/PolicyErrorCode' StakeRequest: allOf: - type: object properties: dry_run: type: boolean description: Do not produce a valid signature, just evaluate attached policies. explain: type: boolean description: 'Request additional information to be included in the response, explaining the outcome (i.e., permitted vs. denied vs. MFA required) of the sign request. Defaults to false.' fail_on_mfa: type: boolean description: 'If MFA is required, fail the request instead of returning 202 and creating pending MFA request. Defaults to false.' metadata: description: 'Optional metadata. Passing additional information as metadata can be used to make reviewing of pending MFA requests and/or historical key transactions more transparent. It can also be used e.g., to carry additional data to WebHook policies.' nullable: true - type: object required: - chain_id - withdrawal_addr - deposit_type properties: chain_id: type: integer format: int64 description: The chain on which we will deposit example: 5 minimum: 0 deposit_type: $ref: '#/components/schemas/DepositType' staking_amount_gwei: type: integer format: int64 description: 'Optional staking amount in GWEI. If not specified, defaults to 32_000_000_000 (32 ETH). Must be between 1 ETH and 32 ETH. Must not be different from the default value when ''deposit_type'' is "Wrapper".' minimum: 0 unsafe_conf: allOf: - $ref: '#/components/schemas/UnsafeConf' nullable: true validator_key: type: string description: The validator BLS public key to use, or `None` to generate a fresh one. example: '0xa99a76ed7796f7be22d5b7e85deeb7c5677e88e511e0b337618f8c4eb61349b4bf2d153f649f7b53359fe8b94a38e44c' nullable: true withdrawal_addr: type: string description: The ethereum address to which withdrawn funds go example: '0x8e3484687e66cdd26cf04c3647633ab4f3570148' TypedTransaction: oneOf: - type: object description: Legacy (pre EIP-2718) Ethereum transaction type required: - type properties: data: type: string example: '0x01' from: type: string example: '0x4cf18a8a6a1ffe77fec600da2b90ec35ba050b07' gas: type: string example: '0x1' gasPrice: type: string example: '0x1' nonce: type: string example: '0x1' to: type: string example: '0x068bd529426f4f27e248baf36e4558e440738fbb' type: type: string example: '0x00' value: type: string example: '0x1' example: data: '0x01' from: '0x4cf18a8a6a1ffe77fec600da2b90ec35ba050b07' gas: '0x1' gasPrice: '0x1' nonce: '0x1' to: '0x068bd529426f4f27e248baf36e4558e440738fbb' type: '0x00' value: '0x1' - type: object description: EIP-1559 Ethereum transaction type required: - type properties: accessList: type: array items: type: object properties: address: type: string example: '0x0000000000000000000000000000000000000000' storageKeys: type: array items: type: string example: '0x0000000000000000000000000000000000000000000000000000000000000000' example: - '0x0000000000000000000000000000000000000000000000000000000000000000' example: address: '0x0000000000000000000000000000000000000000' storageKeys: - '0x0000000000000000000000000000000000000000000000000000000000000000' example: - address: '0x0000000000000000000000000000000000000000' storageKeys: - '0x0000000000000000000000000000000000000000000000000000000000000000' data: type: string example: '0x01' from: type: string example: '0x4cf18a8a7a1ffe77fec600da2b90ec35ba050b07' gas: type: string example: '0x61a80' maxFeePerGas: type: string example: '0x9502f900' maxPriorityFeePerGas: type: string example: '0x9502f900' nonce: type: string example: '0xb' to: type: string example: '0x068bd539426f4f27e248baf36e4558e440738fbb' type: type: string example: '0x02' value: type: string example: '0x1' example: accessList: - address: '0x0000000000000000000000000000000000000000' storageKeys: - '0x0000000000000000000000000000000000000000000000000000000000000000' data: '0x01' from: '0x4cf18a8a7a1ffe77fec600da2b90ec35ba050b07' gas: '0x61a80' maxFeePerGas: '0x9502f900' maxPriorityFeePerGas: '0x9502f900' nonce: '0xb' to: '0x068bd539426f4f27e248baf36e4558e440738fbb' type: '0x02' value: '0x1' description: 'EIP-2718 typed transaction, including EIP-1559 transactions (`{ "type": "0x02" ... }`), and legacy transactions (`{ "type": "0x00" ... }`). All values in the transaction are expected to be (0x-prefixed or not) hex strings or byte arrays.' NewSessionResponse: type: object description: Information about a new session, returned from multiple endpoints (e.g., login, refresh, etc.). required: - org_id - token - refresh_token - session_info properties: expiration: type: integer format: int64 description: Session expiration (in seconds since UNIX epoch), beyond which it cannot be refreshed. example: 1701879640 minimum: 0 org_id: $ref: '#/components/schemas/Id' refresh_token: type: string description: Token that can be used to refresh this session. session_info: $ref: '#/components/schemas/ClientSessionInfo' token: type: string description: 'New token to be used for authentication. Requests to signing endpoints should include this value in the `Authorization` header.' ApprovalInfo: type: object required: - timestamp properties: timestamp: $ref: '#/components/schemas/EpochDateTime' UnauthorizedErrorCode: type: string enum: - AuthorizationHeaderMissing - EndpointRequiresUserSession - RefreshTokenMissing TimeoutErrorCode: type: string enum: - PolicyEngineTimeout - WasmPolicyExecutionTimeout responses: Eth1SignResponse: description: '' content: application/json: schema: allOf: - type: object description: Common fields that are optionally included in every response properties: policy_eval_tree: description: Optional policy evaluation tree. nullable: true - type: object required: - rlp_signed_tx properties: rlp_signed_tx: type: string description: Hex-encoded RLP encoding of the transaction and its signature example: '0x22895118000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001201d58656b0e22aaa68fdc692db41979098c3886ed33015d7467de9211609cdac000000000000000000000000000000000000000000000000000000000000000308b0c2900324d3ff9adfba7fdfe5af3f9b2cdbeef7b280437bbf1b1c59a093d615afe3e5dfed9622b540cdd9b49b3c5ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002001000000000000000000000049011adbcc3bc9c0307bb07f37dda1a1a9c69d2e0000000000000000000000000000000000000000000000000000000000000060903db8525674b8e7904f9b7d7d9ec55a0a42d33cf58be25469b0c21bbb6d06172bc5bb5fd1aed8e4f35936968958116b0619553c2cb1c52e7323074c6f8eb3d5a7074fc6580148df907837fa3b164ad7fbc2288dad1e8a5b021095b57c8a36d4' BabylonCovSignResponse: description: '' content: application/json: schema: allOf: - type: object description: Common fields that are optionally included in every response properties: policy_eval_tree: description: Optional policy evaluation tree. nullable: true - type: object required: - slashing_transactions_signatures - unbonding_transaction_signature - slash_unbonding_transactions_signatures properties: slash_unbonding_transactions_signatures: type: array items: type: string description: The slash-unbonding transaction signatures as an array of hex strings with no 0x prefix example: - 02e21a7b0519539ef670f79d1c25a54f90b0c6d9fdb56a7de813fb207033032fffad8aaafeb1b77dd9ea8f17dadcf297696bbf5a4133292f3515b86bb9c2d78d9c slashing_transactions_signatures: type: array items: type: string description: The slashing transaction signatures as an array of hex strings with no 0x prefix example: - 03075eca9d176d1605d6c096c111e9a4f8d8739ac9708c1df3ed516106e7ab1387a3924a6652acf2e3524359731ca1fbb338a3afb1a67f6ea19c207b6ff466a5ad - 022224493f4cffad5b84076db32dd8c49a28ff48af4e19e2bcc9953ff80347ba6e8343cf7a44e74a96ff71ea59a03b40166e85b0d1355954e04a4427dc8d637ff0 stake_expansion_transaction_signature: type: string description: 'The signature that allows expanding a stake by spending the current active stake transaction into a new staking transaction. A value is present iff the corresponding request included a `stake_expansion` value.' example: b573e318803fd7aee1be5b6b18d496cc60ecc52429dbd477a879217c3ed26a795cb4f4e880aaff3a6ad66335e5404fa51caeb4964f0c9f7562737864e3bde5bc nullable: true unbonding_transaction_signature: type: string description: The unbonding transaction signature as hex string with no 0x prefix example: b573e318803fd7aee1be5b6b18d496cc60ecc52429dbd477a879217c3ed26a795cb4f4e880aaff3a6ad66335e5404fa51caeb4964f0c9f7562737864e3bde5bc DiffieHellmanResponse: description: The result of a Diffie Hellman key exchange content: application/json: schema: allOf: - oneOf: - type: object required: - points - response_type properties: points: type: array items: type: string description: The resulting points as base64-encoded byte strings in a key-type--dependent format. response_type: type: string enum: - masked - type: object required: - encrypted_shared_secrets - ephemeral_public_key - response_type properties: encrypted_shared_secrets: type: string description: 'A ciphertext containing the resulting points. The enclosed plaintext is a sequence of base64-encoded byte strings in a key-type--dependent format.' ephemeral_public_key: type: string description: 'The ephemeral public key used for HPKE key derivation in base64-encoded uncompressed SEC1 serialization.' response_type: type: string enum: - encrypted description: The result of a Diffie Hellman key exchange discriminator: propertyName: response_type - type: object description: Common fields that are optionally included in every response properties: policy_eval_tree: description: Optional policy evaluation tree. nullable: true - type: object description: The result of a Diffie Hellman key exchange SignResponse: description: '' content: application/json: schema: allOf: - type: object description: Common fields that are optionally included in every response properties: policy_eval_tree: description: Optional policy evaluation tree. nullable: true - type: object required: - signature properties: signature: type: string description: The hex-encoded resulting signature. PsbtSignResponse: description: Response to a PSBT signing request content: application/json: schema: allOf: - type: object description: Common fields that are optionally included in every response properties: policy_eval_tree: description: Optional policy evaluation tree. nullable: true - type: object required: - psbt properties: psbt: type: string description: The PSBT in standard hex serialization, without leading "0x". example: 70736274ff01005e... description: Response to a PSBT signing request UnstakeResponse: description: A response to sign an eth2 unstake request. content: application/json: schema: allOf: - type: object description: 'Unstake responses are signed voluntary exit messages. The schema for this message is defined [here](https://github.com/ethereum/consensus-specs/blob/v1.0.1/specs/phase0/beacon-chain.md#signedvoluntaryexit). This message can be directly POSTed to the Beacon node''s `/eth/v1/beacon/pool/voluntary_exits` end-point (see expected schema [here](https://ethereum.github.io/beacon-APIs/#/Beacon/submitPoolVoluntaryExit)).' required: - message - signature properties: message: $ref: '#/components/schemas/VoluntaryExit' signature: type: string description: BLS signature. example: '0x910c7cd537ed91cc8c4a82f3cbd832e9be8c24a22e9c86df479f7ce42025ea6a09619b418b666a060e260d2aae31b8e50e9d05ca3442c7eed3b507e5207e14674275f68c2ba84c4bf6b8dd364a304acac8cfab3681e2514b4400f9242bc61164' example: message: epoch: '558' validator_index: '1' signature: '0x910c7cd537ed91cc8c4a82f3cbd832e9be8c24a22e9c86df479f7ce42025ea6a09619b418b666a060e260d2aae31b8e50e9d05ca3442c7eed3b507e5207e14674275f68c2ba84c4bf6b8dd364a304acac8cfab3681e2514b4400f9242bc61164' - type: object description: Common fields that are optionally included in every response properties: policy_eval_tree: description: Optional policy evaluation tree. nullable: true - type: object description: A response to sign an eth2 unstake request. StakeResponse: description: '' content: application/json: schema: allOf: - allOf: - type: object description: Common fields that are optionally included in every response properties: policy_eval_tree: description: Optional policy evaluation tree. nullable: true - type: object required: - deposit_tx properties: deposit_tx: $ref: '#/components/schemas/DepositTxn' description: A response to sign an eth2 stake request. - type: object required: - created_validator_key_id properties: created_validator_key_id: type: string description: The validator key id ("Key#...") example: Key#db1731f8-3659-45c0-885b-e11e1f5b7be2 BabylonRegistrationResponse: description: '' content: application/json: schema: allOf: - type: object description: Common fields that are optionally included in every response properties: policy_eval_tree: description: Optional policy evaluation tree. nullable: true - type: object required: - deposit - deposit_fee - unbond - slash_deposit - slash_deposit_sig - slash_unbond - slash_unbond_sig - pop - bbn_addr properties: bbn_addr: type: string description: 'The Babylon address that will receive the staking rewards for this deposit. This value will correspond to the `bbn_addr` value specified in the request, but it will always have a `bbn` human-readable part.' example: bbn1n5anmc0kkrh70yjy7f6f399c74yd09xl5teffm deposit: type: string description: 'The deposit transaction PSBT. This PSBT includes signatures on any inputs controlled by the staker taproot key specified in the request.' deposit_fee: type: integer format: int64 description: The deposit transaction fee in sats. example: '1337' minimum: 0 pop: type: string description: 'The proof of possession, i.e., a BIP322 signature on the staker''s Babylon address signed by the staker taproot key. This is a Bitcoin witness stack in Bitcoin consensus hex encoding.' slash_deposit: type: string description: The slash-deposit transaction in Bitcoin consensus hex encoding. slash_deposit_sig: type: string description: 'The staker taproot key''s signature on the slash-deposit transaction. This is a BIP340 signature in hex format.' slash_unbond: type: string description: The slash-unbond transaction in Bitcoin consensus hex encoding. slash_unbond_sig: type: string description: 'The staker taproot key''s signature on the slash-unbond transaction. This is a BIP340 signature in hex format.' unbond: type: string description: The (unsigned) unbonding transaction in Bitcoin consensus hex encoding. BabylonStakingResponse: description: '' content: application/json: schema: allOf: - type: object description: Common fields that are optionally included in every response properties: policy_eval_tree: description: Optional policy evaluation tree. nullable: true - type: object required: - psbt - fee properties: fee: type: integer format: int64 description: The transaction fee in sats example: '1337' minimum: 0 psbt: type: string description: The PSBT in either hex or base64 serialization example: 70736274ff01005e... BtcMessageSignResponse: description: BTC message signing response content: application/json: schema: allOf: - type: object description: Common fields that are optionally included in every response properties: policy_eval_tree: description: Optional policy evaluation tree. nullable: true - type: object required: - sig properties: sig: type: string description: The base64-encoded signature in BIP137 format. description: BTC message signing response securitySchemes: Oidc: type: apiKey in: header name: Authorization description: OIDC tokens allow users to authenticate using a third-party service. These are exchanged for signer session tokens. SignerAuth: type: apiKey in: header name: Authorization description: Signing API end-points use session tokens for auth. Specifically, with each request you need to use the \`token\` from your signer session (which you create with `cs token create`).