openapi: 3.0.1 info: description: REST API for the Wasp node title: Wasp auth chains API version: '0' servers: - url: / tags: - name: chains paths: /v1/chain: get: operationId: getChainInfo parameters: - description: Block index or trie root in: query name: block schema: format: string type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/ChainInfoResponse' description: Information about a specific chain summary: Get information about a specific chain tags: - chains /v1/chain/access-node/{peer}: delete: operationId: removeAccessNode parameters: - description: Name or PubKey (hex) of the trusted peer in: path name: peer required: true schema: format: string type: string responses: '200': content: {} description: Access node was successfully removed '401': content: application/json: schema: $ref: '#/components/schemas/ValidationError' description: Unauthorized (Wrong permissions, missing token) security: - Authorization: [] summary: Remove an access node. tags: - chains put: operationId: addAccessNode parameters: - description: Name or PubKey (hex) of the trusted peer in: path name: peer required: true schema: format: string type: string responses: '201': content: {} description: Access node was successfully added '401': content: application/json: schema: $ref: '#/components/schemas/ValidationError' description: Unauthorized (Wrong permissions, missing token) security: - Authorization: [] summary: Configure a trusted node to be an access node. tags: - chains /v1/chain/activate/{chainID}: post: operationId: activateChain parameters: - description: ChainID (Hex Address) in: path name: chainID required: true schema: format: string type: string responses: '200': content: {} description: Chain was successfully activated '304': content: {} description: Chain was not activated '401': content: application/json: schema: $ref: '#/components/schemas/ValidationError' description: Unauthorized (Wrong permissions, missing token) security: - Authorization: [] summary: Activate a chain tags: - chains /v1/chain/callview: post: description: Execute a view call. Either use HName or Name properties. If both are supplied, HName are used. operationId: callView requestBody: content: application/json: schema: $ref: '#/components/schemas/ContractCallViewRequest' description: Parameters required: true responses: '200': content: application/json: schema: items: example: 171 format: string type: string type: array description: Result summary: Call a view function on a contract by Hname tags: - chains x-codegen-request-body-name: '' /v1/chain/chainrecord/{chainID}: post: operationId: setChainRecord parameters: - description: ChainID (Hex Address) in: path name: chainID required: true schema: format: string type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ChainRecord' description: Chain Record required: true responses: '201': content: {} description: Chain record was saved '401': content: application/json: schema: $ref: '#/components/schemas/ValidationError' description: Unauthorized (Wrong permissions, missing token) security: - Authorization: [] summary: Sets the chain record. tags: - chains x-codegen-request-body-name: ChainRecord /v1/chain/committee: get: operationId: getCommitteeInfo parameters: - description: Block index or trie root in: query name: block schema: format: string type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/CommitteeInfoResponse' description: A list of all nodes tied to the chain '401': content: application/json: schema: $ref: '#/components/schemas/ValidationError' description: Unauthorized (Wrong permissions, missing token) security: - Authorization: [] summary: Get information about the deployed committee tags: - chains /v1/chain/contracts: get: operationId: getContracts parameters: - description: Block index or trie root in: query name: block schema: format: string type: string responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/ContractInfoResponse' type: array description: A list of all available contracts '401': content: application/json: schema: $ref: '#/components/schemas/ValidationError' description: Unauthorized (Wrong permissions, missing token) security: - Authorization: [] summary: Get all available chain contracts tags: - chains /v1/chain/deactivate: post: operationId: deactivateChain responses: '200': content: {} description: Chain was successfully deactivated '304': content: {} description: Chain was not deactivated '401': content: application/json: schema: $ref: '#/components/schemas/ValidationError' description: Unauthorized (Wrong permissions, missing token) security: - Authorization: [] summary: Deactivate a chain tags: - chains /v1/chain/dump-accounts: post: operationId: dump-accounts responses: '200': content: {} description: Accounts dump will be produced '401': content: application/json: schema: $ref: '#/components/schemas/ValidationError' description: Unauthorized (Wrong permissions, missing token) security: - Authorization: [] summary: dump accounts information into a humanly-readable format tags: - chains /v1/chain/estimategas-offledger: post: operationId: estimateGasOffledger requestBody: content: application/json: schema: $ref: '#/components/schemas/EstimateGasRequestOffledger' description: Request required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/ReceiptResponse' description: ReceiptResponse summary: Estimates gas for a given off-ledger ISC request tags: - chains x-codegen-request-body-name: Request /v1/chain/estimategas-onledger: post: description: Estimates gas usage for a given on-ledger ISC request. To calculate required L1 and L2 gas budgets use values of L1.GasBudget and L2.GasBurned respectively. operationId: estimateGasOnledger requestBody: content: application/json: schema: $ref: '#/components/schemas/EstimateGasRequestOnledger' description: Request required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/OnLedgerEstimationResponse' description: ReceiptResponse summary: Estimates gas for a given on-ledger ISC request tags: - chains x-codegen-request-body-name: Request /v1/chain/evm: post: responses: default: content: {} description: successful operation summary: Ethereum JSON-RPC tags: - chains /v1/chain/evm/ws: get: responses: default: content: {} description: successful operation summary: Ethereum JSON-RPC (Websocket transport) tags: - chains /v1/chain/mempool: get: operationId: getMempoolContents responses: '200': content: application/octet-stream: schema: items: format: int32 type: integer type: array description: stream of JSON representation of the requests in the mempool '401': content: application/octet-stream: schema: $ref: '#/components/schemas/ValidationError' description: Unauthorized (Wrong permissions, missing token) security: - Authorization: [] summary: Get the contents of the mempool. tags: - chains /v1/chain/receipts/{requestID}: get: operationId: getReceipt parameters: - description: RequestID (Hex) in: path name: requestID required: true schema: format: string type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/ReceiptResponse' description: ReceiptResponse '404': content: {} description: Chain or request id not found summary: Get a receipt from a request ID tags: - chains /v1/chain/requests/{requestID}/wait: get: operationId: waitForRequest parameters: - description: RequestID (Hex) in: path name: requestID required: true schema: format: string type: string - description: The timeout in seconds, maximum 60s in: query name: timeoutSeconds schema: format: int32 type: integer - description: Wait for the block to be confirmed on L1 in: query name: waitForL1Confirmation schema: format: boolean type: boolean responses: '200': content: application/json: schema: $ref: '#/components/schemas/ReceiptResponse' description: The request receipt '404': content: {} description: The chain or request id not found '408': content: {} description: The waiting time has reached the defined limit summary: Wait until the given request has been processed by the node tags: - chains /v1/chain/rotate: post: operationId: rotateChain requestBody: content: application/json: schema: $ref: '#/components/schemas/RotateChainRequest' description: RotateRequest required: false responses: '200': content: {} description: Chain rotation was requested '401': content: application/json: schema: $ref: '#/components/schemas/ValidationError' description: Unauthorized (Wrong permissions, missing token) security: - Authorization: [] summary: Rotate a chain tags: - chains x-codegen-request-body-name: RotateRequest /v1/chain/state/{stateKey}: get: operationId: getStateValue parameters: - description: State Key (Hex) in: path name: stateKey required: true schema: format: string type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/StateResponse' description: Result summary: Fetch the raw value associated with the given key in the chain state tags: - chains components: schemas: ValidationError: example: error: error missingPermission: missingPermission properties: error: format: string type: string xml: name: Error missingPermission: format: string type: string xml: name: MissingPermission required: - error - missingPermission type: object xml: name: ValidationError ChainRecord: example: accessNodes: - accessNodes - accessNodes isActive: true properties: accessNodes: items: format: string type: string type: array xml: name: AccessNodes wrapped: true isActive: format: boolean type: boolean xml: name: IsActive required: - accessNodes - isActive type: object xml: name: ChainRecord CoinJSON: example: coinType: coinType balance: balance properties: balance: description: The balance (uint64 as string) format: string type: string xml: name: Balance coinType: format: string type: string xml: name: CoinType required: - balance - coinType type: object xml: name: CoinJSON Limits: example: maxGasExternalViewCall: 5 minGasPerRequest: 9 maxGasPerBlock: 2 maxGasPerRequest: 7 properties: maxGasExternalViewCall: description: The maximum gas per external view call format: int64 type: integer xml: name: MaxGasExternalViewCall maxGasPerBlock: description: The maximum gas per block format: int64 type: integer xml: name: MaxGasPerBlock maxGasPerRequest: description: The maximum gas per request format: int64 type: integer xml: name: MaxGasPerRequest minGasPerRequest: description: The minimum gas per request format: int64 type: integer xml: name: MinGasPerRequest required: - maxGasExternalViewCall - maxGasPerBlock - maxGasPerRequest - minGasPerRequest type: object xml: name: Limits EstimateGasRequestOnledger: example: transactionBytes: transactionBytes properties: transactionBytes: description: Hexadecimal bytes of transaction to estimate format: string type: string xml: name: TransactionBytes required: - transactionBytes type: object xml: name: EstimateGasRequestOnledger ReceiptResponse: example: gasBurnLog: - code: 6 gasBurned: 1 - code: 6 gasBurned: 1 request: senderAccount: senderAccount allowanceError: allowanceError assets: coins: - coinType: coinType balance: balance - coinType: coinType balance: balance objects: - id: id type: type - id: id type: type isOffLedger: true requestId: requestId callTarget: contractHName: contractHName functionHName: functionHName gasBudget: gasBudget allowance: coins: - coinType: coinType balance: balance - coinType: coinType balance: balance objects: - id: id type: type - id: id type: type params: - params - params isEVM: true blockIndex: 1 rawError: code: code params: - params - params requestIndex: 1 storageDepositCharged: storageDepositCharged gasFeeCharged: gasFeeCharged errorMessage: errorMessage gasBudget: gasBudget gasBurned: gasBurned properties: blockIndex: format: int32 minimum: 1 type: integer xml: name: BlockIndex errorMessage: format: string type: string xml: name: ErrorMessage gasBudget: description: The gas budget (uint64 as string) format: string type: string xml: name: GasBudget gasBurnLog: items: $ref: '#/components/schemas/BurnRecord' type: array xml: name: GasBurnLog wrapped: true gasBurned: description: The burned gas (uint64 as string) format: string type: string xml: name: GasBurned gasFeeCharged: description: The charged gas fee (uint64 as string) format: string type: string xml: name: GasFeeCharged rawError: $ref: '#/components/schemas/UnresolvedVMErrorJSON' request: $ref: '#/components/schemas/RequestJSON' requestIndex: format: int32 minimum: 1 type: integer xml: name: RequestIndex storageDepositCharged: description: Storage deposit charged (uint64 as string) format: string type: string xml: name: SDCharged required: - blockIndex - gasBudget - gasBurnLog - gasBurned - gasFeeCharged - request - requestIndex - storageDepositCharged type: object xml: name: ReceiptResponse RequestJSON: example: senderAccount: senderAccount allowanceError: allowanceError assets: coins: - coinType: coinType balance: balance - coinType: coinType balance: balance objects: - id: id type: type - id: id type: type isOffLedger: true requestId: requestId callTarget: contractHName: contractHName functionHName: functionHName gasBudget: gasBudget allowance: coins: - coinType: coinType balance: balance - coinType: coinType balance: balance objects: - id: id type: type - id: id type: type params: - params - params isEVM: true properties: allowance: $ref: '#/components/schemas/AssetsJSON' allowanceError: format: string type: string xml: name: AllowanceError assets: $ref: '#/components/schemas/AssetsJSON' callTarget: $ref: '#/components/schemas/CallTargetJSON' gasBudget: description: The gas budget (uint64 as string) format: string type: string xml: name: GasBudget isEVM: format: boolean type: boolean xml: name: IsEVM isOffLedger: format: boolean type: boolean xml: name: IsOffLedger params: items: format: string type: string type: array xml: name: Params wrapped: true requestId: format: string type: string xml: name: RequestID senderAccount: format: string type: string xml: name: SenderAccount required: - allowance - assets - callTarget - gasBudget - isEVM - isOffLedger - params - requestId - senderAccount type: object xml: name: RequestJSON EstimateGasRequestOffledger: example: requestBytes: requestBytes fromAddress: fromAddress properties: fromAddress: description: The address to estimate gas for(Hex) format: string type: string xml: name: FromAddress requestBytes: description: Offledger Request (Hex) format: string type: string xml: name: Request required: - fromAddress - requestBytes type: object xml: name: EstimateGasRequestOffledger FeePolicy: example: gasPerToken: a: 0 b: 0 validatorFeeShare: 5 evmGasRatio: a: 0 b: 0 properties: evmGasRatio: $ref: '#/components/schemas/Ratio32' gasPerToken: $ref: '#/components/schemas/Ratio32' validatorFeeShare: description: The validator fee share. format: int32 type: integer xml: name: ValidatorFeeShare required: - evmGasRatio - gasPerToken - validatorFeeShare type: object xml: name: FeePolicy Ratio32: example: a: 0 b: 0 properties: a: format: int32 minimum: 0 type: integer xml: name: A b: format: int32 minimum: 0 type: integer xml: name: B required: - a - b type: object xml: name: Ratio32 PeeringNodeStatusResponse: example: isAlive: true peeringURL: peeringURL name: name publicKey: publicKey numUsers: 0 isTrusted: true properties: isAlive: description: Whether or not the peer is activated format: boolean type: boolean xml: name: IsAlive isTrusted: format: boolean type: boolean xml: name: IsTrusted name: format: string type: string xml: name: Name numUsers: description: The amount of users attached to the peer format: int32 type: integer xml: name: NumUsers peeringURL: description: The peering URL of the peer format: string type: string xml: name: PeeringURL publicKey: description: The peers public key encoded in Hex format: string type: string xml: name: PublicKey required: - isAlive - isTrusted - name - numUsers - peeringURL - publicKey type: object xml: name: PeeringNodeStatusResponse UnresolvedVMErrorJSON: example: code: code params: - params - params properties: code: format: string type: string xml: name: ErrorCode params: items: format: string type: string type: array xml: name: Params wrapped: true type: object xml: name: UnresolvedVMErrorJSON ContractInfoResponse: example: name: name hName: hName properties: hName: description: The id (HName as Hex)) of the contract. format: string type: string xml: name: HName name: description: The name of the contract. format: string type: string xml: name: Name required: - hName - name type: object xml: name: ContractInfoResponse CallTargetJSON: example: contractHName: contractHName functionHName: functionHName properties: contractHName: description: The contract name as HName (Hex) format: string type: string xml: name: ContractHName functionHName: description: The function name as HName (Hex) format: string type: string xml: name: FunctionHName required: - contractHName - functionHName type: object xml: name: CallTargetJSON OnLedgerEstimationResponse: example: l1: storageRebate: storageRebate storageFee: storageFee computationFee: computationFee gasFeeCharged: gasFeeCharged gasBudget: gasBudget l2: gasBurnLog: - code: 6 gasBurned: 1 - code: 6 gasBurned: 1 request: senderAccount: senderAccount allowanceError: allowanceError assets: coins: - coinType: coinType balance: balance - coinType: coinType balance: balance objects: - id: id type: type - id: id type: type isOffLedger: true requestId: requestId callTarget: contractHName: contractHName functionHName: functionHName gasBudget: gasBudget allowance: coins: - coinType: coinType balance: balance - coinType: coinType balance: balance objects: - id: id type: type - id: id type: type params: - params - params isEVM: true blockIndex: 1 rawError: code: code params: - params - params requestIndex: 1 storageDepositCharged: storageDepositCharged gasFeeCharged: gasFeeCharged errorMessage: errorMessage gasBudget: gasBudget gasBurned: gasBurned properties: l1: $ref: '#/components/schemas/L1EstimationResult' l2: $ref: '#/components/schemas/ReceiptResponse' required: - l1 - l2 type: object xml: name: OnLedgerEstimationResponse ChainInfoResponse: example: chainAdmin: chainAdmin metadata: website: website evmWebSocketURL: evmWebSocketURL name: name description: description evmJsonRpcURL: evmJsonRpcURL gasLimits: maxGasExternalViewCall: 5 minGasPerRequest: 9 maxGasPerBlock: 2 maxGasPerRequest: 7 chainID: chainID evmChainId: 1 publicURL: publicURL gasFeePolicy: gasPerToken: a: 0 b: 0 validatorFeeShare: 5 evmGasRatio: a: 0 b: 0 isActive: true properties: chainAdmin: description: The chain admin address (Hex Address) format: string type: string xml: name: ChainAdmin chainID: description: ChainID (Hex Address) format: string type: string xml: name: ChainID evmChainId: description: The EVM chain ID format: int32 minimum: 1 type: integer xml: name: EVMChainID gasFeePolicy: $ref: '#/components/schemas/FeePolicy' gasLimits: $ref: '#/components/schemas/Limits' isActive: description: Whether or not the chain is active format: boolean type: boolean xml: name: IsActive metadata: $ref: '#/components/schemas/PublicChainMetadata' publicURL: description: The fully qualified public url leading to the chains metadata format: string type: string xml: name: PublicURL required: - chainAdmin - chainID - evmChainId - gasFeePolicy - gasLimits - isActive - metadata - publicURL type: object xml: name: ChainInfoResponse CommitteeInfoResponse: example: candidateNodes: - node: isAlive: true peeringURL: peeringURL name: name publicKey: publicKey numUsers: 0 isTrusted: true accessAPI: accessAPI - node: isAlive: true peeringURL: peeringURL name: name publicKey: publicKey numUsers: 0 isTrusted: true accessAPI: accessAPI committeeNodes: - node: isAlive: true peeringURL: peeringURL name: name publicKey: publicKey numUsers: 0 isTrusted: true accessAPI: accessAPI - node: isAlive: true peeringURL: peeringURL name: name publicKey: publicKey numUsers: 0 isTrusted: true accessAPI: accessAPI chainId: chainId accessNodes: - node: isAlive: true peeringURL: peeringURL name: name publicKey: publicKey numUsers: 0 isTrusted: true accessAPI: accessAPI - node: isAlive: true peeringURL: peeringURL name: name publicKey: publicKey numUsers: 0 isTrusted: true accessAPI: accessAPI stateAddress: stateAddress active: true properties: accessNodes: description: A list of all access nodes and their peering info. items: $ref: '#/components/schemas/CommitteeNode' type: array xml: name: AccessNodes wrapped: true active: description: Whether or not the chain is active. format: boolean type: boolean xml: name: Active candidateNodes: description: A list of all candidate nodes and their peering info. items: $ref: '#/components/schemas/CommitteeNode' type: array xml: name: CandidateNodes wrapped: true chainId: description: ChainID (Hex Address). format: string type: string xml: name: ChainID committeeNodes: description: A list of all committee nodes and their peering info. items: $ref: '#/components/schemas/CommitteeNode' type: array xml: name: CommitteeNodes wrapped: true stateAddress: format: string type: string xml: name: StateAddress required: - accessNodes - active - candidateNodes - chainId - committeeNodes - stateAddress type: object xml: name: CommitteeInfoResponse AssetsJSON: example: coins: - coinType: coinType balance: balance - coinType: coinType balance: balance objects: - id: id type: type - id: id type: type properties: coins: items: $ref: '#/components/schemas/CoinJSON' type: array xml: name: Coins wrapped: true objects: items: $ref: '#/components/schemas/IotaObjectJSON' type: array xml: name: Objects wrapped: true required: - coins - objects type: object xml: name: AssetsJSON IotaObjectJSON: example: id: id type: type properties: id: description: Hex-encoded object ID format: string type: string xml: name: ID type: format: string type: string xml: name: Type required: - id - type type: object xml: name: IotaObjectJSON BurnRecord: example: code: 6 gasBurned: 1 properties: code: format: int32 type: integer xml: name: Code gasBurned: format: int64 type: integer xml: name: GasBurned required: - code - gasBurned type: object xml: name: BurnRecord L1EstimationResult: example: storageRebate: storageRebate storageFee: storageFee computationFee: computationFee gasFeeCharged: gasFeeCharged gasBudget: gasBudget properties: computationFee: description: Gas cost for computation (uint64 as string) format: string type: string xml: name: ComputationFee gasBudget: format: string type: string xml: name: GasBudget gasFeeCharged: description: 'Total gas fee charged: computation fee + storage fee - storage rebate (uint64 as string)' format: string type: string xml: name: GasFeeCharged storageFee: description: Gas cost for storage (uint64 as string) format: string type: string xml: name: StorageFee storageRebate: description: Gas rebate for storage (uint64 as string) format: string type: string xml: name: StorageRebate required: - computationFee - gasBudget - gasFeeCharged - storageFee - storageRebate type: object xml: name: L1EstimationResult ContractCallViewRequest: example: contractHName: contractHName functionName: functionName functionHName: functionHName arguments: - arguments - arguments block: block contractName: contractName properties: arguments: description: Encoded arguments to be passed to the function items: format: string type: string type: array xml: name: Arguments wrapped: true block: format: string type: string xml: name: Block contractHName: description: The contract name as HName (Hex) format: string type: string xml: name: ContractHName contractName: description: The contract name format: string type: string xml: name: ContractName functionHName: description: The function name as HName (Hex) format: string type: string xml: name: FunctionHName functionName: description: The function name format: string type: string xml: name: FunctionName required: - arguments - contractHName - contractName - functionHName - functionName type: object xml: name: ContractCallViewRequest StateResponse: example: state: state properties: state: description: The state of the requested key (Hex-encoded) format: string type: string xml: name: State required: - state type: object xml: name: StateResponse RotateChainRequest: example: rotateToAddress: rotateToAddress properties: rotateToAddress: description: The address of the new committee or empty to cancel attempt to rotate format: string type: string xml: name: RotateToAddress type: object xml: name: RotateChainRequest PublicChainMetadata: example: website: website evmWebSocketURL: evmWebSocketURL name: name description: description evmJsonRpcURL: evmJsonRpcURL properties: description: description: The description of the chain. format: string type: string xml: name: Description evmJsonRpcURL: description: The EVM json rpc url format: string type: string xml: name: EVMJsonRPCURL evmWebSocketURL: description: The EVM websocket url) format: string type: string xml: name: EVMWebSocketURL name: description: The name of the chain format: string type: string xml: name: Name website: description: The official website of the chain. format: string type: string xml: name: Website required: - description - evmJsonRpcURL - evmWebSocketURL - name - website type: object xml: name: PublicChainMetadata CommitteeNode: example: node: isAlive: true peeringURL: peeringURL name: name publicKey: publicKey numUsers: 0 isTrusted: true accessAPI: accessAPI properties: accessAPI: format: string type: string xml: name: AccessAPI node: $ref: '#/components/schemas/PeeringNodeStatusResponse' required: - accessAPI - node type: object xml: name: CommitteeNode securitySchemes: Authorization: description: JWT Token in: header name: Authorization type: apiKey externalDocs: description: Find out more about Wasp url: https://wiki.iota.org/smart-contracts/overview x-original-swagger-version: '2.0'