{"openapi":"3.0.0","info":{"title":"Utila API","version":"v2"},"tags":[{"name":"Overview","description":"Utila provides a robust API for developers to programmatically leverage Utila's capabilities without compromising on security.\n\nThese abilities mainly include:\n\n1. **Monitoring** wallets, transactions, balances and other types of financial and blockchain data.\n2. Registering for various events using **webhooks**.\n3. **Initiating** transactions.\n4. Transaction **signing** via an automated co-signer.\n\n\nUtila Terminology:\n\n**Vault** - an organization's workspace having a single security policy and key material for all underlying assets.\nA vault can contain multiple wallets.\n\n**Wallet** - a set of blockchain addresses, grouped to serve a separate financial entity or functionality.\nEach wallet has a list of enabled chains. For each chain, a wallet will have a single blockchain address (except bitcoin).\n\n**Asset** - a cryptocurrency. \n\n**Balances** - the token or $USD equivalent amount of the assets in a wallet.\n\n**Transaction** - a logged asset transfer or a key signature action. \nA transaction can appear in different stages: created, approved, signed, published, mined and completed.\n\n**Service Account** - a virtual user account allowed to perform API based actions. \nA service account can be granted either a viewer or a signer role (co-signer).\n\n**Co-Signer** - A tool integrated in Utila CLI, which allows you to sign transactions automatically\nby accessing a secure key share programmatically in the organization's environment.\n\n"},{"name":"Authentication","description":"In order to autheticate with Utila API you will need to:\n\n1. Create a service account.\n1. Add the service account as a member to any desired vaults.\n1. Generate an access token and provide it alongside the request.\n\n## Create a Service Account\n\n1. Generate an RSA keypair to be used for the service account authentication (using `openssl`, KMS, etc.).\n\n1. In the [Console](https://console.utila.io) navigate to `Vault Settings` &rarr; `Service Accounts`.\n\n1. Create a new service account with the desired public key, display name and email address.\n\n1. Add your service account as a member to any desired vaults _(this operation is subject to admin quorum approval)_.\n\n## Generate Access Token Using Private Key\n\nGenerating an access token using a private key is done by signing using the private key associated with the service account on a JWT with the following claims:\n\n- `sub` (Subject): The email of the service account (e.g. `my-service-account@vault-aa11bb2cc33dd44.utilaserviceaccount.io`).\n- `aud` (Audience): The Utila API URI (`https://api.utila.io/`).\n- `exp` (Expiration Time): The expiration time of the token, must be no longer than an hour since the current time or since the `iat` (Issued At), if specified.\n\n### Python\n\n```python\nSERVICE_ACCOUNT_EMAIL = os.getenv('SA_EMAIL')\nSERVICE_ACCOUNT_PRIVATE_KEY = os.getenv('SA_PRIVATE_KEY')\n\ndef generate_token():\n    return jwt.encode(\n    {\n        \"sub\": SERVICE_ACCOUNT_EMAIL,\n        \"aud\": \"https://api.utila.io/\",\n        \"exp\": datetime.datetime.utcnow() + datetime.timedelta(hours=1)\n    },\n    SERVICE_ACCOUNT_PRIVATE_KEY,\n    algorithm=\"RS256\"\n)\n```\n\n### TypeScript\n\n```js\nimport jwt from 'jsonwebtoken';\n\nconst SERVICE_ACCOUNT_EMAIL = 'SA_EMAIL'\nconst SERVICE_ACCOUNT_PRIVATE_KEY = 'SA_PRIVATE_KEY'\n\nfunction generateToken() {\n  const options = <jwt.SignOptions>{\n    subject: SERVICE_ACCOUNT_EMAIL,\n    audience: \"https://api.utila.io/\",\n    expiresIn: \"1h\",\n    algorithm: <jwt.Algorithm>\"RS256\",\n  };\n  return jwt.sign({}, SERVICE_ACCOUNT_PRIVATE_KEY, options);\n}\n```\n\n## Using Access Token\n\nProvide the access token as a header parameter, `Authorization: Bearer ${Token}` to all endpoints of this API.\n\n### Python\n\n```python\nclass RestClient:\n    def __init__(self, token, domain):\n        self.token = token\n        self.domain = domain\n\n    def get(self, endpoint):\n        res = requests.get(f'https://{self.domain}{endpoint}', headers=self._common_headers())\n        res.raise_for_status()\n        return res.json()\n\n    def post(self, endpoint, req):\n        headers = self._common_headers()\n        headers['Content-Type'] = 'application/json'\n        res = requests.post(f'https://{self.domain}{endpoint}', headers=headers, json=req)\n        res.raise_for_status()\n        return res.json()\n\n    def _common_headers(self):\n        return {'Authorization': f'Bearer {self.token}'}\n```\n\n### Typescript\n\n```js\n/**\n * Simplistic REST client for making authenticated HTTP requests.\n * In real-life applications, this may be replaced with a more robust HTTP client package, such as `axios`.\n */\nexport class RestClient {\n\tconstructor(private readonly accessToken: string, private readonly domain: string) {\n\t}\n\n\tasync get(path: string): Promise<any> {\n\t\tconst res = await fetch(`https://${this.domain}${path}`, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: this.buildCommonHeaders(),\n\t\t});\n\t\treturn res.json();\n\t}\n\n\tasync post(path: string, body: Record<string, unknown>): Promise<any> {\n\t\tconst res = await fetch(`https://${this.domain}${path}`, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: this.buildCommonHeaders(),\n\t\t\tbody: JSON.stringify(body),\n\t\t});\n\t\treturn res.json();\n\t}\n\n\tprivate buildCommonHeaders(): Record<string, string> {\n\t\treturn {\n\t\t\t'Authorization': `Bearer ${this.accessToken}`,\n\t\t\t'Content-Type': 'application/json',\n\t\t};\n\t}\n}\n```\n"},{"name":"Vaults"},{"name":"Transactions"},{"name":"Address Book"},{"name":"Wallets"},{"name":"Balances"},{"name":"Blockchains"},{"name":"Assets"},{"name":"Policy"},{"name":"Webhooks","description":"Webhooks are a powerful feature that enables you to stay up-to-date with events in Utila without the need for constant polling. Instead, we send data directly to your application when relevant events occur such as deposit to specific wallets, transaction state change, and wallet creation.\n\n## Webhook Creation\n\n1. In the [Console](https://console.utila.io) navigate to `Vault Settings` &rarr; `Webhooks`.\n\n1. Click on `Add Webhook`.\n\n1. Provide a display name for your webhook.\n\n1. Provide the URL where you want to receive webhook data. This is where we'll send notifications when the selected events occur.\\\n   You can test the endpoint by clicking on `Test` - this will send a test event to your endpoint.\n\n1. Select the events you want to be notified about. For example, you can choose to receive notifications when a new transaction is created.\n\n1. Click `Add` to save the webhook.\n\n## Webhook Event Payload\n\nWhen an event occurs, we'll send you a JSON payload containing the relevant information about the event.\\\n Here are example messages of what you might receive:\n\n### Transaction Created\n\n```json\n{\n  \"id\": \"94ea3ce9-fb6d-41f3-91aa-8c42f17df1f6\",\n  \"vault\": \"vaults/3bf247bc8ee2c\",\n  \"type\": \"TRANSACTION_CREATED\",\n  \"resourceType\": \"TRANSACTION\",\n  \"resource\": \"vaults/3bf247bc8ee2c/transactions/b6e3cd32e827\"\n}\n```\n\n### Transaction State Updated\n\n```json\n{\n  \"id\": \"9c683b37-bfb6-42f4-bcaa-1a6f46d3b6f8\",\n  \"vault\": \"vaults/3bf247bc8ee2c\",\n  \"type\": \"TRANSACTION_STATE_UPDATED\",\n  \"details\": {\n    \"transactionStateUpdated\": {\n      \"newState\": \"CONFIRMED\"\n    }\n  },\n  \"resourceType\": \"TRANSACTION\",\n  \"resource\": \"vaults/3bf247bc8ee2c/transactions/b6e3cd2e8217\"\n}\n```\n\n### Wallet Created\n\n```json\n{\n  \"id\": \"94ea3ce9-fb6d-41f3-91aa-8c42f17df1f6\",\n  \"vault\": \"vaults/3bf247bc8ee2c\",\n  \"type\": \"WALLET_CREATED\",\n  \"resourceType\": \"WALLET\",\n  \"resource\": \"vaults/3bf247bc8ee2c/wallets/b6e3cd32e827\"\n}\n```\n\n### Wallet Address Created\n\n```json\n{\n  \"id\": \"94ea3ce9-fb6d-41f3-91aa-8c42f17df1f6\",\n  \"vault\": \"vaults/3bf247bc8ee2c\",\n  \"type\": \"WALLET_ADDRESS_CREATED\",\n  \"resourceType\": \"WALLET_ADDRESS\",\n  \"resource\": \"vaults/3bf247bc8ee2c/wallets/b6e3cd32e827/addresses/4340c6919558\"\n}\n```\n\n### Transaction AML Screening Result Ready\n\n```json\n{\n  \"id\": \"30tv7byD3k1DLTU1xVVfeNnX3pa\",\n  \"vault\": \"vaults/489c81985ea0\",\n  \"type\": \"TRANSACTION_AML_SCREENING_RESULT_READY\",\n  \"details\": {\n    \"transactionAmlScreeningResultReady\": {\n      \"action\": \"ALLOW\"\n    }\n  },\n  \"resourceType\": \"TRANSACTION\",\n  \"resource\": \"vaults/489c81985ea0/transactions/fb9bb214db4a\"\n}\n``` \n\n## Webhook Security\n\nHere are some important requirements and guidelines to keep your webhook integration secure:\n\n- Use HTTPS in your webhook endpoint, to ensure data is encrypted in transit.\n\n- Validate the events using the signature attached in the request header:\n\n  - A signature on the event payload is attached in a request header named `x-utila-signature`.\n\n  - The signature is computed using RSA-4096 encryption, SHA512 hash and PSS padding, and encoded in base64.\n\n  - The signature can be validated using Utila's webhook public key:\n\n    ```text\n    -----BEGIN PUBLIC KEY-----\n    MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAulI1XPGRDFcymdf2zXvD\n    spfdTXA1g0NOavZ50+AtcQP7f+KTpXoO1bkr6x9dO2Jq8FHImRT1sbhKhcNXT4WC\n    dLSa/2Zh60QE3tp9d51o1XDSnzRMwcGbFyJ7C30DVpVEIwqD2Z5GRlzXinqIeVdY\n    GOubuVol/wOAynS32DX+6y2PiqbYj7P84csBOgpNT27Mc6InEqKb7LWQtU8LPttx\n    tfyceOPXE5G4h+UujPsPG6WN5MHHVbP9r6oneEF3knbfL3hCJRjwV9HfTtG6JyYr\n    25Dy6SOCphrlEZi8IGcKxL6fEMetDGGVCjm7XfHyt6fYoUonD9lZsvbSyUsRwf/1\n    +x77F2LxtzQyvMJR9jD16WUyzm+fUBSVQixxKnKSrVkeLqkmGboDTY5kw3doSVTP\n    zcGDzWkzqC3lgwRLnSg4J+koQY+yo9jYBbFdSp+/PfVmp9NEaBuCV63mp/85VWIh\n    1FRYe6lEdGZWdmIcbDvNYU/Cui/yGZoID7+sJJq/rWN0Qxx/0skEaT/083+iYLVA\n    QNLvWtmQfgNKPm6GeQknRUEWyWUJtq6ANeP/8hGVM1G/edOdLn+KfhXZvw41O5z1\n    uKHEqHIV+NaCNnFbDj924bJhA/fWNKxYv7/Nm44Wy1nXlgqdHiFkSqtjUBPmzE/n\n    yj92azWBq1RbGHY+9/POguMCAwEAAQ==\n    -----END PUBLIC KEY-----\n    ```\n\n  - See example below for validation\n\n## Webhook Response\n\nThe webhook endpoint is expected to respond with a success status code (200-299) to confirm the webhook event was received.\n\n## Webhook Retries\n\nIn case the webhook endpoint does not respond with a successful acknowledgment, we'll make multiple attempts to deliver the event using an exponential back-off mechanism (which means the time between each attempt gradually increases) for up to 24 hours, after which the event will be considered undeliverable and be discarded.\n\nThis retry mechanism ensures that even if there are temporary issues on your end, you have a 24-hour window to receive the event data successfully. It's designed to make your webhook integration as reliable as possible.\n\n## Webhook Example\n\nThe following code snippet is a webhook function configured to parse the event, handle it and return a 200 response upon successful handling.\n\n### Python\n\n```python\nimport base64\nfrom Cryptodome.PublicKey import RSA\nfrom Cryptodome.Signature import pss\nfrom Cryptodome.Hash import SHA512\nfrom flask import Flask, request\n\n\napp = Flask(__name__)\n\n@app.route('/webhook', methods=['POST'])\ndef webhook():\n    # Check if the request contains JSON data\n    if request.is_json:\n        data = request.get_json()\n\n\t\tif not verify_signature(request.headers.get('x-utila-signature'), request.data, utila_public_key):\n\t\t\treturn 'Invalid signature', 400\n\n        # Check the event type\n        event_type = data.get(\"type\")\n\n        if event_type:\n            # Process based on the event type\n            if event_type == \"TRANSACTION_CREATED\":\n                # handle_transaction_created(data)\n            elif event_type == \"TRANSACTION_STATE_UPDATED\":\n                # handle_transaction_state_updated(data)\n            else:\n                # handle_unknown_event(data)\n\n            # Respond with a success status code (HTTP 200 OK)\n            return '', 200\n\n    # If the request doesn't contain valid JSON data or an unknown event type, respond with an error\n    return 'Invalid request data or event type', 400\n\ndef verify_signature(signature_base64, data, public_key_pem):\n    try:\n        # Load the public key from its PEM-encoded representation\n        public_key = RSA.import_key(public_key_pem)\n\n        # Decode the base64-encoded signature\n        signature = base64.b64decode(signature_base64)\n\n        # Create a SHA-512 hash object and update it with the data\n        h = SHA512.new(data)\n\n        # Verify the signature\n        pss.new(public_key).verify(h, signature)\n\n        return True\n    except (ValueError, TypeError, AssertionError) as e:\n        print(f\"Signature verification failed: {str(e)}\")\n        return False\n\nif __name__ == '__main__':\n    app.run(host='0.0.0.0', port=5000)\n\n```\n\n### TypeScript\n\n```js\nimport { createVerify, constants } from \"crypto\";\nimport express from \"express\";\n\nconst publicKey = `...`;\nconst app = express();\nconst port = 5000;\n\nfunction verifyUtilaSignatureMiddleware(req, res, next) {\n  let data = \"\";\n\n  req.on(\"data\", (chunk) => (data += chunk));\n\n  req.on(\"end\", () => {\n    try {\n      const isValid = verifySignature(\n        req.headers[\"x-utila-signature\"],\n        data,\n        publicKey\n      );\n\n      if (!isValid) {\n        throw new Error(\"Signature verification failed\");\n      }\n\n      req.body = JSON.parse(data);\n      next();\n    } catch (e) {\n      res.status(401).send({ error: e.message });\n    }\n  });\n}\n\napp.post(\"/my-webhook\", verifyUtilaSignatureMiddleware, (req, res) => {\n  console.log(req.body);\n\n  if (req.body.type === \"TEST\") {\n    // Do something when the webhook type is TEST\n  }\n\n  return res.json({ success: true });\n});\n\nfunction verifySignature(signatureBase64, data, publicKey) {\n  try {\n    const signatureBuffer = Buffer.from(signatureBase64, \"base64\");\n    const verifier = createVerify(\"RSA-SHA512\");\n\n    verifier.update(data);\n\n    const isValid = verifier.verify(\n      {\n        key: publicKey,\n        padding: constants.RSA_PKCS1_PSS_PADDING,\n        saltLength: constants.RSA_PSS_SALTLEN_DIGEST,\n      },\n      signatureBuffer\n    );\n\n    return isValid;\n  } catch (error) {\n    return false;\n  }\n}\n\napp.listen(port, () => {\n  console.log(`Webhook server listening at http://localhost:${port}`);\n});\n```\n"},{"name":"CLI","description":"The CLI is a tool that allows you to interact with the Utila API from the command line. Using the CLI you can set up a device, download key shares and sign transactions on a machine of your desire.\n\n## Downloads\n\nYou can download the CLI from the [Resource Center in the Utila Console](https://console.utila.io/resource-center).\n\n## CLI Commands\n\nThe CLI has several commands under its hood, some of which are:\n\n- `vaults` - Vault operations\n  - `list` - List vaults\n- `devices` - Device Operations\n  - `list` - List vault devices\n  - `register` - Create device\n- `keys` - Keys and key shares operations\n  - `list` - List vault keys\n  - `download` - Download and activate key share\n- `transactions` - Transaction operations\n  - `sign` - Sign a transaction\n- `cosigner` - Co-Signer operations\n  - `run` - Run the co-signer\n- `auth` - CLI Authentication configuration\n- `config` - CLI configuration\n- `utils` - CLI utils\n  - `generate-keypair` - Generate RSA key-pair\n\nFor a full list of commands, please read the CLI help by using the `--help` flag.\n\n## Authentication\n\nAuthentication in the CLI is done using a service account.\\\nPlease refer to the [Create a Service Account section](#tag/Authentication/Create-a-Service-Account) to learn how to create a service account.\n\nTo configure the CLI to authenticate using a service account, you'll need to set the authentication details for the service account using the `auth set-service-account-credentials` command, and specify the desired account to use when running a command using the `--account` top-level flag (or using the `$UTILA_ACCOUNT` environment variable).\n\nAlternatively, you can set the authentication details of the user, in one of following forms:\n\n- Set the service account's private key using the `$UTILA_SA_PRIVATE_KEY` environment variable\n- Put the service account's private key under the config dir in the following location: `<config-dir>/credentials/<account-email>/private_key.pem`\\\n\n## CLI config\n\nIn various CLI commands you will need to specify parameters like vault ID, device ID, key ID, etc.\n\nAs you probably will use the CLI with the same vault and the same device, for the ease of use, instead of specifying them on each and every command you can set the default parameters to use using the `config set` command, as follows:\\\n`./utila config set account <account-email>`\n\n## Device Creation\n\nTo be able to sign transactions using the CLI and the co-signer, a device and a key share are needed. Follow the following steps to create a device and download a key share.\n\n### Prepare a keypair for the device\n\nDevice creation requires a key-pair which will be associated with the device. You have multiple options of key-pairs to use for the device keypair:\n\n1. Re-use the keypair that is associated with the service account.\n1. Generate a new keypair.\\\n   You can do it by yourself, or by running the following command:\\\n   `./utila utils generate-keypair --name <key-file-name>`\n\n### Create device\n\nOnce you have your keypair ready, run the following commands to create a device:\\\n`./utila devices register --vault-id <vault-id> --private-device-key <private-key-file-path>`\n\n### Approve and sign the device\n\nNow that you've created a device for the service account, it needs to get approved by the admin quorum, signed and get the relevant wallet keyshares, which will be used for signing transactions.\n\nUse the Utila mobile app to approve and sign the service account's device.\n\n### Download the wallet keyshares\n\nNow that the device has been approved and signed by the admin quorum and encrypted wallet key shares were generated and uploaded for the new device, run the following command to download and decrypt the key shares:\\\n`./utila keys download --vault-id <vault-id> --device-id <device-id>`\n"},{"name":"Co-Signer","description":"The co-signer is a tool integrated in the CLI which allows you to sign transactions automatically.\n\nThe co-signer polls the transactions in a given vault, and operates on any transaction which is awaiting signature and for which the authenticated service account is set as the designated signer.\n\nThe co-signer has two modes of operation:\n\n- Sign all transactions - in this mode, the co-signer signs all the transactions which are designated to it.\n- Webhook - in this mode, the co-signer sends transactions which are designated to it to the specified webhook, and signs or cancels the transaction depending on the webhook's response.\n\n## Setup\n\nIn order to setup the co-signer, a device and a keyshare need to be created. Follow the steps under the [Device Creation section](https://api-preview.docs.utila.io/v2/index.html#tag/CLI/Device-Creation)\n\n## Sign all transactions\n\nIn order to run the co-signer in its basic configuration, which signs all of the relevant transactions, run the following command:\\\n`./utila cosigner run  --vault-id <vault-id> --device-id <device-id> --sign-all-txs`\n\n## Co-Signer Webhook\n\nYou can configure a webhook for the co-signer using the `--webhook-url` flag.\n\nEach transaction which is awaiting signtaure and designated to the authenticated service account will be sent to the specified webhook and based on the response the co-signer will sign or cancel the transaction.\n\nNote: Don't confuse the co-signer webhook with the event webhooks, which are configured using the console.\n\n### Webhook Input\n\nThe webhook will get the transaction object, as is supplied in the Utila API (same as in `ListTransactions`, etc.).\n\n### Webhook Output\n\nThe webhook is expected to respond with a status of `200 OK` and a JSON containing a boolean field `signTransaction`, which indicates if the transaction should be signed or canceled. For example:\n\n```json\n{\n  \"signTransaction\": true\n}\n```\n"},{"name":"Changelog","description":"The current API version is v2.\nv1alpha1 is planned to be deprecated by 01/03/2025.\n"},{"name":"GasStations"}],"paths":{"/v2/networks/{network_id}":{"get":{"summary":"GetNetwork","description":"Retrieves a Network by resource name.","operationId":"Blockchains_GetNetwork","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2GetNetworkResponse"}}}}},"parameters":[{"name":"network_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Blockchains"]}},"/v2/networks":{"get":{"summary":"ListNetworks","description":"Returns the list of networks available for use.\n\nTo list custom EVM networks, use [ListVaultNetworks](#operation/Blockchains_ListVaultNetworks)","operationId":"Blockchains_ListNetworks","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2ListNetworksResponse"}}}}},"parameters":[{"name":"pageSize","description":"The maximum number of items to return. The service may return fewer than this value.\n\nNote: pagination is currently not supported.","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageToken","description":"A page token, received from the previous list call as `nextPageToken`.\n\nNote: pagination is currently not supported.","in":"query","required":false,"schema":{"type":"string"}}],"tags":["Blockchains"]}},"/v2/vaults/{vault_id}/networks":{"get":{"summary":"ListVaultNetworks","description":"Returns the list of vault networks available for use.","operationId":"Blockchains_ListVaultNetworks","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2ListVaultNetworksResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"pageSize","description":"Note: pagination is currently not supported.","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageToken","description":"A page token, received from the previous list call as `nextPageToken`.\n\nNote: pagination is currently not supported.","in":"query","required":false,"schema":{"type":"string"}}],"tags":["Blockchains"]}},"/v2/networks/{network_id}/batchContracts/latest":{"get":{"summary":"GetLatestBatchContract","description":"Retrieves the latest BatchContract. Batch transfer of ERC20 tokens require a token approval for that contract.","operationId":"Blockchains_GetLatestBatchContract","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2BatchContract"}}}}},"parameters":[{"name":"network_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Blockchains"]}},"/v2/vaults/{vault_id}/addressBookEntries":{"get":{"summary":"ListAddressBookEntries","description":"Retrieve a list of all address book entries in a vault.","operationId":"AddressBook_ListAddressBookEntries","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2ListAddressBookEntriesResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"pageSize","description":"The maximum number of address book entries to return.\nThe service may return fewer than this value.\nIf unspecified, at most 50 address book entries will be returned.\nThe maximum value is 1000; values above 1000 will be coerced to 1000.","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageToken","description":"A page token, received from a previous `ListAddressBookEntries` call.\nProvide this to retrieve the subsequent page.\n\nWhen paginating, all other parameters provided to `ListAddressBookEntries` must\nmatch the call that provided the page token.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter","description":"A filter expression that filters address book entries listed in the response.\n\nSupported fields and functions:\n| Name | Description | Example |\n|------|-------------|---------|\n| `network` | Filter by one or more networks (`string...`). | `network(\"networks/ethereum-mainnet\")` |\n| `address` | Filter by one or more addresses, case-insensitive (`string...`). | `address(\"0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6\")` |\n| `display_name` | Filter by one or more display names, exact match and case-sensitive, supports a maximum of 100 display names. (`string...`). | `display_name(\"Cold Storage\", \"My Wallet\")` |\n| `create_time` | Filter by creation time (`string` comparison). | `create_time > \"2023-08-29T18:04:00Z\"` |","in":"query","required":false,"schema":{"type":"string"}},{"name":"orderBy","description":"A comma-separated list of fields by which to order the results.\nValid fields are:\n  * `create_time`\n  * `display_name`\n  * `address`\n  * `network`\n\nThe default sorting order is ascending. To specify descending order for a field, a suffix ` desc` should be appended to the field name. For example: `create_time desc`.\n\nRedundant field names are collapsed. For example if one specifies `create_time desc, create_time`, the results will be sorted by `create_time desc` only.\n\nIf a field is not specified, the results will be sorted by the default sorting order.","in":"query","required":false,"schema":{"type":"string"}}],"tags":["Address Book"]}},"/v2/vaults/{vault_id}/addressBookEntries:batchGet":{"get":{"summary":"BatchGetAddressBookEntries","description":"Retrieve multiple address book entries by resource name.","operationId":"AddressBook_BatchGetAddressBookEntries","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2BatchGetAddressBookEntriesResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"names","description":"The resource names of the address book entries to retrieve.\n\nFormat: `vaults/{vault_id}/addressBookEntries/{entry_id}`","in":"query","required":true,"explode":true,"schema":{"type":"array","items":{"type":"string"}}}],"tags":["Address Book"]}},"/v2/vaults/{vault_id}/addressBookEntries:batchCreate":{"post":{"summary":"BatchCreateAddressBookEntries","description":"Batch creates address book entries.","operationId":"AddressBook_BatchCreateAddressBookEntries","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2BatchCreateAddressBookEntriesResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookBatchCreateAddressBookEntriesBody"}}},"required":true},"tags":["Address Book"]}},"/v2/vaults/{vault_id}/addressBookEntries:unsignedBatchCreate":{"post":{"summary":"BatchCreateUnsignedAddressBookEntries","description":"Batch creates address book entries without per-entry vault signatures (quorum approval only).","operationId":"AddressBook_BatchCreateUnsignedAddressBookEntries","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2BatchCreateUnsignedAddressBookEntriesResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookBatchCreateUnsignedAddressBookEntriesBody"}}},"required":true},"tags":["Address Book"]}},"/v2/vaults/{vault_id}/addressBookEntries:batchAdd":{"post":{"summary":"BatchAddAddressBookEntriesToGroup","description":"Batch add existing address book entries to an address book entry group.\nInitiates a quorum action.","operationId":"AddressBook_BatchAddAddressBookEntriesToGroup","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2BatchAddAddressBookEntriesToGroupResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookBatchAddAddressBookEntriesToGroupBody"}}},"required":true},"tags":["Address Book"]}},"/v2/assets/{asset_id}":{"get":{"summary":"GetAsset","description":"Retrieves an asset by resource name.","operationId":"Assets_GetAsset","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2GetAssetResponse"}}}}},"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Assets"]}},"/v2/assets:batchGet":{"get":{"summary":"BatchGetAssets","description":"Retrieves a list of assets by resource name.","operationId":"Assets_BatchGetAssets","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2BatchGetAssetsResponse"}}}}},"parameters":[{"name":"names","description":"Repeated resource names of the requested assets.\n\nFormat: `assets/{asset_id}`","in":"query","required":true,"explode":true,"schema":{"type":"array","items":{"type":"string"}}}],"tags":["Assets"]}},"/v2/vaults/{vault_id}/assets/{asset_id}":{"get":{"summary":"GetVaultAsset","description":"Retrieves a vault scoped asset (imported token or custom chain token) by resource name.","operationId":"Assets_GetVaultAsset","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2GetVaultAssetResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"asset_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Assets"]}},"/v2/vaults/{vault_id}:queryBalances":{"post":{"summary":"QueryBalances","description":"Retrieve a list of all asset balances in all wallets in a vault.","operationId":"Balances_QueryBalances","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2QueryBalancesResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalancesQueryBalancesBody"}}},"required":true},"tags":["Balances"]}},"/v2/vaults/{vault_id}/wallets/{wallet_id}:queryBalances":{"post":{"summary":"QueryWalletBalances","description":"Retrieve a list of all asset balances in a wallet. Can be used also to retrieve assets across all wallets as per\n[AIP-159](https://google.aip.dev/159) by using '-' (the hyphen or dash character) as a wildcard character instead of wallet ID in the parent.","operationId":"Balances_QueryWalletBalances","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2QueryWalletBalancesResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalancesQueryWalletBalancesBody"}}},"required":true},"tags":["Balances"]}},"/v2/vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}:queryBalances":{"post":{"summary":"QueryWalletAddressBalances","description":"Retrieve a list of all asset balances in a wallet address. Can be used also to retrieve assets across all wallet adresses of a wallet as per\n[AIP-159](https://google.aip.dev/159) by using '-' (the hyphen or dash character) as a wildcard character instead of wallet address ID in the parent.","operationId":"Balances_QueryWalletAddressBalances","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2QueryWalletAddressBalancesResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"address_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalancesQueryWalletAddressBalancesBody"}}},"required":true},"tags":["Balances"]}},"/v2/vaults/{vault_id}:refreshAssetAddressBalance":{"post":{"summary":"RefreshAssetAddressBalance","description":"Refreshes address balance for given address.","operationId":"Balances_RefreshAssetAddressBalance","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2RefreshAssetAddressBalanceResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalancesRefreshAssetAddressBalanceBody"}}},"required":true},"tags":["Balances"]}},"/v2/vaults/{vault_id}/wallets/{wallet_id}:queryUTXOs":{"post":{"summary":"QueryWalletUTXOs","description":"Retrieve a list of all UTXOs in a wallet.","operationId":"Balances_QueryWalletUTXOs","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2QueryWalletUTXOsResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalancesQueryWalletUTXOsBody"}}},"required":true},"tags":["Balances"]}},"/v2/vaults/{vault_id}/gasStations":{"get":{"summary":"ListGasStations","description":"Retrieve a list of all gas stations in a vault.","operationId":"GasStations_ListGasStations","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2ListGasStationsResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["GasStations"]}},"/v2/vaults/{vault_id}/gasStations/{gas_station_id}:refreshGasStationBalance":{"post":{"summary":"RefreshGasStationBalance","description":"Refresh a gas station's cached balance from its provider.","operationId":"GasStations_RefreshGasStationBalance","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2RefreshGasStationBalanceResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"gas_station_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GasStationsRefreshGasStationBalanceBody"}}},"required":true},"tags":["GasStations"]}},"/v2/vaults/{vault_id}/gasStations/{gas_station_id}/orders/{order_id}":{"get":{"summary":"GetGasStationOrder","description":"Get a gas station order by resource name.","operationId":"GasStations_GetGasStationOrder","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2GetGasStationOrderResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"gas_station_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"order_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["GasStations"]}},"/v2/vaults/{vault_id}/transactions/{transaction_id}":{"get":{"summary":"GetTransaction","description":"Retrieves a transaction by resource name.","operationId":"Transactions_GetTransaction","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2GetTransactionResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"includeReferencedResources","description":"Include referenced resources in the response.","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"view","description":"The view of the transaction.\n\n - BASIC: The default view. Does not include certain fields such as blocking transactions.\n - FULL: Full view, include all fields.","in":"query","required":false,"schema":{"type":"string","enum":["BASIC","FULL"]}}],"tags":["Transactions"]}},"/v2/vaults/{vault_id}/transactions:batchGet":{"get":{"summary":"BatchGetTransactions","description":"Retrieves multiple transactions by resource name.","operationId":"Transactions_BatchGetTransactions","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2BatchGetTransactionsResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"names","description":"The resource names of the transactions to retrieve.\n\nFormat: `vaults/{vault_id}/transactions/{transaction_id}`","in":"query","required":true,"explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"includeReferencedResources","description":"Include referenced resources in the response.","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"view","description":"The view of the transaction.\n\n - BASIC: The default view. Does not include certain fields such as blocking transactions.\n - FULL: Full view, include all fields.","in":"query","required":false,"schema":{"type":"string","enum":["BASIC","FULL"]}}],"tags":["Transactions"]}},"/v2/vaults/{vault_id}/transactions":{"get":{"summary":"ListTransactions","description":"Retrieve a list of all transactions in a vault.","operationId":"Transactions_ListTransactions","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2ListTransactionsResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter","description":"A filter string to filter the results.\nMore details about filtering can be found in the [Filtering Documentation Page](https://docs.utila.io/reference/filtering).\n\nSupported fields and functions:\n| Name | Description | Example |\n|------|-------------|---------|\n| `create_time` | Filter by creation time (`string` comparison). | `create_time > \"2023-08-29T18:04:00Z\"` |\n| `state` | Filter by one or more states (`enum...`). | `state(AWAITING_APPROVAL,AWAITING_SIGNATURE)` |\n| `spam` | Filter by spam status (`bool`). | `spam(false)` |\n| `from_wallet` | Filter by one or more source wallets (`string...`). | `from_wallet(\"vaults/123456789012/wallets/5a8b8085ccd0\")` |\n| `to_wallet` | Filter by one or more destination wallets (`string...`). | `to_wallet(\"vaults/123456789012/wallets/5a8b8085ccd0\")` |\n| `pending_user_approval` | Filter by user for which the transaction is awaiting approval (`string`). | `pending_user_approval(\"users/name@example.com\")` |\n| `asset` | Filter by one or more assets (`string...`). Supports v2 asset aliases. | `asset(\"assets/erc20.ethereum-mainnet.0x6b175474e89094c44da98b954eedeac495271d0f\")` |\n| `sponsor` | Filter by one or more sponsors: gas station, wallet, wallet address, or raw address (`string...`). | `sponsor(\"vaults/123456789012/gasStations/a4b3df\")` |\n| `external_id` | Filter by client-provided external ID (`string`). | `external_id(\"order-123\")` |\n| `tx_hash` | Filter by one or more on-chain transaction hashes (`string...`). | `tx_hash(\"0xabc123\")` |\n| `sub_type` | Filter by one or more transaction subtypes (`enum...`). | `sub_type(SUBMITTING_TRANSACTION,NATIVE_TRANSFER)` |\n| `blocking_signature` | Filter blocking transactions in a transaction's signing queue (`string`). | `blocking_signature(\"01JABC...\")` |","in":"query","required":false,"schema":{"type":"string"}},{"name":"orderBy","description":"SQL-like ordering specifications.\nSupports the field `create_time`.","in":"query","required":false,"schema":{"type":"string"}},{"name":"pageSize","description":"The maximum number of items to return. The service may return fewer than\nthis value.\n\nIf unspecified, at most 50 will be returned.","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageToken","description":"A page token, received from the previous list call as `nextPageToken`.\nProvide this to retrieve the subsequent page.\n\nWhen paginating, all other parameters must match the call that provided\nthe page token.","in":"query","required":false,"schema":{"type":"string"}},{"name":"skip","description":"How many results to skip.\n\nNote: may be used alongside token-based pagination (see `pageToken`),\nalthough this won't be needed for most use cases.","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"includeReferencedResources","description":"Include referenced resources in the response.","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"view","description":"The view of the transaction.\n\n - BASIC: The default view. Does not include certain fields such as blocking transactions.\n - FULL: Full view, include all fields.","in":"query","required":false,"schema":{"type":"string","enum":["BASIC","FULL"]}}],"tags":["Transactions"]}},"/v2/vaults/{vault_id}/transactions:initiate":{"post":{"summary":"InitiateTransaction","description":"Initiate a new transaction.","operationId":"Transactions_InitiateTransaction","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2InitiateTransactionResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionsInitiateTransactionBody"}}},"required":true},"tags":["Transactions"]}},"/v2/vaults/{vault_id}/transactionRequests/{transaction_request_id}:vote":{"post":{"summary":"VoteOnTransactionRequest","description":"Vote on a transaction request.","operationId":"Transactions_VoteOnTransactionRequest","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2VoteOnTransactionRequestResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"transaction_request_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionsVoteOnTransactionRequestBody"}}},"required":true},"tags":["Transactions"]}},"/v2/vaults/{vault_id}/transactions:estimateFee":{"post":{"summary":"EstimateTransactionFee","description":"Estimate the fee for a transaction.","operationId":"Transactions_EstimateTransactionFee","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2EstimateTransactionFeeResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionsEstimateTransactionFeeBody"}}},"required":true},"tags":["Transactions"]}},"/v2/vaults/{vault_id}/transactions/{transaction_id}/simulations/latest":{"get":{"summary":"GetLatestTransactionSimulation","operationId":"Transactions_GetLatestTransactionSimulation","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2GetLatestTransactionSimulationResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"includeReferencedResources","description":"Include referenced resources in the response.","in":"query","required":false,"schema":{"type":"boolean"}}],"tags":["Transactions"]}},"/v2/vaults/{vault_id}/transactions/{transaction_id}:cancel":{"post":{"summary":"CancelTransaction","description":"Cancels a transaction. Used to cancel a transaction before it is signed.\n\nOnly the transaction's initiator or an admin can cancel a transaction.\n\nIf the transaction has already been signed, use\n[ReplaceTransaction](#tag/Transactions/operation/Transactions_ReplaceTransaction) instead.","operationId":"Transactions_CancelTransaction","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2CancelTransactionResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Transactions"]}},"/v2/vaults/{vault_id}/transactions/{transaction_id}:replace":{"post":{"summary":"ReplaceTransaction","description":"Creates a new transaction that replaces an existing signed transaction in the system which has not been mined yet.\n\nOnly works for blockchains that support replacement of signed transactions, e.g.\n- Ethereum - which has nonce management.\n- BTC - which has RBF (Replace-By-Fee) and CPFP (Child-Pays-For-Parent) mechanisms.\n\nSome blockchains do not support transaction replacement, e.g. TRON - which is based on\ntransaction expiration time - for these cases, the transaction will be either mined or\nexpired after the configured expiration time.\n\nIf the transaction has not been signed yet, and you wish to cancel it, use\n[CancelTransaction](#tag/Transactions/operation/Transactions_CancelTransaction)\ninstead.","operationId":"Transactions_ReplaceTransaction","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2ReplaceTransactionResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionsReplaceTransactionBody"}}},"required":true},"tags":["Transactions"]}},"/v2/vaults/{vault_id}/transactions/{transaction_id}:publish":{"post":{"summary":"PublishTransaction","description":"Manually publishes a signed transaction to the blockchain. This endpoint synchronously\nbroadcasts the transaction to the network and returns the updated transaction details.\nThe transaction must be fully signed before publishing.\n\n**Note:** Currently only available for EVM-compatible blockchains. Support for additional\nblockchains will be added in future releases.","operationId":"Transactions_PublishTransaction","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2PublishTransactionResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionsPublishTransactionBody"}}},"required":true},"tags":["Transactions"]}},"/v2/vaults/{vault_id}/transactions/{transaction_id}/amlScreening":{"get":{"summary":"GetTransactionAMLScreening","description":"If the transaction was screened for AML, this endpoint will return the results. Relevant where screening is configured.","operationId":"Transactions_GetTransactionAMLScreening","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2GetTransactionAMLScreeningResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Transactions"]}},"/v2/vaults/{vault_id}/evmSubmissionDetails/{evm_submission_detail_id}":{"get":{"summary":"GetEVMSubmissionDetails","description":"Get the details of an EVM submission — the set of transactions that are\nbroadcast together as a single gas-abstracted (sponsored) EVM submission.\n\nThe submission resource name is available on a transaction request via\n`TransactionRequest.evm_submission_details`.","operationId":"Transactions_GetEVMSubmissionDetails","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2GetEVMSubmissionDetailsResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"evm_submission_detail_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Transactions"]}},"/v2/vaults/{vault_id}":{"get":{"summary":"GetVault","description":"Retrieve a vault by resource name.","operationId":"Vaults_GetVault","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2GetVaultResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Vaults"]}},"/v2/vaults":{"get":{"summary":"ListVaults","description":"Retrieve a list of all vaults accessible to the authenticated user.","operationId":"Vaults_ListVaults","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2ListVaultsResponse"}}}}},"parameters":[{"name":"orderBy","description":"SQL-like ordering specifications.\nSupports the fields `display_name` and `create_time`.","in":"query","required":false,"schema":{"type":"string"}},{"name":"pageSize","description":"The maximum number of items to return. The service may return fewer than this value.","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageToken","description":"A page token, received from the previous list call as `nextPageToken`.\nProvide this to retrieve the subsequent page.\n\nWhen paginating, all other parameters must match the call that provided\nthe page token.","in":"query","required":false,"schema":{"type":"string"}},{"name":"skip","description":"How many results to skip.\n\nNote: may be used alongside token-based pagination (see `pageToken`),\nalthough this won't be needed for most use cases.","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"tags":["Vaults"]}},"/v2/vaults/{vault_id}/wallets":{"get":{"summary":"ListWallets","description":"Retrieve a list of all wallets in a vault.","operationId":"Wallets_ListWallets","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2ListWalletsResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"view","description":"Whether to include the converted value (`wallet.converted_value`) in the response.\n\n - BASIC: The default view. Does not include the converted value.\n - FULL: Calculate and include the converted value and additional fields.","in":"query","required":false,"schema":{"type":"string","enum":["BASIC","FULL"]}},{"name":"showArchived","description":"Optional. When true, archived wallets are included together with non-archived wallets.\nWhen false or omitted, only non-archived wallets are returned.","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"filter","description":"Filter results using EBNF syntax.\n\nSupported fields:\n* `displayName` (with regex support)\n* `createTime`\n* `external`\n\nSupported functions:\n* `wallet_archived()` - matches archived wallets. Takes no arguments.\n  Use together with `show_archived` to get only archived wallets.\n\nExamples:\n- `displayName = \"My Wallet\"` (All wallets with the display name \"My Wallet\")\n- `regex(displayName, \"^My \")` (All wallets with names starting with \"My \")\n- `regex(displayName, \"(?i)^mY \")` (All wallets with names starting with \"My \", case insensitive)\n- `external`, `-external`, `NOT external`\n- `createTime > \"2023-08-29T18:04:00Z\"`\n- `createTime > \"2023-08-29T18:04:00Z\" AND displayName = \"My Wallet\"`\n- `wallet_archived()` (Archived wallets only; set `show_archived` so archived wallets are returned)","in":"query","required":false,"schema":{"type":"string"}},{"name":"orderBy","description":"SQL-like ordering specifications.\nSupports the fields\n* `display_name`\n* `create_time`\n* `update_time`\n* `converted_value.amount` (available through the FULL view).","in":"query","required":false,"schema":{"type":"string"}},{"name":"pageSize","description":"The maximum number of items to return. The service may return fewer than\nthis value.\n\nIf unspecified, at most 50 will be returned.\nThe maximum value is 1000; values above 1000 will be coerced to 1000.","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageToken","description":"A page token, received from the previous list call as `nextPageToken`.\nProvide this to retrieve the subsequent page.\n\nWhen paginating, all other parameters must match the call that provided\nthe page token.","in":"query","required":false,"schema":{"type":"string"}},{"name":"skip","description":"How many results to skip.\n\nNote: may be used alongside token-based pagination (see `pageToken`),\nalthough this won't be needed for most use cases.","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"includeReferencedResources","description":"Include referenced resources in the response.","in":"query","required":false,"schema":{"type":"boolean"}}],"tags":["Wallets"]},"post":{"summary":"CreateWallet","description":"Create a new wallet.","operationId":"Wallets_CreateWallet","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2CreateWalletResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2Wallet"}}},"description":"The wallet resource to create.","required":true},"tags":["Wallets"]}},"/v2/vaults/{vault_id}/wallets/{wallet_id}":{"get":{"summary":"GetWallet","description":"Retrieve a wallet by resource name.","operationId":"Wallets_GetWallet","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2GetWalletResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"view","description":"Whether to include the converted value (`wallet.converted_value`) in the response.\n\n - BASIC: The default view. Does not include the converted value.\n - FULL: Calculate and include the converted value and additional fields.","in":"query","required":false,"schema":{"type":"string","enum":["BASIC","FULL"]}},{"name":"includeReferencedResources","description":"Include referenced resources in the response.","in":"query","required":false,"schema":{"type":"boolean"}}],"tags":["Wallets"]}},"/v2/vaults/{vault_id}/wallets:batchGet":{"get":{"summary":"BatchGetWallets","description":"Retrieve multiple wallets by resource name.","operationId":"Wallets_BatchGetWallets","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2BatchGetWalletsResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"names","description":"The resource names of the wallets to retrieve.\n\nFormat: `vaults/{vault_id}/wallets/{wallet_id}`","in":"query","required":true,"explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"view","description":"Whether to include the converted value (`wallet.converted_value`) in the response.\n\n - BASIC: The default view. Does not include the converted value.\n - FULL: Calculate and include the converted value and additional fields.","in":"query","required":false,"schema":{"type":"string","enum":["BASIC","FULL"]}}],"tags":["Wallets"]}},"/v2/vaults/{vault_id}/wallets/{wallet_id}:archive":{"post":{"summary":"ArchiveWallet","description":"Archive a wallet.","operationId":"Wallets_ArchiveWallet","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletsArchiveWalletBody"}}},"required":true},"tags":["Wallets"]}},"/v2/vaults/{vault_id}/wallets:batchArchive":{"post":{"summary":"BatchArchiveWallets","description":"Archive multiple wallets.","operationId":"Wallets_BatchArchiveWallets","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletsBatchArchiveWalletsBody"}}},"required":true},"tags":["Wallets"]}},"/v2/vaults/{vault_id}/wallets/{wallet_id}:unarchive":{"post":{"summary":"UnarchiveWallet","description":"Unarchive a wallet.","operationId":"Wallets_UnarchiveWallet","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletsUnarchiveWalletBody"}}},"required":true},"tags":["Wallets"]}},"/v2/vaults/{vault_id}/wallets:batchUnarchive":{"post":{"summary":"BatchUnarchiveWallets","description":"Unarchive multiple wallets.","operationId":"Wallets_BatchUnarchiveWallets","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletsBatchUnarchiveWalletsBody"}}},"required":true},"tags":["Wallets"]}},"/v2/vaults/{vault_id}/wallets/{wallet_id}/addresses":{"get":{"summary":"ListWalletAddresses","description":"Retrieve a list of all wallet addresses of a specific wallet.","operationId":"Wallets_ListWalletAddresses","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2ListWalletAddressesResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"pageSize","description":"The maximum number of items to return. The service may return fewer than this value.\n\nIf unspecified, at most 50 will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageToken","description":"A page token, received from the previous list call as `nextPageToken`.","in":"query","required":false,"schema":{"type":"string"}},{"name":"filter","description":"A filter expression that filters wallet addresses listed in the response.\n\nSupported fields and functions:\n| Name | Description | Example |\n|------|-------------|---------|\n| `address` | Filter by one or more on-chain addresses (`string...`). | `address(\"0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6\")` |\n| `network` | Filter by one or more networks (`string...`). | `network(\"networks/ethereum-mainnet\")` |\n\nTip: combine a wildcard wallet (`-`) in the parent with the `address` filter to look up\naddresses across all wallets in a vault.","in":"query","required":false,"schema":{"type":"string"}},{"name":"skip","description":"How many results to skip.\n\nNote: may be used alongside token-based pagination (see `pageToken`),\nalthough this won't be needed for most use cases.","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"tags":["Wallets"]},"post":{"summary":"CreateWalletAddress","description":"Generates a new address in a wallet for the specificied blockchain network.\n\nThe address is derived from the appropriate MPC key that is used by that blockchain,\ni.e. ECDSA for Bitcoin and Ethereum, and EdDSA for Solana.\nThe MPC key will be selected automatically for you. If a key is not available,\nan error will be returned.\n\nCurrently, creation of multiple addresses is supported only for UTXO-based blockchains.\n\nAddresses in the EVM protocol family (Ethereum, Binance Smart Chain, etc.) generated in\nthe same wallet will share the same address. This abstraction is useful for DeFi applications,\nwhere identical addresses are used across multiple blockchains.","operationId":"Wallets_CreateWalletAddress","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2CreateWalletAddressResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2WalletAddress"}}},"description":"The wallet address resource to create.","required":true},"tags":["Wallets"]}},"/v2/vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}":{"get":{"summary":"GetWalletAddress","description":"Retrieve a wallet address by resource name.","operationId":"Wallets_GetWalletAddress","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2GetWalletAddressResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"address_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Wallets"]}},"/v2/vaults/{vault_id}/wallets/{wallet_id}/addresses:batchGet":{"get":{"summary":"BatchGetWalletAddresses","description":"Retrieve multiple wallet addresses by resource name.","operationId":"Wallets_BatchGetWalletAddresses","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2BatchGetWalletAddressesResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"names","description":"The resource names of the wallet addresses to retrieve.\n\nFormat: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`","in":"query","required":true,"explode":true,"schema":{"type":"array","items":{"type":"string"}}}],"tags":["Wallets"]}},"/v2/vaults/{vault_id}/wallets/{wallet_id}:deriveContextHash":{"post":{"summary":"DeriveContextHash","description":"Derive a deterministic 32-byte value bound to (wallet main address,\nnetwork, application, context). The derivation is stateless: the same\ninputs always yield the same output (so it can be re-derived later), and\nchanging any input produces an independent, unpredictable output. This\nvalue should not be relied on for long-term confidentiality.\n\nCallable by scoped users, limited to wallets within their scope.","operationId":"Wallets_DeriveContextHash","responses":{"200":{"description":"A successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2DeriveContextHashResponse"}}}}},"parameters":[{"name":"vault_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletsDeriveContextHashBody"}}},"required":true},"tags":["Wallets"]}}},"servers":[{"url":"https://api.utila.io"}],"components":{"schemas":{"AddressBookBatchAddAddressBookEntriesToGroupBody":{"type":"object","properties":{"addressBookEntryGroup":{"type":"string","example":"vaults/1b25635a5b3f/addressBookEntryGroups/abc123","description":"The resource name of the address book entry group that the entries should be\nadded to.\n\nFormat: `vaults/{vault_id}/addressBookEntryGroups/{group_id}`"},"names":{"type":"array","example":["vaults/1b25635a5b3f/addressBookEntries/95257c5a522f"],"items":{"type":"string"},"description":"The resource names of the address book entries to add to the group.\n\nFormat: `vaults/{vault_id}/addressBookEntries/{entry_id}`"}},"required":["addressBookEntryGroup","names"]},"AddressBookBatchCreateAddressBookEntriesBody":{"type":"object","properties":{"requests":{"type":"array","items":{"$ref":"#/components/schemas/v2CreateAddressBookEntryRequest"},"description":"The individual create requests for each address book entry."}},"required":["requests"]},"AddressBookBatchCreateUnsignedAddressBookEntriesBody":{"type":"object","properties":{"requests":{"type":"array","items":{"$ref":"#/components/schemas/v2CreateAddressBookEntryRequest"},"description":"The individual create requests for each address book entry."}},"required":["requests"]},"AssetTokenInfoStandardEnum":{"type":"string","enum":["ERC20","ERC721","ERC1155","TRC20","SPL_TOKEN","SPL_TOKEN_2022","ICS20","JETTON","TIP20"],"description":" - ERC20: ERC20 is the most common fungible token standard.\n - ERC721: ERC721 is the most common non-fungible token standard.\n - ERC1155: ERC1155 is a newer token standard that allows for multiple tokens to be\nheld in a single contract.\n - TRC20: TRC20 is the most common tron's fungible token standard.\n - SPL_TOKEN: SPL Token - solana's token standard.\n - SPL_TOKEN_2022: Token2020 - solana's new token extension for spl tokens.\n - ICS20: ICS20 cosmos's token standard.\n - JETTON: JETTON TON's token standard.\n - TIP20: TIP20 is the Tempo blockchain token standard (ERC-20 extension with compliance features)."},"AssetTransferStellarOptions":{"type":"object","properties":{"memo":{"description":"Optional typed memo for Stellar native and token transfers.\n\nWhen set, the type must be explicit (TEXT, ID, HASH, or RETURN).\nSee StellarTransaction.Memo for format and validation rules.\nIf not set for a Stellar transfer, no memo is attached.","allOf":[{"$ref":"#/components/schemas/v2StellarTransactionMemo"}]}},"title":"Blockchain specific options for Stellar Asset Transfer"},"AssetTransferXRPLOptions":{"type":"object","properties":{"destinationTag":{"type":"string","description":"Destination tag for XRPL (XRP) transfers.\n\nDecimal string of a 32-bit unsigned integer in the range 0..4294967295 (XRPL DestinationTag).\nEmpty string is invalid when this field is set; omit the field entirely when no tag applies."}},"title":"Blockchain specific options for XRPL Asset Transfer"},"BTCDetailsAddressFormat":{"type":"string","enum":["P2PKH","P2WPKH","P2TR"],"description":"Address format for a Bitcoin-based network. Subset of\nWalletAddress.Format restricted to Bitcoin-based values."},"BTCTransactionUTXOIn":{"type":"object","properties":{"address":{"description":"Input address.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"amount":{"type":"string","description":"Amount in asset unit (BTC)."},"signingSession":{"type":"string","example":"vaults/2d2e40r3/signingSessions/132e40r3","description":"The signing session which was used to sign the input. Available when the transaction has been prepared for signing / signed.\n\nDeprecated: Use request.signing_sessions instead."},"userSelected":{"type":"boolean","description":"Whether this input was explicitly selected by the user.\nWhen false, the input was automatically chosen by the coin-selection algorithm."}}},"BTCTransactionUTXOOut":{"type":"object","properties":{"address":{"description":"Output address.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"amount":{"type":"string","description":"Amount in asset unit (BTC)."},"change":{"type":"boolean","description":"True when this output is the change output."},"changeUserSelected":{"type":"boolean","description":"True when the change address was supplied by the user; false when auto-generated.\nOnly meaningful when `change` is true."},"vout":{"type":"integer","format":"int32","description":"On-chain output index (vout) of this output within the transaction.\n\nTogether with the transaction's chain id, `txid:vout` is the stable,\ncanonical identifier of this output (matching QueryWalletUTXOs). Prefer it\nover the position of this output within `outputs`, which only reflects the\nvault-relevant outputs Utila retains and is not the on-chain index.\n\nSet once the transaction's on-chain identity is known — i.e. its transaction\nid is assigned: for outgoing transactions from the SIGNED state onward, and\nfor incoming deposits once observed on-chain. Omitted for pending,\npre-signing transactions."}}},"BTCTransferChangeOutput":{"type":"object","properties":{"address":{"type":"string","description":"The change address. Must belong to one of the input wallets.\n\nCan be one of the following:\n1. A raw string address (example: `bc1q3vfght7rln2c3733dl42navt8pslfya7talfns`)\n2. A wallet: `vaults/{vault_id}/wallets/{wallet_id}` (Utila will select an appropriate change address)\n3. A specific wallet address: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`"}},"description":"Specifies where to send change for an input wallet.","required":["address"]},"BTCTransferFeeSettings":{"type":"object","properties":{"feeRate":{"type":"string","example":"10.5","description":"Fee rate in satoshi per virtual byte (sat/vB).\n\nExample: `10.5`."}},"description":"Custom fee settings for the transaction.","required":["feeRate"]},"BTCTransferInputSource":{"type":"object","properties":{"source":{"type":"string","description":"The source to select UTXOs from.\n\nCan be one of the following:\n1. A raw string address (example: `bc1q3vfght7rln2c3733dl42navt8pslfya7talfns`)\n2. A wallet: `vaults/{vault_id}/wallets/{wallet_id}` (selects across all addresses)\n3. A specific wallet address: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`"}},"description":"Specifies a source from which Utila may automatically select UTXOs.","required":["source"]},"BTCTransferOutput":{"type":"object","properties":{"destination":{"type":"string","description":"The destination of the transfer.\n\nCan be one of the following:\n1. A raw string address (example: `bc1q3vfght7rln2c3733dl42navt8pslfya7talfns`)\n2. A wallet: `vaults/{vault_id}/wallets/{wallet_id}` (resolves to the wallet's main deposit address)\n3. A specific wallet address: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`"},"amount":{"type":"string","example":"0.001","description":"The amount to send, in decimal form.\n\nExample: `\"0.001\"` (0.001 BTC)."},"payFeeFromAmount":{"type":"boolean","description":"If set to true, the transaction fee will be deducted from this output's amount.\n\nAt most one output may have this set to true."}},"description":"A single output destination.","required":["destination","amount"]},"BalancesQueryBalancesBody":{"type":"object","properties":{"filter":{"type":"string","description":"Filter results using EBNF syntax.\n\nSupported functions:\n* `asset(asset_name)` (example: `asset(\"assets/native.ethereum-mainnet\")`)\n* `network(network_name)` (example: `network(\"networks/ethereum-mainnet\")`)\n* `wallet_external()` (example: `wallet_external()`)"},"pageSize":{"type":"integer","format":"int32","description":"The maximum number of items to return. The service may return fewer than this value."},"pageToken":{"type":"string","description":"A page token, received from the previous list call as `nextPageToken`."},"includeReferencedResources":{"type":"boolean","description":"Include referenced resources in the response."}}},"BalancesQueryWalletAddressBalancesBody":{"type":"object","properties":{"filter":{"type":"string","description":"Filter results using EBNF syntax.\n\nSupported functions:\n* `asset(asset_name)` (example: `asset(\"assets/native.ethereum-mainnet\")`)\n* `network(network_name)` (example: `network(\"networks/ethereum-mainnet\")`)\n* `wallet_external()` (example: `wallet_external()`)"},"pageSize":{"type":"integer","format":"int32","description":"The maximum number of items to return. The service may return fewer than this value."},"pageToken":{"type":"string","description":"A page token, received from the previous list call as `nextPageToken`."},"includeReferencedResources":{"type":"boolean","description":"Include referenced resources in the response."}}},"BalancesQueryWalletBalancesBody":{"type":"object","properties":{"filter":{"type":"string","description":"Filter results using EBNF syntax.\n\nSupported functions:\n* `asset(asset_name)` (example: `asset(\"assets/native.ethereum-mainnet\")`)\n* `network(network_name)` (example: `network(\"networks/ethereum-mainnet\")`)\n* `wallet_external()` (example: `wallet_external()`)"},"pageSize":{"type":"integer","format":"int32","description":"The maximum number of items to return. The service may return fewer than this value."},"pageToken":{"type":"string","description":"A page token, received from the previous list call as `nextPageToken`."},"includeReferencedResources":{"type":"boolean","description":"Include referenced resources in the response."}}},"BalancesQueryWalletUTXOsBody":{"type":"object","properties":{"network":{"type":"string","description":"The resource name of the network whose UTXOs are to be listed.\n\nFormat: `networks/{network_id}`."},"filter":{"type":"string","description":"Filter results using EBNF syntax.\n\nSupported fields:\n* `txHash` (example: `txHash = \"60887d40d469af2b52cf7dc35e6c33241610aa22ca0c8d0d5e4d9027e91c2946\"`)\n* `address` (example: `address = \"bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4\"`)\n* `state` (example: `state = AVAILABLE OR state = FROZEN`)"},"orderBy":{"type":"string","description":"SQL-like ordering specifications.\nSupports the fields `create_time`, `value`."},"pageSize":{"type":"integer","format":"int32","description":"The maximum number of items to return. The service may return fewer than\nthis value.\n\nIf unspecified, at most 50 will be returned.\nThe maximum value is 100; values above 100 will be coerced to 100."},"pageToken":{"type":"string","description":"A page token, received from the previous list call as `nextPageToken`.\nProvide this to retrieve the subsequent page.\n\nWhen paginating, all other parameters must match the call that provided\nthe page token."},"skip":{"type":"integer","format":"int32","description":"How many results to skip.\n\nNote: may be used alongside token-based pagination (see `pageToken`),\nalthough this won't be needed for most use cases."},"includeReferencedResources":{"type":"boolean","description":"Include referenced resources in the response."}},"required":["network"]},"BalancesRefreshAssetAddressBalanceBody":{"type":"object","properties":{"asset":{"type":"string","example":"assets/e72ff35a5b15"},"address":{"type":"string"},"includeReferencedResources":{"type":"boolean","description":"Include referenced resources in the response."}},"required":["asset","address"]},"BatchAssetTransferBatchTransferDestination":{"type":"object","properties":{"destination":{"type":"string","description":"The destination of the transfer.\n\nCan be one of the following:\n1. A raw string address (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` or `bc1q3vfght7rln2c3733dl42navt8pslfya7talfns`)\n2. A wallet: `vaults/{vault_id}/wallets/{wallet_id}`.\n3. A specific wallet address: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`."},"amount":{"type":"string","description":"The amount of the asset to transfer for this entry in asset units.\n\nExample: `1.1`."},"note":{"type":"string","description":"The note to attach to the transfer.\n\nThis note will be visible to all vault members."}},"title":"BatchTransferDestination","required":["destination","amount"]},"DecodedCallArg":{"type":"object","properties":{"name":{"type":"string","title":"The name of the argument, for example: \"dest\""},"type":{"type":"string","title":"The type of the argument, for example: \"AccountId\""},"value":{"type":"string","title":"The value of the argument as a hex encoded byte array, for example: \"0x1234\""}}},"EVMUtilaDelegatedCallsCallRaw":{"type":"object","properties":{"toAddress":{"type":"string","description":"The destination address of the call.\n\nFormat: `0x{address}`"},"value":{"type":"string","description":"The value to send with the call in wei. Can be hex or decimal.\n\nExample: `0xde0b6b3a7640000` or `1000000000000000000` for 1 ETH."},"data":{"type":"string","description":"The calldata to send with the call.\n\nFormat: `0x{hex_data}`"}},"description":"Raw call data.","required":["toAddress"]},"GasStationsRefreshGasStationBalanceBody":{"type":"object","properties":{"asset":{"type":"string","example":"assets/native.ethereum-mainnet","description":"The asset whose balance should be refreshed."}},"required":["asset"]},"NetworkCAIPDetails":{"type":"object","properties":{"chainId":{"type":"string","example":"eip155:1","description":"The CAIP-2 compliant chain id.\n\nFormat: `{namespace}:{reference}`"},"namespace":{"type":"string","example":"eip155","description":"The CAIP-2 compliant namespace.\n\nSee: https://github.com/ChainAgnostic/namespaces\n\nFormat: `[-a-z0-9]{3,8}`"},"reference":{"type":"string","example":"1","description":"The CAIP-2 compliant reference.\n\nFormat: `[-_a-zA-Z0-9]{1,32}`"}},"description":"Chain-Agnostic Identifiers (CAIP) details for this network."},"OperationBody":{"type":"object","properties":{"raw":{"type":"string","format":"byte","x-protoOneof":"type"},"payment":{"$ref":"#/components/schemas/OperationBodyPayment"},"createAccount":{"$ref":"#/components/schemas/OperationBodyCreateAccount"},"changeTrust":{"$ref":"#/components/schemas/OperationBodyChangeTrust"},"sep41Payment":{"$ref":"#/components/schemas/OperationBodySEP41Payment"},"sep41TokenApproval":{"$ref":"#/components/schemas/OperationBodySEP41TokenApproval"}}},"OperationBodyChangeTrust":{"type":"object","properties":{"asset":{"type":"string","description":"A Stellar asset `{asset_code}-{issuer}`.\n\nExample: `USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN`."},"limit":{"type":"string","description":"The limit of the change trust.\nFor unlimited amount, don't provide this field.\n\nExample: `10000000` (1 XLM in stroops)."}},"required":["asset"]},"OperationBodyCreateAccount":{"type":"object","properties":{"destinationAddress":{"type":"string","description":"A Stellar address (example: `GAAAAAAAACGC6SEYFBKQ33QJ2FXVEP3EJ6BE2FCVW2SSP6X5TBNQYQ`)."},"rawStartingBalance":{"type":"string","description":"Example: `10000000` (1 XLM in stroops)."}},"required":["destinationAddress","rawStartingBalance"]},"OperationBodyPayment":{"type":"object","properties":{"destinationAddress":{"type":"string","description":"A Stellar address (example: `GAAAAAAAACGC6SEYFBKQ33QJ2FXVEP3EJ6BE2FCVW2SSP6X5TBNQYQ`)."},"asset":{"type":"string","example":"USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN","description":"The asset to transfer.\n\nA Stellar asset `{asset_code}-{issuer}` (example: `USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN`)."},"rawAmount":{"type":"string","description":"Example: `10000000` (1 XLM in stroops)."}},"required":["destinationAddress","asset","rawAmount"]},"OperationBodySEP41Payment":{"type":"object","properties":{"spenderAddress":{"type":"string","description":"The address that will authorize the transfer by consuming its\nallowance on `source_address`.\n\nWhen set, the transfer is built as a SEP41 `transfer_from` call where\n`spender_address` must have a sufficient pre-existing allowance on\n`source_address`'s balance. When unset, the transfer is built as a\nplain `transfer` call authorized by `source_address` itself.\n\nA Stellar address (example: `GAAAAAAAACGC6SEYFBKQ33QJ2FXVEP3EJ6BE2FCVW2SSP6X5TBNQYQ`)."},"sourceAddress":{"type":"string","description":"A Stellar address (example: `GAAAAAAAACGC6SEYFBKQ33QJ2FXVEP3EJ6BE2FCVW2SSP6X5TBNQYQ`)."},"destinationAddress":{"type":"string","description":"A Stellar address (example: `GAAAAAAAACGC6SEYFBKQ33QJ2FXVEP3EJ6BE2FCVW2SSP6X5TBNQYQ`)."},"contractAddress":{"type":"string","example":"CB3WFHO46J3WGRAIARNT3XD4Z7NR5SZDNG3SVKN27GOTJAQGQFAH2KAJ","description":"The soroban contract address of the token to transfer.\n\nA contract address of a SEP41 token (example: `CB3WFHO46J3WGRAIARNT3XD4Z7NR5SZDNG3SVKN27GOTJAQGQFAH2KAJ`)."},"rawAmount":{"type":"string","description":"Example: `10000000`."}},"required":["sourceAddress","destinationAddress","contractAddress","rawAmount"]},"OperationBodySEP41TokenApproval":{"type":"object","properties":{"sourceAddress":{"type":"string","description":"The address holding the balance of tokens the allowance is drawn\nfrom (the SEP41 `from` argument).\n\nA Stellar address (example: `GAAAAAAAACGC6SEYFBKQ33QJ2FXVEP3EJ6BE2FCVW2SSP6X5TBNQYQ`)."},"spenderAddress":{"type":"string","description":"The address being authorized to spend the tokens held by\n`source_address` (the SEP41 `spender` argument).\n\nA Stellar address (example: `GAAAAAAAACGC6SEYFBKQ33QJ2FXVEP3EJ6BE2FCVW2SSP6X5TBNQYQ`)."},"contractAddress":{"type":"string","example":"CB3WFHO46J3WGRAIARNT3XD4Z7NR5SZDNG3SVKN27GOTJAQGQFAH2KAJ","description":"The token whose allowance is being set.\n\nA contract address of a SEP41 token (example: `CB3WFHO46J3WGRAIARNT3XD4Z7NR5SZDNG3SVKN27GOTJAQGQFAH2KAJ`)."},"rawAmount":{"type":"string","description":"The amount to be made available to `spender_address`.\n\nExample: `10000000`."},"liveUntilLedgerNumber":{"type":"string","format":"int64","description":"The ledger number where this allowance expires. Cannot be less than\nthe current ledger number unless the amount is being set to 0."}},"required":["sourceAddress","spenderAddress","contractAddress","rawAmount","liveUntilLedgerNumber"]},"StellarTransactionDecodedOperationBody":{"type":"object","properties":{"payment":{"$ref":"#/components/schemas/StellarTransactionDecodedOperationBodyPayment"},"createAccount":{"$ref":"#/components/schemas/StellarTransactionDecodedOperationBodyCreateAccount"},"changeTrust":{"$ref":"#/components/schemas/StellarTransactionDecodedOperationBodyChangeTrust"},"sep41Payment":{"$ref":"#/components/schemas/StellarTransactionDecodedOperationBodySEP41Payment"},"sep41TokenApproval":{"$ref":"#/components/schemas/StellarTransactionDecodedOperationBodySEP41TokenApproval"}}},"StellarTransactionDecodedOperationBodyChangeTrust":{"type":"object","properties":{"asset":{"type":"string","description":"The asset of the change trust.\n\nExample: `assets/asset.stellar-mainnet.USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN`."},"assetRef":{"type":"string","description":"A weak reference to the asset. The reference is not guaranteed to be valid.\n\nExample: `assets/asset.stellar-mainnet.USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN`."},"limit":{"type":"string","description":"The limit of the change trust.\nFor unlimited amount, this field will be empty.\n\nExample: `10000000` (1 XLM in stroops)."},"unlimited":{"type":"boolean","description":"Whether the limit is considered by utila as unlimited."}}},"StellarTransactionDecodedOperationBodyCreateAccount":{"type":"object","properties":{"destinationAddress":{"$ref":"#/components/schemas/apiv2Address"},"startingBalance":{"type":"string"}}},"StellarTransactionDecodedOperationBodyPayment":{"type":"object","properties":{"destinationAddress":{"$ref":"#/components/schemas/apiv2Address"},"asset":{"type":"string","description":"The asset of the payment.\n\nExample: `USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN`."},"assetRef":{"type":"string","description":"A weak reference to the asset. The reference is not guaranteed to be valid.\n\nExample: `assets/asset.stellar-mainnet.USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN`."},"amount":{"type":"string","description":"The amount of the payment.\n\nExample: `10000000` (1 XLM in stroops)."}}},"StellarTransactionDecodedOperationBodySEP41Payment":{"type":"object","properties":{"spenderAddress":{"description":"The address that authorized the transfer by consuming its allowance.\nOnly set when the underlying SEP41 function is `transfer_from`; unset\nfor a plain `transfer` (where the source address authorizes the\ntransfer itself).","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"sourceAddress":{"title":"The source of funds for the transfer. This address that authorized the\nin case of a `transfer` call (i.e. the spender_address is empty)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"destinationAddress":{"description":"The destination of funds for the transfer.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"contractAddress":{"type":"string","description":"Example: `CB3WFHO46J3WGRAIARNT3XD4Z7NR5SZDNG3SVKN27GOTJAQGQFAH2KAJ`.","title":"The soroban contract address of the transferred token"},"assetRef":{"type":"string","description":"A weak reference to the asset. The reference is not guaranteed to be valid.\n\nExample: `assets/asset.stellar-mainnet.CB3WFHO46J3WGRAIARNT3XD4Z7NR5SZDNG3SVKN27GOTJAQGQFAH2KAJ`."},"rawAmount":{"type":"string","description":"The raw amount (without decimals) of the payment.\n\nExample: `10000000`."}}},"StellarTransactionDecodedOperationBodySEP41TokenApproval":{"type":"object","properties":{"sourceAddress":{"description":"The address holding the balance the allowance is drawn from (the\nSEP41 `from` argument).","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"spenderAddress":{"description":"The address being authorized to spend the tokens held by\n`source_address`.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"contractAddress":{"type":"string","description":"The token whose allowance is being set.\n\nExample: `CB3WFHO46J3WGRAIARNT3XD4Z7NR5SZDNG3SVKN27GOTJAQGQFAH2KAJ`."},"assetRef":{"type":"string","description":"A weak reference to the asset. The reference is not guaranteed to be valid.\n\nExample: `assets/asset.stellar-mainnet.CB3WFHO46J3WGRAIARNT3XD4Z7NR5SZDNG3SVKN27GOTJAQGQFAH2KAJ`."},"rawAmount":{"type":"string","description":"The allowance raw amount (without decimals) made available to the spender.\n\nExample: `10000000`."},"liveUntilLedgerNumber":{"type":"string","format":"int64","description":"The ledger number where this allowance expires."}}},"StellarTransactionStellarOperation":{"type":"object","properties":{"sourceAccountAddress":{"$ref":"#/components/schemas/apiv2Address"},"rawBody":{"type":"string","format":"byte"},"decodedBody":{"$ref":"#/components/schemas/StellarTransactionDecodedOperationBody"}}},"SubstrateTransactionDecodedCall":{"type":"object","properties":{"pallet":{"type":"string","title":"The pallet to be called, for example: \"Balances\""},"palletIndex":{"type":"integer","format":"int32","title":"The index of the pallet, for example: 2"},"method":{"type":"string","title":"The method to be called, for example: \"transfer_allow_death\""},"methodIndex":{"type":"integer","format":"int32","title":"The index of the method, for example: 4"},"args":{"type":"array","items":{"$ref":"#/components/schemas/DecodedCallArg"},"title":"The arguments of the call"}}},"ThetaTransactionCoins":{"type":"object","properties":{"thetaWei":{"type":"string","description":"The amount of THETA in wei."},"tfuelWei":{"type":"string","description":"The amount of TFUEL in wei."}},"description":"Represents the amount of THETA and TFUEL coins in wei units."},"ThetaTransactionSendTransaction":{"type":"object","properties":{"inputs":{"type":"array","items":{"$ref":"#/components/schemas/ThetaTransactionTxInput"},"description":"The transaction inputs that provide the coins to be transferred."},"outputs":{"type":"array","items":{"$ref":"#/components/schemas/ThetaTransactionTxOutput"},"description":"The transaction outputs that receive the transferred coins."},"fee":{"description":"The transaction fee in THETA and TFUEL coins.","allOf":[{"$ref":"#/components/schemas/ThetaTransactionCoins"}]}},"description":"Represents a Theta send transaction with inputs, outputs, and fee."},"ThetaTransactionTxInput":{"type":"object","properties":{"address":{"description":"The address that provides the coins for this input.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"coins":{"description":"The amount of THETA and TFUEL coins from this input.","allOf":[{"$ref":"#/components/schemas/ThetaTransactionCoins"}]}},"description":"Represents a transaction input with address and coin amounts."},"ThetaTransactionTxOutput":{"type":"object","properties":{"address":{"description":"The address that receives the coins for this output.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"coins":{"description":"The amount of THETA and TFUEL coins to this output.","allOf":[{"$ref":"#/components/schemas/ThetaTransactionCoins"}]}},"description":"Represents a transaction output with address and coin amounts."},"TransactionAMLDetails":{"type":"object","properties":{"screeningState":{"$ref":"#/components/schemas/v2ScreeningStateEnum"},"screeningPolicyResult":{"description":"Relevant only if the transaction was screened by an AML provider (i.e., screening_state is READY).","allOf":[{"$ref":"#/components/schemas/v2AMLActionEnum"}]},"resolved":{"type":"boolean","description":"Relevant only if transaction assets were freezed by an AML provider. (i.e., screening_policy_result is DENY)."}}},"TransactionAMLScreeningProviderEnum":{"type":"string","enum":["CHAINALYSIS","ELLIPTIC"]},"TransactionAleoOperation":{"type":"object","properties":{"program":{"type":"string","description":"e.g. \"credits.aleo\", \"usad_stablecoin.aleo\".\nThis also identifies the asset being operated on in this transition."},"function":{"type":"string","description":"e.g. \"transfer_private\", \"join\"."},"asset":{"type":"string","description":"The asset identifier for this transition (derived from program_id)."},"internal":{"type":"boolean","description":"True for child transitions generated by internal program calls\n(e.g. credits.aleo/join called inside autojoin_credits_15_16.aleo/join_16)."},"transferPublic":{"$ref":"#/components/schemas/TransactionTransferPublic"},"transferPublicAsSigner":{"$ref":"#/components/schemas/TransactionTransferPublicAsSigner"},"transferPrivate":{"$ref":"#/components/schemas/TransactionTransferPrivate"},"transferPrivateToPublic":{"$ref":"#/components/schemas/TransactionTransferPrivateToPublic"},"transferPublicToPrivate":{"$ref":"#/components/schemas/TransactionTransferPublicToPrivate"},"join":{"$ref":"#/components/schemas/TransactionJoinOperation"},"unknown":{"$ref":"#/components/schemas/TransactionUnknownOperation"}},"description":"AleoOperation represents a single execution transition within a transaction."},"TransactionAleoRecord":{"type":"object","properties":{"commitment":{"type":"string"},"amount":{"type":"string"}},"description":"A fully decrypted Aleo record.\nAsset is inherited from the parent AleoOperation."},"TransactionAleoTransaction":{"type":"object","properties":{"feeMicrocredits":{"type":"string","description":"Total fee paid in microcredits."},"feeOperation":{"description":"Optional — absent for fee-exempt transactions\n(single credits.aleo/split or credits.aleo/upgrade).","allOf":[{"$ref":"#/components/schemas/TransactionFeePublic"}]},"operations":{"type":"array","items":{"$ref":"#/components/schemas/TransactionAleoOperation"},"description":"One entry per execution transition (fee transition excluded).\nOrdered as they appear on-chain (root first, then internal children)."}}},"TransactionAptosTransaction":{"type":"object","properties":{"sender":{"description":"The source of the transfer. A `0x`-prefixed hex string address.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"sequenceNumber":{"type":"string","format":"int64"},"payloadBytes":{"type":"string","format":"byte"},"decodedPayload":{"$ref":"#/components/schemas/v2DecodedAptosTransactionPayload"},"maxGasAmount":{"type":"string","format":"int64"},"gasUnitPrice":{"type":"string","format":"int64"},"expirationTime":{"type":"string","format":"date-time","description":"In seconds."},"chainId":{"type":"string","format":"int64"}}},"TransactionBTCTransaction":{"type":"object","properties":{"inputs":{"type":"array","items":{"$ref":"#/components/schemas/BTCTransactionUTXOIn"},"description":"Transaction inputs."},"outputs":{"type":"array","items":{"$ref":"#/components/schemas/BTCTransactionUTXOOut"},"description":"Transaction outputs."},"fee":{"type":"string","description":"Transaction fee in asset unit (BTC)."},"asset":{"type":"string","example":"assets/native.bitcoin-mainnet","description":"Asset name."}}},"TransactionEVMMessage":{"type":"object","properties":{"type":{"description":"The type of the message.","allOf":[{"$ref":"#/components/schemas/TransactionEVMMessageTypeEnum"}]},"message":{"type":"string","description":"The payload of the message as a plain UTF-8 string."},"signature":{"type":"string","format":"byte","description":"ECDSA signature (65 bytes) of the message."}}},"TransactionEVMMessageTypeEnum":{"type":"string","enum":["PERSONAL_SIGN","SIGN_TYPED_DATA_V4"],"description":"- PERSONAL_SIGN: A simple personal sign message.\n - SIGN_TYPED_DATA_V4: A structured message as defined by EIP-712. See https://eips.ethereum.org/EIPS/eip-712 for more information.","title":"Enum"},"TransactionFeePublic":{"type":"object","properties":{"amountMicrocredits":{"type":"string"},"priorityFeeMicrocredits":{"type":"string"},"payer":{"$ref":"#/components/schemas/apiv2Address"}},"description":"Public fee transition details."},"TransactionJoinOperation":{"type":"object","properties":{"owner":{"$ref":"#/components/schemas/apiv2Address"},"inputs":{"type":"array","items":{"$ref":"#/components/schemas/TransactionAleoRecord"}},"outputs":{"type":"array","items":{"$ref":"#/components/schemas/TransactionAleoRecord"}}},"description":"credits.aleo/join — multiple records merged into one or more outputs."},"TransactionRequestDappInfo":{"type":"object","properties":{"url":{"type":"string","description":"The URL of the dApp."}},"description":"Details of the dApp - reported from the transaction initiator, as this cannot be validated by Utila."},"TransactionRequestOriginEnum":{"type":"string","enum":["WALLET_CONNECT","EXTENSION"],"description":" - WALLET_CONNECT: Transaction received via WalletConnect connection.\n - EXTENSION: Transaction received via Extension - can not be validated by Utila."},"TransactionStellarTransactionStellarTimeBounds":{"type":"object","properties":{"minUnixTime":{"type":"string","format":"int64"},"maxUnixTime":{"type":"string","format":"int64"}}},"TransactionSubstrateTransaction":{"type":"object","properties":{"fromAddress":{"description":"The source of the transfer. A `0x`-prefixed hex string address.\nThe extrinsic dispatcher's address.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"nonce":{"type":"string","format":"int64","description":"The nonce of the transaction."},"encodedCall":{"type":"string","title":"The hex encoded call"},"call":{"title":"The decoded representation of the call to be made","allOf":[{"$ref":"#/components/schemas/SubstrateTransactionDecodedCall"}]},"genesisHash":{"type":"string","title":"The hex encoded genesis hash of the chain"}}},"TransactionSuiTransaction":{"type":"object","properties":{"sender":{"description":"The source of the transfer. A `0x`-prefixed hex string address.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"gasBudget":{"type":"string"},"gasPrice":{"type":"string"},"expirationEpoch":{"type":"string"},"txBcsBytes":{"type":"string","format":"byte"},"decodedTransaction":{"type":"string","readOnly":true}}},"TransactionThetaTransaction":{"type":"object","properties":{"sendTransaction":{"description":"A send transaction that transfers THETA and TFUEL coins between addresses.","allOf":[{"$ref":"#/components/schemas/ThetaTransactionSendTransaction"}]}},"description":"For Theta transaction: Low level transaction details."},"TransactionTokenAllowance":{"type":"object","properties":{"approverAddress":{"description":"The address of the approver.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"spenderAddress":{"description":"The address of the spender.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"asset":{"type":"string","example":"assets/native.ethereum-mainnet","description":"The asset to approve."},"amount":{"type":"string","description":"The amount to approve (allowance) in asset units.\n\nExample: `1.1`."},"miningPrice":{"description":"The price of the asset at the time of the mining.","allOf":[{"$ref":"#/components/schemas/v2ConvertedValue"}]}}},"TransactionTonTransaction":{"type":"object","properties":{"sender":{"description":"Ths source address of the transaction.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"seqno":{"type":"string","format":"int64","description":"The sequence number of the transaction."},"messages":{"type":"array","items":{"$ref":"#/components/schemas/TransactionTonTransactionMessage"},"title":"The messages posted to the blockchain"},"memo":{"type":"string","description":"The memo of the transaction."},"validUntil":{"type":"string","format":"int64","description":"The time the transaction is valid until."},"amount":{"type":"string","description":"The native amount passed to the transaction."}}},"TransactionTonTransactionMessage":{"type":"object","properties":{"address":{"type":"string","description":"The destination of the call."},"amount":{"type":"string","description":"Native Nanoton amount to send."},"payload":{"type":"string","title":"The payload of the message.\nIf not provided - This means this message is a contract deployment or a native transfer"},"stateInit":{"type":"string","description":"The initial state of the message."}},"required":["address","amount"]},"TransactionTransfer":{"type":"object","properties":{"sourceAddress":{"description":"Transfer source address. Not populated for BTC transactions.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"destinationAddress":{"description":"Transfer destination address.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"amount":{"type":"string","description":"Amount of the transfer."},"asset":{"type":"string","example":"assets/native.ethereum-mainnet","description":"Asset name."},"miningPrice":{"description":"The price of the asset at the time of the mining.","allOf":[{"$ref":"#/components/schemas/v2ConvertedValue"}]},"note":{"type":"string","description":"An optional note to attach to the specific transfer (possible for batch transfers)."}}},"TransactionTransferPrivate":{"type":"object","properties":{"sender":{"$ref":"#/components/schemas/apiv2Address"},"recipient":{"$ref":"#/components/schemas/apiv2Address"},"sentAmount":{"type":"string","description":"Amount received by the recipient."},"changeAmount":{"type":"string","description":"Remainder returned to the sender."}}},"TransactionTransferPrivateToPublic":{"type":"object","properties":{"sender":{"$ref":"#/components/schemas/apiv2Address"},"recipient":{"$ref":"#/components/schemas/apiv2Address"},"sentAmount":{"type":"string","description":"Amount credited to the recipient's public account."},"changeAmount":{"type":"string","description":"Remainder returned to the sender as a record."}}},"TransactionTransferPublic":{"type":"object","properties":{"sender":{"$ref":"#/components/schemas/apiv2Address"},"recipient":{"$ref":"#/components/schemas/apiv2Address"},"amount":{"type":"string"}}},"TransactionTransferPublicAsSigner":{"type":"object","properties":{"signer":{"$ref":"#/components/schemas/apiv2Address"},"recipient":{"$ref":"#/components/schemas/apiv2Address"},"amount":{"type":"string"}}},"TransactionTransferPublicToPrivate":{"type":"object","properties":{"sender":{"$ref":"#/components/schemas/apiv2Address"},"recipient":{"$ref":"#/components/schemas/apiv2Address"},"amount":{"type":"string"}}},"TransactionTransitionValue":{"type":"object","properties":{"type":{"type":"string","description":"\"record\", \"public\", \"private\", or \"future\"."},"value":{"type":"string","description":"Plaintext value (decrypted if private)."}}},"TransactionUnknownOperation":{"type":"object","properties":{"inputs":{"type":"array","items":{"$ref":"#/components/schemas/TransactionTransitionValue"}},"outputs":{"type":"array","items":{"$ref":"#/components/schemas/TransactionTransitionValue"}}},"description":"Catch-all for custom / third-party programs."},"TransactionXRPLTransaction":{"type":"object","properties":{"jsonTransactionData":{"type":"object","readOnly":true}}},"TransactionsEstimateTransactionFeeBody":{"type":"object","properties":{"details":{"description":"Input to estimate the transaction fee.\n\nChoose one of the available messages.","allOf":[{"$ref":"#/components/schemas/v2EstimateTransactionFeeRequestDetails"}]},"priority":{"title":"Priority","allOf":[{"$ref":"#/components/schemas/v2TransactionPriorityEnum"}]}},"required":["details"]},"TransactionsInitiateTransactionBody":{"type":"object","properties":{"details":{"example":{"assetTransfer":{"asset":"assets/native.ethereum-mainnet","amount":"1.5","source":"vaults/1b25635a5b3f/wallets/95257c5a522f","destination":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"}},"description":"Input to create the transaction.\n\nChoose one of the available messages.","allOf":[{"$ref":"#/components/schemas/v2InitiateTransactionRequestDetails"}]},"priority":{"$ref":"#/components/schemas/v2TransactionPriorityEnum"},"note":{"type":"string","description":"A note to attach to the transaction.\n\nThis note will be visible to all vault members."},"designatedSigners":{"type":"array","example":["users/name@example.com"],"items":{"type":"string"},"description":"If the transaction is designated to be signed by a specific signer, this field should be set.\n\nFormat: `users/{email}` or `users/{id}`\n\nExample: `[\"users/name@example.com\"]` or `[\"users/a3e4f5\"]`"},"validateOnly":{"type":"boolean","description":"If set to true, the transaction will be validated but not created."},"requestId":{"type":"string","example":"4ba6b3b1-ee91-4dcf-a4b3-e4487d7f0f46","description":"An optional request ID to identify requests. Specify a unique request ID\nso that if you must retry your request, the server will know to ignore\nthe request if it has already been completed. The server will guarantee\nthat for at least 60 minutes after the first request.\n\nThe request ID must be a valid UUID with the exception that zero UUID is\nnot supported (00000000-0000-0000-0000-000000000000)."},"externalId":{"type":"string","description":"A client-provided identifier for the transaction.\n\nMust be unique per vault. Can be used to correlate the transaction\nwith an entity in an external system."},"annotations":{"type":"object","additionalProperties":{"type":"string"},"description":"Arbitrary client-defined key/value metadata to attach to the transaction.\n\nUtila stores these values but never interprets them. They are surfaced\nread-only on the resulting Transaction to anyone who can view it (custodians,\npartners, integrations), so multiple integrations can namespace their own\nkeys without colliding.\n\nThis field is meant for small, lightweight metadata rather than bulk data:\n  * At most 64 entries.\n  * Keys: at most 256 characters.\n  * Total serialized size (UTF-8): at most 64 KiB (65,536 bytes).\n\nAvoid storing secrets or sensitive data here, since the data is visible to\nother parties who can view the transaction. For anything larger than the\nsize limit, consider keeping it in your own system and referencing it by an ID."},"runSimulation":{"type":"boolean","description":"Run a simulation against a blockchain node to get the estimated execution results of the transaction like balance changes."},"skipInitiatorApproval":{"type":"boolean","description":"If set to true, the initiator's approval is not automatically recorded\nwhen the transaction requires approval by policy. The initiator may\nstill approve the transaction later."},"expireTime":{"type":"string","format":"date-time","description":"The expiration time of the transaction.\n\nExample: `2025-06-10T12:30:05Z`"},"includeReferencedResources":{"type":"boolean","description":"Include referenced resources in the response."}},"required":["details"]},"TransactionsPublishTransactionBody":{"type":"object"},"TransactionsReplaceTransactionBody":{"type":"object","properties":{"type":{"description":"The type of the replacement.","allOf":[{"$ref":"#/components/schemas/v2TransactionReplacementTypeEnum"}]},"designatedSigners":{"type":"array","example":["users/name@example.com"],"items":{"type":"string"},"description":"If the transaction is designated to be signed by a specific signer, this field should be set.\n\nFormat: `users/{email}` or `users/{id}`\n\nExample: `[\"users/name@example.com\"]` or `[\"users/a3e4f5\"]`"},"note":{"type":"string","description":"The note to be added to the replacement transaction.\n\nThis note will be visible to all vault members."},"expireTime":{"type":"string","format":"date-time","description":"The expiration time of the replacement transaction.\n\nFormat: `2023-08-29T18:04:00Z`"},"includeReferencedResources":{"type":"boolean","description":"Include referenced resources in the response."}},"required":["type"]},"TransactionsVoteOnTransactionRequestBody":{"type":"object","properties":{"vote":{"$ref":"#/components/schemas/v2VoteOnTransactionRequestRequestVote"}},"required":["vote"]},"TronTransactionTransferContract":{"type":"object","properties":{"ownerAddress":{"description":"The source of the transaction.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"toAddress":{"description":"The recipient address.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"amount":{"type":"string","example":"1500000","description":"Amount of TRX to transfer, in SUN (1 TRX = 1,000,000 SUN).\n\nExample: `1500000`."}}},"VerificationContextValidationEnum":{"type":"string","enum":["UNKNOWN","VALID","INVALID"]},"WalletAddressFormat":{"type":"string","enum":["BITCOIN_P2PKH","BITCOIN_P2WPKH","EVM","TRON_BASE58","BASE58","TON_NON_BOUNCEABLE","SUBSTRATE_58","BITCOIN_P2TR"],"description":" - BITCOIN_P2PKH: Bitcoin P2PKH address format.\n - BITCOIN_P2WPKH: Bitcoin P2WPKH address format.\n - EVM: Ethereum address format.\n - TRON_BASE58: Tron base58 address format.\n - BASE58: Solana address format.\n - TON_NON_BOUNCEABLE: Ton address format.\n - SUBSTRATE_58: Substrate address format.\n - BITCOIN_P2TR: Bitcoin P2TR (Taproot, BIP-341) address format."},"WalletCreateParamsBTCDetailsBTCNetworkDetails":{"type":"object","properties":{"network":{"type":"string","example":"networks/bitcoin-mainnet","description":"The Bitcoin-based network. Must be one of the wallet's `networks`.\n\nFormat: `networks/{network_id}`"},"format":{"example":"P2TR","description":"Address format for the new wallet on this network.\n\nPer-chain support:\n\n| Chain    | Supported    | Default |\n|----------|--------------|---------|\n| Bitcoin  | P2WPKH, P2TR | P2WPKH  |\n| Litecoin | P2WPKH       | P2WPKH  |\n| Dogecoin | P2PKH        | P2PKH   |","allOf":[{"$ref":"#/components/schemas/BTCDetailsAddressFormat"}]}},"description":"Creation parameters for a single Bitcoin-based network in the wallet.","required":["network","format"]},"WalletSolanaDetails":{"type":"object","properties":{"address":{"type":"string","description":"The address of the wallet.","readOnly":true}}},"WalletTronDetails":{"type":"object","properties":{"address":{"type":"string","description":"The address of the wallet.","readOnly":true}}},"WalletXRPLDetails":{"type":"object","properties":{"signingPubKey":{"type":"string","example":"ED5F5AC8B98974A3CA843326D9B88CEBD0560177B973EE0B149F782CFAA06DC66A","description":"The public key of the wallet, hex-encoded as expected by XRPL.\n\nFor ed25519 keys this starts with `ED`.","readOnly":true}}},"WalletconnectSessionPeer":{"type":"object","properties":{"uri":{"type":"string","description":"The URI of the peer."},"name":{"type":"string","description":"The name of the peer."},"description":{"type":"string","description":"The description of the peer."},"icon":{"type":"string","description":"The icon of the peer."}}},"WalletconnectSessionVerificationContext":{"type":"object","properties":{"origin":{"type":"string","description":"The verified origin of the WalletConnect request."},"validation":{"description":"Whether the peer's verified origin is valid, invalid, or unknown.","allOf":[{"$ref":"#/components/schemas/VerificationContextValidationEnum"}]},"verifyUrl":{"type":"string","description":"The WalletConnect Verify server URL that produced the validation."}}},"WalletsArchiveWalletBody":{"type":"object","properties":{"allowMissing":{"type":"boolean","description":"If set to true, the operation will not fail if the wallet is missing."}}},"WalletsBatchArchiveWalletsBody":{"type":"object","properties":{"names":{"type":"array","items":{"type":"string"},"description":"The resource names of the wallets to archive.\nA maximum of 1000 wallets can be archived in a batch.\n\nFormat: `vaults/{vault_id}/wallets/{wallet_id}`"},"allowMissing":{"type":"boolean","description":"If set to true, the operation will not fail if any of the wallets are missing."}},"required":["names"]},"WalletsBatchUnarchiveWalletsBody":{"type":"object","properties":{"names":{"type":"array","items":{"type":"string"},"description":"The resource names of the wallets to unarchive.\nA maximum of 1000 wallets can be unarchived in a batch.\n\nFormat: `vaults/{vault_id}/wallets/{wallet_id}`"},"allowMissing":{"type":"boolean","description":"If set to true, the operation will not fail if any of the wallets are missing."}},"required":["names"]},"WalletsDeriveContextHashBody":{"type":"object","properties":{"network":{"type":"string","description":"The network the derivation is bound to.\n\nFormat: `networks/{network_id}`"},"application":{"type":"string","description":"Application domain tag used for domain separation, e.g. \"babylon-btc-vault\"."},"context":{"type":"string","description":"Application-supplied value that participates in domain separation."}},"required":["network","application","context"]},"WalletsUnarchiveWalletBody":{"type":"object","properties":{"allowMissing":{"type":"boolean","description":"If set to true, the operation will not fail if the wallet is missing."}}},"apiUserRoleEnum":{"type":"string","enum":["ADMIN","SIGNER","VIEWER","OWNER","NON_SIGNING_OPERATOR","NON_SIGNING_ADMIN"]},"apiUserStatusEnum":{"type":"string","enum":["PENDING","ACTIVE"]},"apiUserTypeEnum":{"type":"string","enum":["USER_ACCOUNT","SERVICE_ACCOUNT"]},"apiv2Address":{"type":"object","properties":{"value":{"type":"string","description":"The actual address."},"infoRef":{"type":"string","description":"If it's an address in the vault (e.g., a wallet address), a reference to address information will be listed here.\nAddress information can be fetched from `ReferencedAddressesInfo` map with the reference as the key.\n\nWill be populated only if `includeReferencedResources` is set to `true`."},"private":{"type":"boolean","description":"True when the address is redacted because it belongs to a private Aleo record.\nWhen set, `value` is empty.","readOnly":true}}},"apiv2BTCPSBT":{"type":"object","properties":{"network":{"type":"string","example":"networks/bitcoin-mainnet","description":"The resource name of the network of the transaction.\n\nFormat: `networks/{network_id}`."},"psbt":{"type":"string","format":"byte","description":"The PSBT data to sign, encoded in base64 format per BIP-174."}},"description":"Sign an externally-created PSBT (Partially Signed Bitcoin Transaction).\n\nBy default Utila signs the PSBT and returns it without broadcasting.\nSet `publish` to true to have Utila automatically broadcast after signing.","required":["network","psbt"]},"apiv2EVMAccountDelegation":{"type":"object","properties":{"fromAddress":{"type":"string","description":"The source of the transaction.\n\nA `0x`-prefixed hex string address, (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`)"},"contractAddress":{"type":"string","description":"The address of the contract the account is delegating to.\n\nDelegating to the zero address is equivalent to undelegating and is automatically\napproved."},"chainId":{"type":"string","description":"The chain ID of the transaction.\nIf not provided, the chain ID will be 0 and apply to all chains."},"nonce":{"type":"string","format":"int64","description":"The nonce of the transaction.\nIf not provided, the nonce will be the next available nonce for signer."},"offsetNonce":{"type":"boolean","description":"If set to true, nonce must not be set, will offset the calculated nonce by +1.\n\nThis is useful for self-delegation."}},"required":["fromAddress","contractAddress"]},"apiv2EVMTransaction":{"type":"object","properties":{"network":{"type":"string","example":"networks/ethereum-mainnet","description":"The resource name of the network of the transaction.\n\nFormat: `networks/{network_id}`."},"fromAddress":{"type":"string","description":"The source of the transaction.\n\nCan be one of the following:\n1. A `0x`-prefixed hex string address, (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`)\n2. An EVM wallet resource name: `vaults/{vault_id}/wallets/{wallet_id}`\n3. A specific wallet address: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`"},"toAddress":{"type":"string","description":"The destination of the transfer.\n\nIf empty, the transaction is a contract deployment.\n\nCan be one of the following:\n1. A `0x`-prefixed hex string address (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`)\n2. A wallet: `vaults/{vault_id}/wallets/{wallet_id}`.\n3. A specific wallet address: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`."},"value":{"type":"string","description":"The amount to transfer in wei. Can be hex or decimal.\n\nExample: `0x32` or `50`."},"data":{"type":"string","example":"0xda82fb4c00000a","description":"Hex encoded transaction data, must be prefixed with `0x`.\n\nExample: `0xda82fb4c00000a`."},"overrideParams":{"description":"Advanced parameters.","allOf":[{"$ref":"#/components/schemas/v2EVMTransactionParams"}]},"authorizationDetails":{"description":"The authorization list of the transaction (EIP-7702).\n\nSee: https://eips.ethereum.org/EIPS/eip-7702","allOf":[{"$ref":"#/components/schemas/apiv2EVMTransactionAuthorizationDetails"}]},"publish":{"type":"boolean","description":"Set to true if you wish for Utila to automatically broadcast the transaction after it is signed. If not provided, defaults to `true`."},"sponsor":{"type":"string","description":"Optional sponsor wallet/address that will pay transaction fees.\n\nWhen set, the transaction is submitted as a sponsored EIP-7702 delegated execute call.\nThe network must support EIP-7702.\n\nCan be one of the following:\n1. A raw string address (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`)\n2. A wallet: `vaults/{vault_id}/wallets/{wallet_id}`\n3. A specific wallet address: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`\n\nThe sponsor must be a Utila-managed wallet or address in the same vault with sufficient balance to pay transaction fees."}},"required":["network","fromAddress"]},"apiv2EVMTransactionAuthorization":{"type":"object","properties":{"address":{"type":"string","description":"The address of the authorization.\n\nA `0x`-prefixed hex string address, (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`)"},"chainId":{"type":"string","description":"The chain ID of the authorization."},"nonce":{"type":"string","format":"int64","description":"The nonce of the authorization."},"signature":{"type":"string","format":"byte","description":"The signature of the authorization."}},"required":["address","chainId","nonce","signature"]},"apiv2EVMTransactionAuthorizationDetails":{"type":"object","properties":{"authorizationList":{"type":"array","items":{"$ref":"#/components/schemas/apiv2EVMTransactionAuthorization"},"description":"The list of authorizations."}},"required":["authorizationList"]},"apiv2ExchangeWithdrawal":{"type":"object","properties":{"asset":{"type":"string","example":"assets/binance.USDC","description":"The asset to withdraw. Must be an exchange asset.\n\nFormat: `assets/{exchange}.{symbol}`\nExample: `assets/binance.USDC`"},"amount":{"type":"string","example":"1.1","description":"The amount of the asset to withdraw in asset units."},"source":{"type":"string","example":"vaults/1b25635a5b3f/exchangeConnections/95257c5a522f","description":"The source of the withdrawal. Specifies the exchange connection to withdraw from.\nThe source should be a valid exchange connection resource name in the current vault (shown in the Console).\nThe main account of the exchange connection will be used for the withdrawal.\n\nFormat: `vaults/{vault_id}/exchangeConnections/{exchange_connection_id}`"},"destination":{"type":"string","example":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","description":"The destination of the transfer.\n\nCan be one of the following:\n1. A raw string address (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` or `bc1q3vfght7rln2c3733dl42navt8pslfya7talfns`)\n2. A wallet: `vaults/{vault_id}/wallets/{wallet_id}`.\n3. A specific wallet address: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`.\n\n**Must be an address managed by the current vault.**"},"destinationNetwork":{"type":"string","example":"networks/ethereum-mainnet","description":"The destination network of the transfer."},"payFeeFromAmount":{"type":"boolean","title":"Whether or not fees should be paid from transaction amount`"}},"required":["asset","amount","source","destination","destinationNetwork"]},"apiv2StellarTimeBounds":{"type":"object","properties":{"minUnixTime":{"type":"string","format":"int64","description":"Minimum time (Unix timestamp)."},"maxUnixTime":{"type":"string","format":"int64","description":"Maximum time (Unix timestamp)."}},"required":["maxUnixTime"]},"apiv2StellarTransaction":{"type":"object","properties":{"network":{"type":"string","example":"networks/stellar-mainnet","description":"The resource name of the network of the transaction.\n\nFormat: `networks/{network_id}`."},"sourceAddress":{"type":"string","description":"The source of the transaction.\n\nA Utila wallet Stellar address (example: `GAAAAAAAACGC6SEYFBKQ33QJ2FXVEP3EJ6BE2FCVW2SSP6X5TBNQYQ`).\nThe address which will publish the transaction."},"operations":{"type":"array","items":{"$ref":"#/components/schemas/v2StellarTransactionOperation"},"description":"The operations to include in the transaction."},"memo":{"description":"Optional memo to attach to the transaction.","allOf":[{"$ref":"#/components/schemas/v2StellarTransactionMemo"}]},"fee":{"type":"string","format":"int64","description":"Optional fee in stroops. If not provided, the network will determine the fee."},"timeBounds":{"description":"Optional timebounds for the transaction.","allOf":[{"$ref":"#/components/schemas/apiv2StellarTimeBounds"}]},"publish":{"type":"boolean","description":"Set to true if you wish for Utila to automatically broadcast the transaction after it is signed. Default: true."}},"required":["network","sourceAddress","operations"]},"apiv2TronPersonalSign":{"type":"object","properties":{"fromAddress":{"type":"string","description":"The Tron address to sign the message with.\n\nThe message is hashed using the Tron `\\x19TRON Signed Message:\\n<length>` prefix\n(the Tron equivalent of EIP-191 personal_sign, as used by TronWeb's\n`signMessageV2`). To sign a message for a Tron address with the EIP-191\n`\\x19Ethereum Signed Message:\\n<length>` prefix instead, use `EVMPersonalSign`.\n\nCan be one of the following:\n1. A Tron `T`-prefixed base58 address, must be matched by a wallet address in the current vault (example: `TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`)\n2. A wallet resource name: `vaults/{vault_id}/wallets/{wallet_id}`\n3. A specific wallet address resource name: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`"},"message":{"type":"string","description":"A utf-8 encoded message to sign.\n\nOne of `message`, `messageHex` is required.\n\nExample: `hello`."},"messageHex":{"type":"string","description":"A utf-8 hex encoded message to sign, must start with `0x`.\n\nOne of `message`, `messageHex` is required.\n\nExample: `0x68656c6c6f` (representing `hello`)"}},"required":["fromAddress"]},"apiv2TronTransaction":{"type":"object","properties":{"network":{"type":"string","example":"networks/tron-mainnet","description":"The resource name of the network of the transaction.\n\nFormat: `networks/{network_id}`."},"publish":{"type":"boolean","description":"Set to true if you wish for Utila to automatically broadcast the transaction after it is signed. Default: true."},"triggerSmartContract":{"$ref":"#/components/schemas/apiv2TronTransactionTriggerSmartContract"},"freezeBalanceV2":{"$ref":"#/components/schemas/apiv2TronTransactionFreezeBalanceV2"},"unfreezeBalanceV2":{"$ref":"#/components/schemas/apiv2TronTransactionUnfreezeBalanceV2"},"withdrawExpireUnfreeze":{"$ref":"#/components/schemas/apiv2TronTransactionWithdrawExpireUnfreeze"},"delegateResource":{"$ref":"#/components/schemas/apiv2TronTransactionDelegateResource"},"undelegateResource":{"$ref":"#/components/schemas/apiv2TronTransactionUnDelegateResource"},"cancelAllUnfreezeV2":{"$ref":"#/components/schemas/apiv2TronTransactionCancelAllUnfreezeV2"},"voteWitness":{"$ref":"#/components/schemas/apiv2TronTransactionVoteWitness"},"withdrawBalance":{"$ref":"#/components/schemas/apiv2TronTransactionWithdrawBalance"}},"required":["network"]},"apiv2TronTransactionCancelAllUnfreezeV2":{"type":"object","properties":{"ownerAddress":{"type":"string","description":"The source of the transaction.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"}},"required":["ownerAddress"]},"apiv2TronTransactionDelegateResource":{"type":"object","properties":{"ownerAddress":{"type":"string","description":"The source of the transaction.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"},"resource":{"description":"The type of resource to delegate.\n\nCan be one of the following:\n1. `BANDWIDTH`\n2. `ENERGY`","allOf":[{"$ref":"#/components/schemas/apiv2TronTransactionTronResourceEnum"}]},"amount":{"type":"string","example":"1500000","description":"The amount of the resource to delegate, in SUN.\n\nExample: `1500000`."},"receiverAddress":{"type":"string","description":"The address to delegate the resource to.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"},"lock":{"type":"boolean","description":"Whether to lock the delegation.\n\nDefault: false."},"lockPeriod":{"type":"string","description":"The period to lock the delegation, in block numbers, 1 block ≈ 3 seconds.\n\nExample: `1000`."}},"required":["ownerAddress","resource","amount","receiverAddress"]},"apiv2TronTransactionFreezeBalanceV2":{"type":"object","properties":{"ownerAddress":{"type":"string","description":"The source of the transaction.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"},"amount":{"type":"string","example":"1500000","description":"Amount of TRX to be staked, in SUN.\n\nExample: `1500000`."},"resource":{"description":"The type of resource to obtain by staking TRX.\n\nCan be one of the following:\n1. `BANDWIDTH`\n2. `ENERGY`","allOf":[{"$ref":"#/components/schemas/apiv2TronTransactionTronResourceEnum"}]}},"required":["ownerAddress","amount","resource"]},"apiv2TronTransactionTriggerSmartContract":{"type":"object","properties":{"ownerAddress":{"type":"string","description":"The source of the transaction.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"},"contractAddress":{"type":"string","description":"The smart contract to trigger.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"},"callValue":{"type":"string","format":"int64","description":"The amount of SUN passed into the contract (1 TRX = 1,000,000 SUN).\n\nExample: `500000`."},"data":{"type":"string","example":"a9059cbb0000000000000000000000002ed5dd8a98aea00ae32517742ea5289761b2710e0000000000000000000000000000000000000000000000000000000ba43b7400","description":"Hex encoded transaction data.\n\nExample: `a9059cbb0000000000000000000000002ed5dd8a98aea00ae32517742ea5289761b2710e0000000000000000000000000000000000000000000000000000000ba43b7400`."}},"required":["ownerAddress","contractAddress"]},"apiv2TronTransactionTronResourceEnum":{"type":"string","enum":["BANDWIDTH","ENERGY"]},"apiv2TronTransactionUnDelegateResource":{"type":"object","properties":{"ownerAddress":{"type":"string","description":"The source of the transaction.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"},"resource":{"description":"The type of resource to undelegate.\n\nCan be one of the following:\n1. `BANDWIDTH`\n2. `ENERGY`","allOf":[{"$ref":"#/components/schemas/apiv2TronTransactionTronResourceEnum"}]},"amount":{"type":"string","example":"1500000","description":"The amount of the delegated resource to undelegate, in SUN.\n\nExample: `1500000`."},"receiverAddress":{"type":"string","description":"The address to undelegate the resource from.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"}},"required":["ownerAddress","resource","amount","receiverAddress"]},"apiv2TronTransactionUnfreezeBalanceV2":{"type":"object","properties":{"ownerAddress":{"type":"string","description":"The source of the transaction.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"},"amount":{"type":"string","example":"1500000","description":"Amount of TRX to be unstaked, in SUN.\n\nExample: `1500000`."},"resource":{"description":"The type of resource to unstake TRX from.\n\nWhen you unfreeze (unstake) TRX, you release resources that can be used for transactions.\nThe resources are available for withdrawal after 14 days.\n\nCan be one of the following:\n1. `BANDWIDTH`\n2. `ENERGY`","allOf":[{"$ref":"#/components/schemas/apiv2TronTransactionTronResourceEnum"}]}},"required":["ownerAddress","amount","resource"]},"apiv2TronTransactionVoteWitness":{"type":"object","properties":{"ownerAddress":{"type":"string","description":"Voter address.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"},"votes":{"type":"array","items":{"$ref":"#/components/schemas/apiv2TronTransactionVoteWitnessVote"},"description":"The votes to cast. Max 30 votes.\n\nExample: `[{\"vote_address\": \"418840E6C55B9ADA326D211D818C34A994AECED808\", \"vote_count\": \"1000\"}]`"}},"required":["ownerAddress","votes"]},"apiv2TronTransactionVoteWitnessVote":{"type":"object","properties":{"voteAddress":{"type":"string","description":"The address of Super Representatives to vote for.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"},"voteCount":{"type":"string","description":"Example: `1000`.","title":"Number of votes, (1 vote = 1 staked TRX)"}},"required":["voteAddress","voteCount"]},"apiv2TronTransactionWithdrawBalance":{"type":"object","properties":{"ownerAddress":{"type":"string","description":"The source of the transaction.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"}},"required":["ownerAddress"]},"apiv2TronTransactionWithdrawExpireUnfreeze":{"type":"object","properties":{"ownerAddress":{"type":"string","description":"The source of the transaction.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"}},"required":["ownerAddress"]},"apiv2UTXO":{"type":"object","properties":{"network":{"type":"string","example":"networks/bitcoin-mainnet","description":"The resource name of the network of the UTXO.\n\nFormat: `networks/{network_id}`.","readOnly":true},"txHash":{"type":"string","example":"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b","description":"The hash of the transaction that created this UTXO.","readOnly":true},"vout":{"type":"integer","format":"int32","example":1,"description":"The output index in the transaction that created this UTXO.","readOnly":true},"walletAddress":{"type":"string","example":"vaults/1b25635a5b3f/wallets/67af44031584/addresses/519c67ddae33","description":"The resource name of the wallet address that owns this UTXO.\n\nFormat: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`","readOnly":true},"scriptType":{"type":"string","example":"P2WPKH","description":"The script type of the UTXO.","readOnly":true},"state":{"example":"AVAILABLE","description":"The current spending state of the UTXO.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2UTXOState"}]},"confirmations":{"type":"integer","format":"int32","example":6,"description":"The number of confirmations for this UTXO.","readOnly":true},"value":{"type":"string","example":"2.1","description":"The amount of the UTXO, in decimal form with precision included.","readOnly":true},"convertedValue":{"description":"The value of the UTXO converted to fiat currency.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2ConvertedValue"}]},"createTime":{"type":"string","format":"date-time","description":"First time the UTXO was seen by Utila.","readOnly":true}},"description":"Represents an unspent transaction output (UTXO) belonging to a wallet."},"apiv2VaultContext":{"type":"object","properties":{"vaultId":{"type":"string","readOnly":true},"role":{"title":"The user's role in this vault","readOnly":true,"allOf":[{"$ref":"#/components/schemas/apiUserRoleEnum"}]},"status":{"title":"The user's status in this vault","readOnly":true,"allOf":[{"$ref":"#/components/schemas/apiUserStatusEnum"}]}}},"googlerpcStatus":{"type":"object","properties":{"code":{"type":"integer","format":"int32","description":"The status code, which should be an enum value of\n[google.rpc.Code][google.rpc.Code]."},"message":{"type":"string","description":"A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized\nby the client."},"details":{"type":"array","items":{"$ref":"#/components/schemas/protobufAny"},"description":"A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use."}},"description":"The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors)."},"protobufAny":{"type":"object","properties":{"@type":{"type":"string","description":"A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."}},"additionalProperties":{},"description":"`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(&foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := &pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := &pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": <string>,\n      \"lastName\": <string>\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }"},"protobufNullValue":{"type":"string","description":"`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\nThe JSON representation for `NullValue` is JSON `null`."},"v2AMLActionEnum":{"type":"string","enum":["DENY","ALLOW","ALERT"]},"v2AddressBalanceChanges":{"type":"object","properties":{"address":{"description":"The address that will be affected by the transaction.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"balanceChanges":{"type":"array","items":{"$ref":"#/components/schemas/v2BalanceChange"},"description":"The balance changes for the address."}}},"v2AddressBookEntry":{"type":"object","properties":{"name":{"type":"string","example":"vaults/1b25635a5b3f/addressBookEntries/95257c5a522f","description":"The resource name of the address book entry.\n\nFormat: `vaults/{vault_id}/addressBookEntries/{entry_id}`","readOnly":true},"address":{"type":"string","example":"0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6","description":"The blockchain address."},"displayName":{"type":"string","example":"My DeFi Wallet","description":"A human-readable name for the address."},"network":{"type":"string","example":"networks/ethereum-mainnet","description":"The resource name of the network this address belongs to.\n\nFormat: `networks/{network_id}`"},"note":{"type":"string","example":"This is my main trading wallet","description":"Optional note attached to the address."},"createTime":{"type":"string","format":"date-time","example":"2023-01-15T10:30:00Z","description":"Output only. Creation time.","readOnly":true},"tracked":{"type":"boolean","description":"If true, assets of this address should be tracked by Utila."},"associatedExternalWallet":{"type":"string","example":"vaults/1b25635a5b3f/wallets/95257c5a522f","description":"The wallet that is associated with this address.\nOnly set if `tracked` is true.\n\nFormat: `vaults/{vault_id}/wallets/{wallet_id}`","readOnly":true},"creator":{"type":"string","example":"users/1b25635a5b3f/users/95257c5a522f","description":"Output only. The user who issued the address book entry creation.\n\nFormat: `users/{user_id}`","readOnly":true},"signed":{"type":"boolean","description":"Output only.\nWhether the address book entry is cryptographically signed after going through the quorum approval process.","readOnly":true}},"description":"An address book entry.","required":["address","displayName"]},"v2Asset":{"type":"object","properties":{"name":{"type":"string","description":"The resource name of the asset.\n\nFormat: `assets/{asset_id}`"},"displayName":{"type":"string","description":"The display name of the asset.\n\nExample: \"Bitcoin\""},"network":{"type":"string","example":"networks/ethereum-mainnet","description":"The resource name of the network.\n\nFormat: `networks/{network_id}`."},"type":{"description":"The type of the asset.","allOf":[{"$ref":"#/components/schemas/v2AssetTypeEnum"}]},"symbol":{"type":"string","description":"The symbol of the asset.\n\nShould not be trusted as this is the contract advertised symbol for non-native\nassets."},"decimals":{"type":"integer","format":"int32","description":"The decimals of the asset."},"convertedValue":{"description":"The converted value of the asset.","allOf":[{"$ref":"#/components/schemas/v2ConvertedValue"}]},"tokenInfo":{"description":"The token info of the asset.\n\nOnly present if the asset is a token.","allOf":[{"$ref":"#/components/schemas/v2AssetTokenInfo"}]}}},"v2AssetTokenInfo":{"type":"object","properties":{"contractAddress":{"type":"string","description":"The contract address of the token."},"standard":{"description":"The token standard.","allOf":[{"$ref":"#/components/schemas/AssetTokenInfoStandardEnum"}]},"denom":{"type":"string","description":"The denom of the token on cosmos ecosystem."},"cantonTokenDetails":{"title":"Canton token details","allOf":[{"$ref":"#/components/schemas/v2CantonTokenDetails"}]},"tip20Currency":{"type":"string","description":"ISO 4217 currency code for TIP-20 tokens (e.g. \"USD\", \"EUR\"). Empty for other standards."},"suiTokenDetails":{"description":"Sui token details. Present only for gasless-eligible Sui assets.","allOf":[{"$ref":"#/components/schemas/v2SuiTokenDetails"}]}}},"v2AssetTransfer":{"type":"object","properties":{"asset":{"type":"string","example":"assets/native.ethereum-mainnet","description":"The asset to transfer.\n\nCan be one of the following:\n1. A raw asset name `assets/{asset_id}` (example: `assets/e72ff35a5b15`)\n2. A native asset name `assets/native.{network_id}` (example: `assets/native.ethereum-mainnet`)\n3. An ERC20 asset name `assets/erc20.{network_id}.{contract}` (example: `assets/erc20.ethereum-mainnet.0x6b175474e89094c44da98b954eedeac495271d0f`)\n4. A TRC20 asset name `assets/trc20.{network_id}.{contract}` (example: `assets/trc20.tron-mainnet.TKieffkQXtW8Dr1hKXKGPqCqYi1UNMjJw`)\n5. A Solana SPL token asset name `assets/spl-token.{network_id}.{contract}` (example: `assets/spl-token.solana-mainnet.Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB`)\n6. A Solana SPL token2022 asset name `assets/spl-token-2022.{network_id}.{contract}` (example: `assets/spl-token-2022.solana-mainnet.2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo`)\n7. A TON Jetton token asset name `assets/jetton.{network_id}.{contract}` (example: `assets/jetton.ton-mainnet.EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs`)"},"amount":{"type":"string","example":"1.1","description":"The amount of the asset to transfer in asset units.\n\nExample: `1.1`."},"source":{"type":"string","description":"The source of the transfer.\n\nCan be one of the following:\n1. A raw string address, (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`)\n2. A wallet containing the asset: `vaults/{vault_id}/wallets/{wallet_id}`\n3. A specific wallet address containing the asset: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`\n\nFor Bitcoin, only wallet source is supported (the second option)."},"destination":{"type":"string","description":"The destination of the transfer.\n\nCan be one of the following:\n1. A raw string address (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` or `bc1q3vfght7rln2c3733dl42navt8pslfya7talfns`)\n2. A wallet: `vaults/{vault_id}/wallets/{wallet_id}`.\n3. A specific wallet address: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`."},"payFeeFromAmount":{"type":"boolean","description":"If set to true, fees will be paid from transfer amount.\n\nCurrently only supported for native assets on EVM-compatible networks."},"memo":{"type":"string","description":"An optional \"on-chain\" memo to attach to the transfer.\n\nImplementation may differ between assets.\nCurrently supports:\n* TON native transfers (`assets/native.ton-mainnet`)\n* TON jetton transfers (`assets/jetton.ton-mainnet.EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs`)\n* Solana native transfers (`assets/native.solana-mainnet`)\n* Solana SPL token transfers (`assets/spl-token.solana-mainnet.*` and `assets/spl-token-2022.solana-mainnet.*`)\n  attached via the SPL Memo Program. Limited to 566 bytes of valid UTF-8."},"sponsor":{"type":"string","description":"Optional sponsor that will pay transaction fees.\n\nCan be one of the following:\n1. A raw string address (example: `9B5XszUGdMaxCZ7uSQhPzdks5ZQSmWxrmzCSvtJ6Ns6g`)\n2. A wallet: `vaults/{vault_id}/wallets/{wallet_id}`\n3. A specific wallet address: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`\n4. A gas station: `vaults/{vault_id}/gasStations/{gas_station_id}` (TVM transfers only)\n\nFor TVM transfers, the sponsor must be a gas station in the same vault.\nFor other blockchains, the sponsor must be a Utila-managed wallet or address in the same vault with sufficient balance to pay transaction fees."},"stellarOptions":{"title":"Blockchain specific options for Stellar Asset Transfer","allOf":[{"$ref":"#/components/schemas/AssetTransferStellarOptions"}]},"xrplOptions":{"title":"Blockchain specific options for XRPL Asset Transfer","allOf":[{"$ref":"#/components/schemas/AssetTransferXRPLOptions"}]}},"required":["asset","amount","source","destination"]},"v2AssetTypeEnum":{"type":"string","enum":["NATIVE_CURRENCY","TOKEN"],"description":"The type of the asset.\n\n - NATIVE_CURRENCY: The asset is a native currency.\n - TOKEN: The asset is a token."},"v2BTCTransfer":{"type":"object","properties":{"network":{"type":"string","example":"networks/bitcoin-mainnet","description":"The resource name of the network of the transaction.\n\nFormat: `networks/{network_id}`."},"inputs":{"type":"array","items":{"$ref":"#/components/schemas/v2BTCTransferUTXO"},"description":"Inputs used to fund the transaction.\n\nYou must provide at least one funding source:\n\n1. `inputs` – explicitly specified UTXOs.\n2. `input_sources` – sources from which Utila may automatically\n   select UTXOs.\n\nBoth may be provided. In that case, the specified `inputs` are always\nincluded and Utila will automatically select additional UTXOs from\n`input_sources` if needed to cover the outputs and fees.\n\nAll UTXOs listed here must belong to the same wallet."},"inputSources":{"type":"array","items":{"$ref":"#/components/schemas/BTCTransferInputSource"},"description":"Sources from which Utila may automatically select additional UTXOs.\n\nCurrently only a single source is supported, and it must reference the\nsame wallet that owns the UTXOs in `inputs` (when both are provided)."},"outputs":{"type":"array","items":{"$ref":"#/components/schemas/BTCTransferOutput"},"description":"The transfer outputs."},"changeOutputs":{"type":"array","items":{"$ref":"#/components/schemas/BTCTransferChangeOutput"},"description":"Change address overrides. At most one per input wallet.\n\nWhen change is needed, Utila will use the specified address instead of auto-generating one."},"feeSettings":{"description":"Custom fee settings. Takes precedence over the parent request's `priority` field.\n\nIf neither is set, Utila uses a default priority (NORMAL).","allOf":[{"$ref":"#/components/schemas/BTCTransferFeeSettings"}]}},"description":"A transfer transaction for Bitcoin and other UTXO-based networks with explicit input control.","required":["network","outputs"]},"v2BTCTransferUTXO":{"type":"object","properties":{"txHash":{"type":"string","example":"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b","description":"The hash of the transaction that created this UTXO."},"vout":{"type":"integer","format":"int32","example":0,"description":"The output index in the transaction.\n"}},"description":"A specific UTXO to use as an input.","required":["txHash","vout"]},"v2Balance":{"type":"object","properties":{"asset":{"type":"string","example":"assets/native.ethereum-mainnet","description":"The resource name of the asset.\n\nFormat: `assets/{asset_id}`"},"value":{"type":"string","example":"1.3","description":"The amount of the asset, in decimal form with precision included."},"rawValue":{"type":"string","example":"13000000","description":"The raw amount of the asset that this balance contains.\n\nSpecified in the smallest unit of the Asset."},"frozenValue":{"type":"string","example":"0.3"}}},"v2BalanceChange":{"type":"object","properties":{"amount":{"type":"string","description":"The value of the balance change in token base units. For example: -1000000000."},"amountAbs":{"type":"string","description":"The absolute value of the balance change in token base units. For example: 1000000000."},"negative":{"type":"boolean","description":"Whether the balance change is negative. For example: true if the balance change is -1000000000."},"asset":{"type":"string","example":"assets/native.ethereum-mainnet","description":"The asset of the change. Can be a token that is not tracked by Utila."},"price":{"description":"The current price of the asset.","allOf":[{"$ref":"#/components/schemas/v2ConvertedValue"}]}}},"v2BatchAddAddressBookEntriesToGroupResponse":{"type":"object","properties":{"vaultAction":{"description":"The vault action representing the quorum action.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2VaultAction"}]}}},"v2BatchAssetTransfer":{"type":"object","properties":{"asset":{"type":"string","example":"assets/native.ethereum-mainnet","description":"The asset to transfer.\n\nCan be one of the following:\n1. A raw asset name `assets/{asset_id}` (example: `assets/e72ff35a5b15`)\n2. A native asset name `assets/native.{network_id}` (example: `assets/native.ethereum-mainnet`)\n3. An ERC20 asset name `assets/erc20.{network_id}.{contract}` (example: `assets/erc20.ethereum-mainnet.0x6b175474e89094c44da98b954eedeac495271d0f`)\n\nSupported Assets: The native currency of the network and ERC20 tokens.\n\n **Note: For the legacy batch-contract path (no `sponsor`), ERC20 asset transfers\n require an approval. See [GetLatestBatchContract](#tag/Blockchains/operation/Blockchains_GetLatestBatchContract)\n for more information. When `sponsor` is set on EVM, transfers use EIP-7702 sponsored\n multi-call and do not require batch-contract approval.**\n\n\nSupported Networks: Ethereum and Polygon (Sepolia and Mumbai)"},"source":{"type":"string","description":"The source of the transfer.\n\nCan be one of the following:\n1. A raw string address, (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`)\n2. A wallet containing the asset: `vaults/{vault_id}/wallets/{wallet_id}`\n3. A specific wallet address containing the asset: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`\n\nFor Bitcoin, only wallet source is supported (the second option)."},"destinations":{"type":"array","items":{"$ref":"#/components/schemas/BatchAssetTransferBatchTransferDestination"},"description":"The batch transfer destinations."}},"required":["asset","source","destinations"]},"v2BatchContract":{"type":"object","properties":{"name":{"type":"string","example":"networks/ethereum-mainnet/0x1234...","description":"The resource name of the batch contract."},"network":{"type":"string","example":"networks/ethereum-mainnet","description":"The network of the batch contract."},"address":{"type":"string","example":"0x1234...","description":"The address of the batch contract."}}},"v2BatchCreateAddressBookEntriesResponse":{"type":"object","properties":{"vaultAction":{"description":"The vault action representing the quorum action.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2VaultAction"}]}}},"v2BatchCreateUnsignedAddressBookEntriesResponse":{"type":"object","properties":{"vaultAction":{"description":"The vault action representing the quorum action.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2VaultAction"}]}}},"v2BatchGetAddressBookEntriesResponse":{"type":"object","properties":{"addressBookEntries":{"type":"array","items":{"$ref":"#/components/schemas/v2AddressBookEntry"},"description":"The requested address book entries.","readOnly":true}}},"v2BatchGetAssetsResponse":{"type":"object","properties":{"assets":{"type":"array","items":{"$ref":"#/components/schemas/v2Asset"},"description":"The assets returned."}}},"v2BatchGetTransactionsResponse":{"type":"object","properties":{"transactions":{"type":"array","items":{"$ref":"#/components/schemas/v2Transaction"},"description":"The transactions retrieved."},"referencedResources":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2ReferencedResource"},"description":"A mapping of the referenced resources in the message.\nThe key is the resource name and the value is the corresponding resource."},"referencedAddressesInfo":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2NetworkAddressInfo"},"description":"A mapping of the referenced addresses in the message.\nThe key is the address and the value is the corresponding address info."}}},"v2BatchGetWalletAddressesResponse":{"type":"object","properties":{"walletAddresses":{"type":"array","items":{"$ref":"#/components/schemas/v2WalletAddress"},"description":"The wallet addresses retrieved."}}},"v2BatchGetWalletsResponse":{"type":"object","properties":{"wallets":{"type":"array","items":{"$ref":"#/components/schemas/v2Wallet"},"description":"The wallets retrieved."}}},"v2CancelTransactionResponse":{"type":"object"},"v2CantonTokenDetails":{"type":"object","properties":{"instrumentId":{"type":"string","description":"The instrument ID."},"instrumentAdmin":{"type":"string","description":"The instrument admin."},"supportsTransferPreapproval":{"type":"boolean","description":"Whether Utila supports creating a standing transfer pre-approval for this asset."}}},"v2ConvertedValue":{"type":"object","properties":{"amount":{"type":"string","description":"The amount in USD.","readOnly":true},"currencyCode":{"type":"string","description":"The currency code of the amount. Always USD.","readOnly":true}},"description":"A message representing a converted value."},"v2CreateAddressBookEntryRequest":{"type":"object","properties":{"address":{"type":"string","example":"0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6","description":"The blockchain address."},"displayName":{"type":"string","example":"John's deposit address","description":"A human-readable name for the address."},"network":{"type":"string","example":"networks/ethereum-mainnet","description":"The resource name of the network this address belongs to.\n\nFormat: `networks/{network_id}`"},"note":{"type":"string","example":"This is John's deposit address ","description":"Optional note attached to the address."}},"description":"Request message for creating a single address book entry.","required":["address","displayName"]},"v2CreateWalletAddressResponse":{"type":"object","properties":{"walletAddress":{"$ref":"#/components/schemas/v2WalletAddress"}}},"v2CreateWalletResponse":{"type":"object","properties":{"wallet":{"description":"The created wallet resource.","allOf":[{"$ref":"#/components/schemas/v2Wallet"}]}}},"v2DecodedAptosEntryFunction":{"type":"object","properties":{"function":{"type":"string"},"typeArguments":{"type":"array","items":{"type":"string"}},"arguments":{"type":"array","items":{"type":"string"}}},"required":["function","typeArguments","arguments"]},"v2DecodedAptosTransactionPayload":{"type":"object","properties":{"entryFunction":{"$ref":"#/components/schemas/v2DecodedAptosEntryFunction"}}},"v2DeriveContextHashResponse":{"type":"object","properties":{"contextHash":{"type":"string","format":"byte","description":"The derived 32-byte value.","readOnly":true}}},"v2EVMFeeEstimation":{"type":"object","properties":{"gasUsed":{"type":"string","description":"The estimated gas to be used by the transaction (actual gas used may vary)."},"gasPrice":{"type":"string","description":"The estimated current gas price, in wei."}}},"v2EVMPersonalSign":{"type":"object","properties":{"fromAddress":{"type":"string","description":"The address to sign the message with.\n\nThe message is hashed using the EIP-191 `\\x19Ethereum Signed Message:\\n<length>` prefix.\nThis template also works on Tron networks: pass a Tron wallet address (or a\nwallet/address resource name that resolves to a Tron address) to produce an\nEIP-191 signature for that Tron address. Use `TronPersonalSign` instead when\nyou need the Tron-native `\\x19TRON Signed Message:\\n<length>` prefix.\n\nCan be one of the following:\n1. A `0x`-prefixed hex string address, must be matched by a wallet address in the current vault (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`)\n2. A Tron `T`-prefixed base58 address, must be matched by a wallet address in the current vault (example: `TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`)\n3. A wallet resource name: `vaults/{vault_id}/wallets/{wallet_id}`\n4. A specific wallet address resource name: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`"},"message":{"type":"string","description":"A utf-8 encoded message to sign.\n\nOne of `message`, `messageHex` is required.\n\nExample: `hello`."},"messageHex":{"type":"string","description":"A utf-8 hex encoded message to sign, must start with `0x`.\n\nOne of `message`, `messageHex` is required.\n\nExample: `0x68656c6c6f` (representing `hello`)"}},"required":["fromAddress"]},"v2EVMPriority":{"type":"object","properties":{"gasLimit":{"type":"string","format":"int64","description":"The amount of gas to use for the transaction."},"gasPrice":{"type":"string","description":"A `0x`-prefixed hex string representing the gas price of the transaction.\n\nUsed for legacy transactions (non EIP-1559)."},"maxPriorityFeePerGas":{"type":"string","description":"A `0x`-prefixed hex string representing the maximum prioriy fee per gas unit the transaction can pay.\n\nUsed for dynamic transactions (EIP-1559)."},"maxFeePerGas":{"type":"string","description":"A `0x`-prefixed hex string representing the maximum fee per gas unit the transaction can pay.\n\nUsed for dynamic transactions (EIP-1559)."}}},"v2EVMSignTypedDataV4":{"type":"object","properties":{"fromAddress":{"type":"string","description":"The address to sign the message with.\n\nCan be one of the following:\n1. A `0x`-prefixed hex string address, must be matched by a wallet address in the current vault (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`)\n2. A wallet resource name: `vaults/{vault_id}/wallets/{wallet_id}`\n3. A specific wallet address resource name: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`"},"message":{"type":"string","description":"An EIP-712 json string.\n\nSee https://eips.ethereum.org/EIPS/eip-712 for more information."}},"required":["fromAddress","message"]},"v2EVMSubmissionDetails":{"type":"object","properties":{"name":{"type":"string","description":"The resource name of the evm submission details.\n\nFormat: `vaults/{vault_id}/evmSubmissionDetails/{submission_id}`"},"authorizationTransactions":{"type":"array","items":{"type":"string"},"title":"The authorization transactions (EIP-7702).\nResource names in the format: `vaults/{vault}/transactions/{transaction}`"},"userOpTransactions":{"type":"array","items":{"type":"string"},"title":"The user operation transactions that are part of this submission bundle.\nThese are the actual transactions signed by the user (e.g., delegations, execute calls)\nthat will be submitted together as a sponsored transaction batch.\nResource names in the format: `vaults/{vault}/transactions/{transaction}`"},"lastSubmittingTransaction":{"type":"string","title":"The most recent submitting transaction that sponsors this submission.\nResource name in the format: `vaults/{vault}/transactions/{transaction}`"}},"description":"EVMSubmissionDetails describes an EVM submission: the set of transactions\nthat are broadcast together as a single gas-abstracted (sponsored) submission,\nsuch as an EIP-7702 authorization together with the user-operation\ntransactions it authorizes.","required":["name"]},"v2EVMTransactionGas":{"type":"object","properties":{"gasLimit":{"type":"string","format":"int64","description":"The amount of gas to use for the transaction."},"gasUsed":{"type":"string","description":"The amount of gas used by the transaction."},"gasPrice":{"type":"string","description":"A `0x`-prefixed hex string representing the gas price of the transaction.\n\nUsed for legacy transactions (non EIP-1559)."},"maxPriorityFeePerGas":{"type":"string","description":"A `0x`-prefixed hex string representing the maximum prioriy fee per gas unit the transaction can pay.\n\nUsed for dynamic transactions (EIP-1559)."},"maxFeePerGas":{"type":"string","description":"A `0x`-prefixed hex string representing the maximum fee per gas unit the transaction can pay.\n\nUsed for dynamic transactions (EIP-1559)."}}},"v2EVMTransactionParams":{"type":"object","properties":{"gasSettings":{"description":"Custom gas settings. Used only if generic priority is not set.","allOf":[{"$ref":"#/components/schemas/v2EVMPriority"}]},"nonce":{"type":"string","description":"Optional nonce for the transaction. If omitted, Utila will determine the nonce automatically."}}},"v2EVMUtilaDelegatedCalls":{"type":"object","properties":{"network":{"type":"string","example":"networks/ethereum-mainnet","description":"The resource name of the network.\nRequired when creating a new submission.\n\nFormat: `networks/{network_id}`."},"fromAddress":{"type":"string","description":"The address of the sender account (the delegated account).\nRequired when creating a new submission.\n\nFormat: `0x{address}`"},"calls":{"type":"array","items":{"$ref":"#/components/schemas/v2EVMUtilaDelegatedCallsCall"},"description":"The calls to execute.\nRequired when creating a new submission."},"deadlineUnix":{"type":"string","description":"The deadline as unix timestamp in seconds. If not provided, there will be no deadline.\n\nFormat: \"1734854400\" (unix timestamp in seconds)"},"submissionDetails":{"$ref":"#/components/schemas/v2EVMUtilaDelegatedCallsSubmissionDetails"}},"description":"EVM Utila delegated calls transaction using EIP-7702.\nAllows executing multiple calls from a delegated account with a sponsor paying gas fees."},"v2EVMUtilaDelegatedCallsCall":{"type":"object","properties":{"raw":{"description":"The raw call to make.","allOf":[{"$ref":"#/components/schemas/EVMUtilaDelegatedCallsCallRaw"}]}},"description":"A single call to execute.","required":["raw"]},"v2EVMUtilaDelegatedCallsSubmissionDetails":{"type":"object","properties":{"sponsorAddress":{"type":"string","description":"The address of the sponsor who will pay gas fees.\n\nFormat: `0x{address}`"}},"description":"Submission details for sponsored transaction."},"v2EstimateTransactionFeeRequestDetails":{"type":"object","properties":{"assetTransfer":{"description":"An abstract transfer.","allOf":[{"$ref":"#/components/schemas/v2AssetTransfer"}]},"assetBatchTransfer":{"description":"A batch transfer.","allOf":[{"$ref":"#/components/schemas/v2BatchAssetTransfer"}]},"evmTransaction":{"description":"An EVM transaction.","allOf":[{"$ref":"#/components/schemas/apiv2EVMTransaction"}]},"tronTriggerSmartContract":{"description":"Deprecated: Use `tron_transaction` with `trigger_smart_contract` instead.","allOf":[{"$ref":"#/components/schemas/v2TronTriggerSmartContract"}]},"tronTransaction":{"description":"A Tron transaction.","allOf":[{"$ref":"#/components/schemas/apiv2TronTransaction"}]},"evmUtilaDelegatedCalls":{"description":"An EVM Utila delegated calls transaction.","allOf":[{"$ref":"#/components/schemas/v2EVMUtilaDelegatedCalls"}]},"btcTransfer":{"description":"A transfer for Bitcoin and similar UTXO-based blockchains, with explicit input control.","allOf":[{"$ref":"#/components/schemas/v2BTCTransfer"}]}},"title":"Transaction type"},"v2EstimateTransactionFeeResponse":{"type":"object","properties":{"evmFee":{"$ref":"#/components/schemas/v2EVMFeeEstimation"},"tronFee":{"$ref":"#/components/schemas/v2TronFeeEstimation"},"totalFee":{"type":"string","description":"The estimated total fee for the transaction."},"convertedTotalFee":{"description":"The estimated total fee for the transaction, converted to fiat currency.","allOf":[{"$ref":"#/components/schemas/v2ConvertedValue"}]},"gasless":{"type":"boolean","description":"True when this transfer is applied automatically as a gasless transfer, in which case\ntotal_fee is \"0\". Pairs with the per-asset AssetTokenInfo.sui_token_details.gasless indicator."}}},"v2GasStation":{"type":"object","properties":{"name":{"type":"string","example":"vaults/1b2563/gasStations/a4b3df","description":"The resource name of the gas station.\n\nFormat: `vaults/{vault_id}/gasStations/{gas_station_id}`","readOnly":true},"network":{"type":"string","example":"networks/tron-mainnet","description":"The resource name of the network of the gas station.\n\nFormat: `networks/{network_id}`"},"provider":{"example":"TRONEX","description":"The provider of the gas station.","allOf":[{"$ref":"#/components/schemas/v2GasStationProviderEnum"}]},"balance":{"type":"string","description":"The balance of the gas station.","readOnly":true},"depositAddresses":{"type":"array","items":{"$ref":"#/components/schemas/v2GasStationDepositAddress"},"description":"The deposit addresses of the gas station.","readOnly":true},"balanceAsset":{"type":"string","example":"assets/native.ethereum-mainnet","description":"The balance and alert threshold asset of the gas station.","readOnly":true},"alertThreshold":{"type":"integer","format":"int32","description":"The alert threshold of the gas station.\nThis is the amount of the balance asset that will trigger an alert.\nIf not set, there won't be any alert triggered."}},"required":["network","provider"]},"v2GasStationDepositAddress":{"type":"object","properties":{"depositAddressDeprecated":{"type":"string","description":"The deposit address of the gas station. Deprecated: use `deposit_address` instead.","readOnly":true},"supportedAssets":{"type":"array","example":"assets/native.ethereum-mainnet","items":{"type":"string"},"description":"The supported assets of the gas station deposit address.\nThese are the assets that this address accepts.","readOnly":true},"depositAddress":{"description":"The deposit address of the gas station.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/apiv2Address"}]}}},"v2GasStationOrder":{"type":"object","properties":{"name":{"type":"string","example":"vaults/1b2563/gasStations/a4b3df/orders/123456","description":"The resource name of the gas station order.\n\nFormat: `vaults/{vault_id}/gasStations/{gas_station_id}/orders/{order_id}`","readOnly":true},"state":{"description":"The state of the gas station order.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2GasStationOrderStateEnum"}]},"gasStation":{"type":"string","example":"vaults/1b2563/gasStations/a4b3df","description":"The gas station of the gas station order.","readOnly":true},"error":{"description":"The error of the gas station order.\nThis is only set if the order has failed.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/googlerpcStatus"}]}}},"v2GasStationOrderStateEnum":{"type":"string","enum":["PENDING","SUCCESS","FAILED"]},"v2GasStationProviderEnum":{"type":"string","enum":["TRONEX"]},"v2GetAssetResponse":{"type":"object","properties":{"asset":{"description":"The asset returned.","allOf":[{"$ref":"#/components/schemas/v2Asset"}]}}},"v2GetEVMSubmissionDetailsResponse":{"type":"object","properties":{"evmSubmissionDetails":{"description":"The evm submission details.","allOf":[{"$ref":"#/components/schemas/v2EVMSubmissionDetails"}]}}},"v2GetGasStationOrderResponse":{"type":"object","properties":{"order":{"$ref":"#/components/schemas/v2GasStationOrder"}}},"v2GetLatestTransactionSimulationResponse":{"type":"object","properties":{"transactionSimulation":{"description":"The latest transaction simulation.","allOf":[{"$ref":"#/components/schemas/v2TransactionSimulation"}]},"referencedResources":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2ReferencedResource"},"description":"A mapping of the referenced resources in the message.\nThe key is the resource name and the value is the corresponding resource."},"referencedAddressesInfo":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2NetworkAddressInfo"},"description":"A mapping of the referenced addresses in the message.\nThe key is the address and the value is the corresponding address info."}}},"v2GetNetworkResponse":{"type":"object","properties":{"network":{"description":"The network.","allOf":[{"$ref":"#/components/schemas/v2Network"}]}}},"v2GetTransactionAMLScreeningResponse":{"type":"object","properties":{"amlScreening":{"$ref":"#/components/schemas/v2TransactionAMLScreening"}}},"v2GetTransactionResponse":{"type":"object","properties":{"transaction":{"$ref":"#/components/schemas/v2Transaction"},"referencedResources":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2ReferencedResource"},"description":"A mapping of the referenced resources in the message.\nThe key is the resource name and the value is the corresponding resource."},"referencedAddressesInfo":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2NetworkAddressInfo"},"description":"A mapping of the referenced addresses in the message.\nThe key is the address and the value is the corresponding address info."}}},"v2GetVaultAssetResponse":{"type":"object","properties":{"asset":{"description":"The asset returned.","allOf":[{"$ref":"#/components/schemas/v2Asset"}]}}},"v2GetVaultResponse":{"type":"object","properties":{"vault":{"description":"The vault.","allOf":[{"$ref":"#/components/schemas/v2Vault"}]}}},"v2GetWalletAddressResponse":{"type":"object","properties":{"walletAddress":{"$ref":"#/components/schemas/v2WalletAddress"}}},"v2GetWalletResponse":{"type":"object","properties":{"wallet":{"description":"The wallet resource.","allOf":[{"$ref":"#/components/schemas/v2Wallet"}]}}},"v2InitiateTransactionRequestDetails":{"type":"object","properties":{"assetTransfer":{"description":"An abstract transfer.","allOf":[{"$ref":"#/components/schemas/v2AssetTransfer"}]},"assetBatchTransfer":{"description":"A batch transfer.","allOf":[{"$ref":"#/components/schemas/v2BatchAssetTransfer"}]},"evmTransaction":{"description":"An EVM transaction.","allOf":[{"$ref":"#/components/schemas/apiv2EVMTransaction"}]},"evmPersonalSign":{"description":"An EVM personal sign message.","allOf":[{"$ref":"#/components/schemas/v2EVMPersonalSign"}]},"evmSignTypedDataV4":{"description":"An EVM sign typed data V4 message.","allOf":[{"$ref":"#/components/schemas/v2EVMSignTypedDataV4"}]},"evmAccountDelegation":{"description":"An EVM authorization message.","allOf":[{"$ref":"#/components/schemas/apiv2EVMAccountDelegation"}]},"exchangeWithdrawal":{"description":"An exchange withdrawal.","allOf":[{"$ref":"#/components/schemas/apiv2ExchangeWithdrawal"}]},"solanaSerializedTransaction":{"description":"A serialized Solana transaction.","allOf":[{"$ref":"#/components/schemas/v2SolanaSerializedTransaction"}]},"tronTriggerSmartContract":{"description":"Deprecated: Use `tron_transaction` with `trigger_smart_contract` instead.","allOf":[{"$ref":"#/components/schemas/v2TronTriggerSmartContract"}]},"tronTransaction":{"description":"A Tron transaction.","allOf":[{"$ref":"#/components/schemas/apiv2TronTransaction"}]},"tronPersonalSign":{"description":"A Tron personal sign message.","allOf":[{"$ref":"#/components/schemas/apiv2TronPersonalSign"}]},"suiRawTransaction":{"description":"An Sui raw transaction.","allOf":[{"$ref":"#/components/schemas/v2SuiRawTransaction"}]},"xrplRawTransaction":{"description":"An XRPL raw transaction.","allOf":[{"$ref":"#/components/schemas/v2XRPLRawTransaction"}]},"stellarRawTransaction":{"description":"A Stellar raw transaction.","allOf":[{"$ref":"#/components/schemas/v2StellarRawTransaction"}]},"stellarTransaction":{"description":"A Stellar transaction.","allOf":[{"$ref":"#/components/schemas/apiv2StellarTransaction"}]},"evmUtilaDelegatedCalls":{"description":"An EVM Utila delegated calls transaction.","allOf":[{"$ref":"#/components/schemas/v2EVMUtilaDelegatedCalls"}]},"btcPsbt":{"description":"An externally-created PSBT to sign.","allOf":[{"$ref":"#/components/schemas/apiv2BTCPSBT"}]},"btcTransfer":{"description":"A transfer for Bitcoin and similar UTXO-based blockchains, with explicit input control.","allOf":[{"$ref":"#/components/schemas/v2BTCTransfer"}]}}},"v2InitiateTransactionResponse":{"type":"object","properties":{"transaction":{"description":"The created transaction.","allOf":[{"$ref":"#/components/schemas/v2Transaction"}]},"referencedResources":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2ReferencedResource"},"description":"A mapping of the referenced resources in the message.\nThe key is the resource name and the value is the corresponding resource."},"referencedAddressesInfo":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2NetworkAddressInfo"},"description":"A mapping of the referenced addresses in the message.\nThe key is the address and the value is the corresponding address info."}}},"v2KeySetupModeEnum":{"type":"string","enum":["STANDARD","DIRECT_IMPORT_FROM_FIREBLOCKS","HSM"],"description":" - STANDARD: Native Utila MPC vault (default when unspecified on create).\n - DIRECT_IMPORT_FROM_FIREBLOCKS: Direct Fireblocks recovery-kit import (keypair generated at create).\n - HSM: HSM-custody vault: wallet keys are registered from HSM public\nmaterial, never generated."},"v2LinkAddress":{"type":"object","properties":{"address":{"type":"string","title":"Blockchain address for this destination","readOnly":true},"network":{"type":"string","title":"Blockchain network for this destination","readOnly":true},"connectionId":{"type":"string","title":"Connection ID for this destination","readOnly":true},"verificationStatus":{"title":"Verification status of this destination","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2VerificationStatusEnum"}]},"signature":{"title":"Signature of the destination","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2SignedData"}]},"createTime":{"type":"string","format":"date-time","title":"Time when this destination was created","readOnly":true},"updateTime":{"type":"string","format":"date-time","title":"Time when this destination was last updated","readOnly":true},"archiveTime":{"type":"string","format":"date-time","title":"Time when this destination was archived","readOnly":true},"connectionDisplayName":{"type":"string","readOnly":true},"targetProfileDisplayName":{"type":"string","readOnly":true},"name":{"type":"string","description":"The resource name of the Link connection.\n\nFormat: `vaults/{vault}/linkConnections/{link_connection}/addresses/{link_address}`","readOnly":true}},"title":"A link address within a Link connection"},"v2ListAddressBookEntriesResponse":{"type":"object","properties":{"addressBookEntries":{"type":"array","items":{"$ref":"#/components/schemas/v2AddressBookEntry"},"description":"The list of address book entries.","readOnly":true},"nextPageToken":{"type":"string","example":"next_page_token","description":"A token, which can be sent as `page_token` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages.","readOnly":true},"totalSize":{"type":"integer","format":"int32","example":150,"description":"The total number of address book entries that match the request criteria.","readOnly":true}}},"v2ListGasStationsResponse":{"type":"object","properties":{"gasStations":{"type":"array","items":{"$ref":"#/components/schemas/v2GasStation"}},"referencedResources":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2ReferencedResource"},"description":"A mapping of the referenced resources in the message.\nThe key is the resource name and the value is the corresponding resource."},"referencedAddressesInfo":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2NetworkAddressInfo"},"description":"A mapping of the addresses information in the message.\nThe key is the address information reference and the value is the corresponding address information."}}},"v2ListNetworksResponse":{"type":"object","properties":{"networks":{"type":"array","items":{"$ref":"#/components/schemas/v2Network"},"description":"The list of networks."},"nextPageToken":{"type":"string","description":"A token, which can be sent as `pageToken` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages."}},"description":"The response message for ListNetworks."},"v2ListTransactionsResponse":{"type":"object","properties":{"transactions":{"type":"array","items":{"$ref":"#/components/schemas/v2Transaction"},"description":"The transactions returned."},"nextPageToken":{"type":"string","description":"A token, which can be sent as `pageToken` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages."},"totalSize":{"type":"integer","format":"int32","description":"Total number of items in the response, regardless of pagination."},"referencedResources":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2ReferencedResource"},"description":"A mapping of the referenced resources in the message.\nThe key is the resource name and the value is the corresponding resource."},"referencedAddressesInfo":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2NetworkAddressInfo"},"description":"A mapping of the referenced addresses in the message.\nThe key is the address and the value is the corresponding address info."}}},"v2ListVaultNetworksResponse":{"type":"object","properties":{"networks":{"type":"array","items":{"$ref":"#/components/schemas/v2Network"},"description":"The list of vault networks."},"nextPageToken":{"type":"string","description":"A token, which can be sent as `pageToken` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages."}}},"v2ListVaultsResponse":{"type":"object","properties":{"vaults":{"type":"array","items":{"$ref":"#/components/schemas/v2Vault"},"description":"The vaults returned."},"nextPageToken":{"type":"string","description":"A token, which can be sent as `pageToken` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages."},"totalSize":{"type":"integer","format":"int32","description":"Total number of items in the response, regardless of pagination."}}},"v2ListWalletAddressesResponse":{"type":"object","properties":{"walletAddresses":{"type":"array","items":{"$ref":"#/components/schemas/v2WalletAddress"},"description":"The addresses returned."},"nextPageToken":{"type":"string","description":"A token, which can be sent as `pageToken` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages."},"totalSize":{"type":"integer","format":"int32","description":"Total number of items in the response, regardless of pagination."}},"description":"The response message for ListAddresses."},"v2ListWalletsResponse":{"type":"object","properties":{"wallets":{"type":"array","items":{"$ref":"#/components/schemas/v2Wallet"},"description":"The wallets returned."},"nextPageToken":{"type":"string","description":"A token, which can be sent as `pageToken` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages."},"totalSize":{"type":"integer","format":"int32","description":"Total number of items in the response, regardless of pagination."}}},"v2Network":{"type":"object","properties":{"name":{"type":"string","example":"networks/ethereum-mainnet","description":"The resource name of the network.\n\nFormat: `networks/{network_id}`."},"displayName":{"type":"string","example":"Ethereum Mainnet","description":"A user-readable name for the network."},"caipDetails":{"description":"Chain-Agnostic Identifiers (CAIP) details for this network.\n\nSee: https://github.com/ChainAgnostic/CAIPs","allOf":[{"$ref":"#/components/schemas/NetworkCAIPDetails"}]},"testnet":{"type":"boolean","example":false,"description":"Whether this network is a testnet."},"nativeAsset":{"type":"string","example":"assets/e72ff35a5b15","description":"The native asset of this network.\n\nFormat: `assets/{asset_id}`"},"custom":{"type":"boolean","example":false,"description":"Whether this network is custom."},"status":{"$ref":"#/components/schemas/v2NetworkStatusEnum"}}},"v2NetworkAddressInfo":{"type":"object","properties":{"wallet":{"type":"string","example":"vaults/1b2563/wallets/95257","description":"If the address is a wallet address, the resource name of its wallet will be listed here.\n\nFormat: `vaults/{vault_id}/wallets/{wallet_id}`"},"walletAddress":{"type":"string","example":"vaults/1b2563/wallets/95257/addresses/3452","description":"If the address is a wallet address, the resource name will be listed here.\n\nFormat: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`"},"addressBookEntry":{"type":"string","example":"vaults/1b2563/addressBookEntries/123456","description":"Format: `vaults/{vault_id}/addressBookEntries/{addressbook_entry_id}`","title":"If the address is listed in the vault address book, the resource name of the address book entry will be listed here"},"linkAddress":{"type":"string","title":"If the address is a link address, the resource name of the link address will be listed here"}}},"v2NetworkStatusEnum":{"type":"string","enum":["ACTIVE","DISABLED","DEPRECATED"]},"v2PublishTransactionResponse":{"type":"object","properties":{"transaction":{"$ref":"#/components/schemas/v2Transaction"}}},"v2QueryBalancesResponse":{"type":"object","properties":{"balances":{"type":"array","items":{"$ref":"#/components/schemas/v2Balance"},"description":"The balances returned."},"nextPageToken":{"type":"string","description":"A token, which can be sent as `pageToken` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages."},"totalSize":{"type":"integer","format":"int32","description":"Total number of items in the response, regardless of pagination."},"referencedResources":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2ReferencedResource"},"description":"A mapping of the referenced resources in the message.\nThe key is the resource name and the value is the corresponding resource."}}},"v2QueryWalletAddressBalancesResponse":{"type":"object","properties":{"walletAddressBalances":{"type":"array","items":{"$ref":"#/components/schemas/v2WalletAddressBalance"},"description":"The balances returned."},"nextPageToken":{"type":"string","description":"A token, which can be sent as `pageToken` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages."},"totalSize":{"type":"integer","format":"int32","description":"Total number of items in the response, regardless of pagination."},"referencedResources":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2ReferencedResource"},"description":"A mapping of the referenced resources in the message.\nThe key is the resource name and the value is the corresponding resource.\n\nThis field is only populated if the `includeReferencedResources` field is set to `true`."}}},"v2QueryWalletBalancesResponse":{"type":"object","properties":{"walletBalances":{"type":"array","items":{"$ref":"#/components/schemas/v2WalletBalance"},"description":"The balances returned."},"nextPageToken":{"type":"string","description":"A token, which can be sent as `pageToken` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages."},"totalSize":{"type":"integer","format":"int32","description":"Total number of items in the response, regardless of pagination."},"referencedResources":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2ReferencedResource"},"description":"A mapping of the referenced resources in the message.\nThe key is the resource name and the value is the corresponding resource.\n\nThis field is only populated if the `includeReferencedResources` field is set to `true`."}}},"v2QueryWalletUTXOsResponse":{"type":"object","properties":{"utxos":{"type":"array","items":{"$ref":"#/components/schemas/apiv2UTXO"},"description":"The UTXOs returned."},"nextPageToken":{"type":"string","description":"A token, which can be sent as `pageToken` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages."},"totalSize":{"type":"integer","format":"int32","description":"Total number of items in the response, regardless of pagination."},"referencedResources":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2ReferencedResource"},"description":"A mapping of the referenced resources in the message.\nThe key is the resource name and the value is the corresponding resource.\n\nThis field is only populated if the `includeReferencedResources` field is set to `true`."}}},"v2ReferencedResource":{"type":"object","properties":{"asset":{"description":"The asset resource.","allOf":[{"$ref":"#/components/schemas/v2Asset"}]},"wallet":{"description":"The wallet resource.","allOf":[{"$ref":"#/components/schemas/v2Wallet"}]},"walletAddress":{"description":"The wallet address resource.","allOf":[{"$ref":"#/components/schemas/v2WalletAddress"}]},"user":{"description":"The user resource.","allOf":[{"$ref":"#/components/schemas/v2User"}]},"walletconnectSession":{"description":"The wallet connect session resource.","allOf":[{"$ref":"#/components/schemas/v2WalletconnectSession"}]},"addressBookEntry":{"description":"The addressbook entry resource.","allOf":[{"$ref":"#/components/schemas/v2AddressBookEntry"}]},"transaction":{"description":"the transaction entry resource.","allOf":[{"$ref":"#/components/schemas/v2Transaction"}]},"linkAddress":{"description":"The link address resource.","allOf":[{"$ref":"#/components/schemas/v2LinkAddress"}]}}},"v2RefreshAssetAddressBalanceResponse":{"type":"object","properties":{"balance":{"$ref":"#/components/schemas/v2Balance"},"referencedResources":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2ReferencedResource"},"description":"A mapping of the referenced resources in the message.\nThe key is the resource name and the value is the corresponding resource.\nThis field is only populated if the `includeReferencedResources` field is set to `true`."}}},"v2RefreshGasStationBalanceResponse":{"type":"object","properties":{"balance":{"type":"string","description":"The refreshed gas station balance.","readOnly":true},"balanceAsset":{"type":"string","example":"assets/native.ethereum-mainnet","description":"The asset of the refreshed balance.","readOnly":true},"referencedResources":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2ReferencedResource"},"description":"A mapping of the referenced resources in the message.\nThe key is the resource name and the value is the corresponding resource."}}},"v2ReplaceTransactionResponse":{"type":"object","properties":{"transaction":{"description":"The newly created transaction.","allOf":[{"$ref":"#/components/schemas/v2Transaction"}]},"referencedResources":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2ReferencedResource"},"description":"A mapping of the referenced resources in the message.\nThe key is the resource name and the value is the corresponding resource."},"referencedAddressesInfo":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/v2NetworkAddressInfo"},"description":"A mapping of the referenced addresses in the message.\nThe key is the address and the value is the corresponding address info."}}},"v2ScreeningStateEnum":{"type":"string","enum":["SKIPPED","PENDING","FAILED","READY"],"description":"The state of the AML report.\n\n - SKIPPED: No AML report was requested for the transaction.\n - PENDING: The AML report is still being processed by the provider.\n - FAILED: The AML report was not generated due to an error.\n - READY: The AML report was successfully generated."},"v2SignedData":{"type":"object","properties":{"type":{"description":"The type of the encoded data.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2SignedDataTypeEnum"}]},"data":{"type":"string","format":"byte","description":"The encoded data.","readOnly":true},"signature":{"type":"string","format":"byte","description":"The signature on the encoded data.","readOnly":true}},"title":"SignedData represents data that has been cryptographically signed"},"v2SignedDataTypeEnum":{"type":"string","enum":["JSON_V1","LEGACY","MERKLE_ROOT","COINCOVER_V1","STATION70_V1"],"title":"- COINCOVER_V1: Coincover signature format\n - STATION70_V1: Station70 signature format"},"v2SolanaSerializedTransaction":{"type":"object","properties":{"network":{"type":"string","example":"networks/solana-mainnet","description":"The resource name of the network of the transaction.\n\nFormat: `networks/{network_id}`."},"rawTransaction":{"type":"string","format":"byte","description":"The full transaction payload serialized.\n\nThe message and signatures, encoded in base64 format."},"publish":{"type":"boolean","description":"Set to true if you wish for Utila to automatically broadcast the transaction after it is signed. Default: true."},"replaceBlockhash":{"type":"boolean","description":"If set to true, the transaction recent blockhash will be replaced with the most recent blockhash before signing."},"tryReplaceBlockhash":{"type":"boolean","description":"If set to true, Utila will check whether the transaction can have its blockhash replaced automatically.\nThe blockhash will be replaced if the transaction does not use a durable nonce AND all signers\nof the transaction are wallets in the current vault.\nIf the conditions are met, behaves as if `replace_blockhash` was set to true."}},"required":["network","rawTransaction"]},"v2StellarMemo":{"type":"object","properties":{"type":{"description":"The type of the memo.","allOf":[{"$ref":"#/components/schemas/v2StellarMemoMemoTypeEnum"}]},"data":{"type":"string","description":"The data of the memo."}},"required":["type","data"]},"v2StellarMemoMemoTypeEnum":{"type":"string","enum":["TEXT","ID","HASH","RETURN"],"description":" - TEXT: A text memo. Limited to 28 bytes.\n - ID: A id memo. An unsigned 64-bit integer.\n - HASH: A hash memo. A hex string of the hash with a `0x` prefix.\n - RETURN: A return memo. A hex string of the return hash with a `0x` prefix."},"v2StellarRawTransaction":{"type":"object","properties":{"network":{"type":"string","example":"networks/stellar-mainnet","description":"The resource name of the network of the transaction.\n\nFormat: `networks/{network_id}`."},"sourceAddress":{"type":"string","description":"The source of the transaction.\n\nA Stellar address (example: `GAAAAAAAACGC6SEYFBKQ33QJ2FXVEP3EJ6BE2FCVW2SSP6X5TBNQYQ`).\nThe address which will publish the transaction."},"xdrEnvelope":{"type":"string","format":"byte","description":"The raw transaction envelope in XDR format."},"publish":{"type":"boolean","description":"Set to true if you wish for Utila to automatically broadcast the transaction after it is signed. Default: true."},"useLatestSequenceNumber":{"type":"boolean","description":"Set to false if you don't want Utila to update the sequence number before signing.\nIf not provided, will default to `true`."}},"required":["network","sourceAddress","xdrEnvelope"]},"v2StellarTransactionMemo":{"type":"object","properties":{"type":{"description":"The type of the memo.","allOf":[{"$ref":"#/components/schemas/v2StellarTransactionMemoTypeEnum"}]},"data":{"type":"string","description":"The data of the memo. See documentation on enum values for the exact format.\n\nSee https://developers.stellar.org/docs/learn/fundamentals/transactions/operations-and-transactions#memo for more information."}},"required":["type","data"]},"v2StellarTransactionMemoTypeEnum":{"type":"string","enum":["TEXT","ID","HASH","RETURN"],"description":" - TEXT: A text memo. Limited to 28 bytes.\n - ID: A id memo. An unsigned 64-bit integer.\n - HASH: A hash memo. A hex string of the hash with a `0x` prefix.\n - RETURN: A return memo. A hex string of the return hash with a `0x` prefix."},"v2StellarTransactionOperation":{"type":"object","properties":{"sourceAccountAddress":{"type":"string","description":"The source account address. If not provided, the top-level source account is used.\n\nA Stellar address (example: `GAAAAAAAACGC6SEYFBKQ33QJ2FXVEP3EJ6BE2FCVW2SSP6X5TBNQYQ`)."},"body":{"$ref":"#/components/schemas/OperationBody"}},"required":["body"]},"v2SuiRawTransaction":{"type":"object","properties":{"network":{"type":"string","example":"networks/ethereum-mainnet","description":"The resource name of the network of the transaction.\n\nFormat: `networks/{network_id}`."},"sender":{"type":"string","title":"The source of the transaction. A `0x`-prefixed hex string address, must be matched by a wallet address in the current vault (example: `0xde87c27b63f5c0fd615065552511431f29f5e3f62278b0166014576cd5as4b165`)"},"txBcsBytes":{"type":"string","format":"byte","description":"The Sui transaction payload serialized in BCS format."},"publish":{"type":"boolean","description":"Set to true if you wish for Utila to automatically broadcast the transaction after it is signed. Default: true."}},"required":["network","sender","txBcsBytes"]},"v2SuiTokenDetails":{"type":"object","properties":{"gasless":{"type":"boolean"}}},"v2Transaction":{"type":"object","properties":{"name":{"type":"string","example":"vaults/1b25635a5b3f/transactions/95257c5a522f","description":"The resource name of the transaction.\n\nFormat: `vaults/{vault_id}/transactions/{transaction_id}`.","readOnly":true},"type":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2TransactionTypeEnum"}]},"subType":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2TransactionSubTypeEnum"}]},"state":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2TransactionStateEnum"}]},"error":{"description":"The latest error for this transaction, if any.\n\nWhich error is surfaced depends on the transaction's current state.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/googlerpcStatus"}]},"direction":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2TransactionDirectionEnum"}]},"note":{"type":"string","description":"A note to attach to the transaction.\n\nThis note is visible to all vault members."},"network":{"type":"string","example":"networks/ethereum-mainnet","description":"The blockchain network on which the transaction was sent.\n\nNot available for connection transactions (e.g., Exchanges)\n\nFormat: `networks/{network_id}`"},"hash":{"type":"string","description":"For on-chain transactions, the hash of the transaction."},"blockNumber":{"type":"string","description":"For on-chain transactions, the block number of the transaction if it was mined."},"signingSession":{"type":"string","example":"vaults/2d2e40r3/signingSessions/132e40r3","description":"Available when the transaction has been prepared for signing / signed."},"request":{"description":"The request details of the transaction. Relevant only for transactions initiated through Utila.","allOf":[{"$ref":"#/components/schemas/v2TransactionRequest"}]},"amlDetails":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/TransactionAMLDetails"}]},"transfers":{"type":"array","items":{"$ref":"#/components/schemas/TransactionTransfer"},"description":"If there one or more transfers in the transaction, they will be listed here."},"tokenAllowances":{"type":"array","items":{"$ref":"#/components/schemas/TransactionTokenAllowance"},"description":"If there one or more token allowances in the transaction, they will be listed here."},"designatedSigners":{"type":"array","example":["users/name@example.com"],"items":{"type":"string"},"description":"If the transaction is designated to be signed by a specific signer, this field should be set.\n\nFormat: `users/{email}` or `users/{id}`\n\nExample: `[\"users/name@example.com\"]` or `[\"users/a3e4f5\"]`"},"allowedSigners":{"type":"array","example":["users/name@example.com"],"items":{"type":"string"},"description":"The policy-derived users who are allowed to sign the transaction.\n\nUnlike `designated_signers`, this field describes signing eligibility.\n\nFormat: `users/{email}` or `users/{id}`","readOnly":true},"evmTransaction":{"description":"For EVM-Compatible transaction: Low level transaction details.","allOf":[{"$ref":"#/components/schemas/v2TransactionEVMTransaction"}]},"evmMessage":{"description":"If this is an EVM message, the message will be listed here.","allOf":[{"$ref":"#/components/schemas/TransactionEVMMessage"}]},"tronPersonalSign":{"description":"If this is a Tron personal-sign message, the message will be listed here.","allOf":[{"$ref":"#/components/schemas/v2TransactionTronPersonalSign"}]},"evmAccountDelegation":{"description":"If this is an EVM authorization, the authorization will be listed here.","allOf":[{"$ref":"#/components/schemas/v2TransactionEVMAccountDelegation"}]},"tronTransaction":{"description":"If this is a TVM transaction, the transaction will be listed here.","allOf":[{"$ref":"#/components/schemas/v2TransactionTronTransaction"}]},"btcTransaction":{"description":"For BTC transaction: Low level transaction details.","allOf":[{"$ref":"#/components/schemas/TransactionBTCTransaction"}]},"btcPsbt":{"description":"For BTC PSBT: Details of the PSBT transaction.","allOf":[{"$ref":"#/components/schemas/v2TransactionBTCPSBT"}]},"aptosTransaction":{"description":"For APTOS transaction: Low level transaction details.","allOf":[{"$ref":"#/components/schemas/TransactionAptosTransaction"}]},"suiTransaction":{"description":"For SUI transaction: Low level transaction details.","allOf":[{"$ref":"#/components/schemas/TransactionSuiTransaction"}]},"suiSignPersonalMessage":{"description":"Represents a Sui signPersonalMessage message.","allOf":[{"$ref":"#/components/schemas/v2TransactionSuiSignPersonalMessage"}]},"xrplTransaction":{"description":"For XRPL transaction: Low level transaction details.","allOf":[{"$ref":"#/components/schemas/TransactionXRPLTransaction"}]},"substrateTransaction":{"$ref":"#/components/schemas/TransactionSubstrateTransaction"},"tonTransaction":{"description":"For TON transaction: Low level transaction details.","allOf":[{"$ref":"#/components/schemas/TransactionTonTransaction"}]},"tonSignData":{"description":"Represents a TON SignData message.","allOf":[{"$ref":"#/components/schemas/v2TransactionTonSignData"}]},"tonProof":{"description":"Represents a TON Proof message.","allOf":[{"$ref":"#/components/schemas/v2TransactionTonProof"}]},"solanaSignMessage":{"description":"Represents a Solana signMessage message.","allOf":[{"$ref":"#/components/schemas/v2TransactionSolanaSignMessage"}]},"solanaTransaction":{"description":"For Solana transaction: Low level transaction details.","allOf":[{"$ref":"#/components/schemas/v2TransactionSolanaTransaction"}]},"thetaTransaction":{"description":"For Theta transaction: Low level transaction details.","allOf":[{"$ref":"#/components/schemas/TransactionThetaTransaction"}]},"stellarTransaction":{"description":"Represents a Stellar transaction.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2TransactionStellarTransaction"}]},"aleoTransaction":{"description":"Represents an Aleo transaction.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/TransactionAleoTransaction"}]},"createTime":{"type":"string","format":"date-time","description":"The time at which the transaction was created in the system.","readOnly":true},"mineTime":{"type":"string","format":"date-time","description":"The time at which the transaction was mined.","readOnly":true},"confirmTime":{"type":"string","format":"date-time","description":"The time at which the transaction was confirmed.","readOnly":true},"expireTime":{"type":"string","format":"date-time","description":"The time at which the transaction was expired.","readOnly":true},"spam":{"type":"boolean"},"annotations":{"type":"object","additionalProperties":{"type":"string"},"description":"Client-defined key/value metadata attached at initiation via\nInitiateTransactionRequest.annotations.\n\nStored but never interpreted by Utila, and visible read-only to every party\nwho can view the transaction. Avoid storing secrets or sensitive data here.","readOnly":true},"replacementTransaction":{"type":"string","description":"If the current transaction is dropped, the transaction that replaced it will be listed here.","readOnly":true}}},"v2TransactionAMLScreening":{"type":"object","properties":{"provider":{"$ref":"#/components/schemas/TransactionAMLScreeningProviderEnum"},"rawResponses":{"type":"array","items":{"type":"string"}}}},"v2TransactionBTCPSBT":{"type":"object","properties":{"signedPsbt":{"type":"string","format":"byte","description":"The signed PSBT data, encoded in base64 format per BIP-174.\n\nOnly populated after the transaction reaches the SIGNED state.\nContains partial signatures that the dApp can use to finalize and broadcast."},"inputs":{"type":"array","items":{"$ref":"#/components/schemas/BTCTransactionUTXOIn"},"description":"The PSBT inputs (for display in approval UI).\n\nReuses the existing BTCTransaction.UTXOIn type for consistency."},"outputs":{"type":"array","items":{"$ref":"#/components/schemas/BTCTransactionUTXOOut"},"description":"The PSBT outputs (for display in approval UI).\n\nReuses the existing BTCTransaction.UTXOOut type for consistency."},"fee":{"type":"string","description":"The transaction fee in BTC.\n\nCalculated from: sum(inputs) - sum(outputs)."}},"description":"Details of a signed PSBT (Partially Signed Bitcoin Transaction).\n\nReturned when a PSBT signing request reaches the SIGNED state.\nThe signed PSBT can be used by the dApp to finalize and broadcast."},"v2TransactionDirectionEnum":{"type":"string","enum":["INCOMING","OUTGOING"]},"v2TransactionEVMAccountDelegation":{"type":"object","properties":{"signerAddress":{"description":"The address of the signer.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"contractAddress":{"description":"The address of the contract the account is delegating to.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"chainId":{"type":"string","description":"The chain ID of the DELEGATION."},"nonce":{"type":"string","format":"int64","description":"The nonce of the account for the delegation."},"signature":{"type":"string","format":"byte","description":"ECDSA signature (65 bytes) of the delegation message."},"offsetNonce":{"type":"boolean","description":"Whether the selection nonce strategy is to offset the signer nonce by one.\n\nThis is used usually for self delegation"},"providedNonce":{"type":"string","format":"int64","description":"The nonce provided by the user."}}},"v2TransactionEVMTransaction":{"type":"object","properties":{"fromAddress":{"description":"The source of the transfer. A `0x`-prefixed hex string address.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"toAddress":{"description":"The destination of the transfer. A `0x`-prefixed hex string address.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"value":{"type":"string","description":"The amount to transfer in wei."},"data":{"type":"string","example":"0xda82fb4c00000a","description":"Hex encoded transaction data.\n\nExample: `0xda82fb4c00000a` or `da82fb4c00000a`."},"fee":{"description":"The fee details of the transaction.","allOf":[{"$ref":"#/components/schemas/v2EVMTransactionGas"}]},"authorizationDetails":{"description":"EIP-7702 Authorization details.","allOf":[{"$ref":"#/components/schemas/v2TransactionEVMTransactionAuthorizationDetails"}]},"signature":{"type":"string","format":"byte","description":"ECDSA signature (65 bytes) of the transaction.\n\nAvailable when the transaction has been signed.\n\nEncoded in standard EVM format:\n  - Bytes [0-31]: R component (32 bytes, big-endian)\n  - Bytes [32-63]: S component (32 bytes, big-endian)\n  - Byte [64]: V component (recovery identifier)","readOnly":true},"providedNonce":{"type":"string","description":"The nonce value explicitly provided by the user in the transaction request.","readOnly":true},"nonce":{"type":"string","description":"The effective nonce value assigned to the transaction.","readOnly":true},"chainId":{"type":"string","description":"The EIP-155 chain ID of the network this transaction targets.\n\nDecimal string (e.g. `1`, `11155111`).","readOnly":true}}},"v2TransactionEVMTransactionAuthorization":{"type":"object","properties":{"signer":{"description":"The signer address.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"contractAddress":{"description":"The address of the contract the account is delegating to.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"nonce":{"type":"string","format":"int64","description":"The nonce of the account for the delegation."},"chainId":{"type":"string","description":"The chain ID of the delegation."},"signature":{"type":"string","format":"byte","description":"The signature of the delegation."}}},"v2TransactionEVMTransactionAuthorizationDetails":{"type":"object","properties":{"authorizationList":{"type":"array","items":{"$ref":"#/components/schemas/v2TransactionEVMTransactionAuthorization"},"description":"The list of authorizations."}}},"v2TransactionPriorityEnum":{"type":"string","enum":["LOW","NORMAL","HIGH"],"description":"Generic priority enum for transactions.\nTranslates to network specific priority values.\n\n - LOW: Low priority.\n - NORMAL: Normal priority. The default value.\n - HIGH: High priority."},"v2TransactionReplacementTypeEnum":{"type":"string","enum":["CANCEL","ACCELERATE"],"description":"The type of the replacement.\n\n - CANCEL: Cancel the transaction.\n - ACCELERATE: Accelerate the transaction."},"v2TransactionRequest":{"type":"object","properties":{"name":{"type":"string","example":"vaults/1b25635a5b3f/transactionRequests/95257c5a522f","description":"The resource name of the transaction request.\n\nFormat: `vaults/{vault_id}/transactionRequests/{transaction_request_id}`.","readOnly":true},"externalId":{"type":"string","description":"A client-provided identifier for the transaction.\n\nUnique per vault. Can be used to correlate the transaction\nwith an entity in an external system.","readOnly":true},"initiator":{"type":"string","example":"users/2d2e40r3","description":"The initiator of the transaction.\n\nFormat: `users/{user}`"},"sourceWallet":{"type":"string","example":"wallets/2d2e40r3","description":"If the transaction was initiated through a wallet, the wallet will be listed here.","x-protoOneof":"source"},"cancelTime":{"type":"string","format":"date-time","description":"The timestamp when the transaction was canceled."},"signTime":{"type":"string","format":"date-time","description":"The timestamp when the transaction was signed."},"failTime":{"type":"string","format":"date-time","description":"The timestamp when the transaction failed."},"declineTime":{"type":"string","format":"date-time","description":"The timestamp when the transaction was declined."},"publishTime":{"type":"string","format":"date-time","description":"The timestamp when the transaction was published."},"dropTime":{"type":"string","format":"date-time","description":"The timestamp when the transaction was dropped."},"expireTime":{"type":"string","format":"date-time","description":"The timestamp when the transaction expires.","readOnly":true},"approveTime":{"type":"string","format":"date-time","description":"The timestamp when the transaction was approved."},"publish":{"type":"boolean","description":"Whether the transaction should be automatically published by utila."},"signingSessions":{"type":"array","example":"vaults/2d2e40r3/signingSessions/132e40r3","items":{"type":"string"},"description":"The signing sessions that were used to sign the transaction."},"blockingTransaction":{"type":"string","description":"A transaction that is blocking this transaction from being signed.\nFor example, a transaction from the same wallet and blockchain that has acquired a nonce but is not yet mined.\n\nIncluded only when `FULL` view is requested.","readOnly":true},"walletconnectSession":{"type":"string","description":"The wallet connect session that was used to sign the transaction.","readOnly":true},"transactionBundle":{"type":"string","description":"The transaction bundle that this transaction belongs to.","readOnly":true},"evmSubmissionDetails":{"type":"string","description":"The EVM submission that this transaction is part of.\n\nA submission groups the transactions that are broadcast together as a single\ngas-abstracted (sponsored) EVM submission — for example the EIP-7702\nauthorization and the user-operation transactions signed by the user. It is\nonly set for transactions that belong to such a submission.\n\nCall `Transactions.GetEVMSubmissionDetails` with this resource name to fetch\nthe full submission details.\n\nFormat: `vaults/{vault_id}/evmSubmissionDetails/{submission_id}`","readOnly":true},"dappInfo":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/TransactionRequestDappInfo"}]},"origin":{"readOnly":true,"allOf":[{"$ref":"#/components/schemas/TransactionRequestOriginEnum"}]},"gasStationOrder":{"type":"string","example":"vaults/1b2563/gasStations/a4b3df/orders/123456","description":"The gas station order created to sponsor this transaction request, if any.\n\nFormat: `vaults/{vault_id}/gasStations/{gas_station_id}/orders/{order_id}`.","readOnly":true},"gasStation":{"type":"string","example":"vaults/1b2563/gasStations/a4b3df","description":"The gas station that sponsors this transaction request, if any.\n\nFormat: `vaults/{vault_id}/gasStations/{gas_station_id}`.","readOnly":true},"sponsorWallet":{"type":"string","example":"vaults/2d2e40r3/wallets/2d2e40r3","description":"The sponsor wallet for sponsored transactions (e.g., EVM, Solana).\nOnly populated when the sponsor is a Utila-managed wallet in the vault.\n\nFormat: `vaults/{vault_id}/wallets/{wallet_id}`","readOnly":true}}},"v2TransactionSimulation":{"type":"object","properties":{"name":{"type":"string","example":"vaults/1b25635a5b3f/transactions/95257c5a522f","description":"The resource name of the transaction simulation.\n\nFormat: `vaults/{vault_id}/transactionSimulations/{simulation_id}`.","readOnly":true},"addressBalanceChanges":{"type":"array","items":{"$ref":"#/components/schemas/v2AddressBalanceChanges"},"description":"The balance changes that would occur if the transaction will be executed."},"simulationTime":{"type":"string","format":"date-time","description":"The time at which the simulation was run."},"error":{"description":"If the simulation failed, the error will be listed here.","allOf":[{"$ref":"#/components/schemas/googlerpcStatus"}]}}},"v2TransactionSolanaSignMessage":{"type":"object","properties":{"signer":{"description":"The address of the signer.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"message":{"type":"string","format":"byte","description":"The message to sign."},"signature":{"type":"string","description":"The signature of the message."}}},"v2TransactionSolanaTransaction":{"type":"object","properties":{"fee":{"type":"string","description":"Transaction fee in lamports."},"rawTransaction":{"type":"string","format":"byte","description":"The full transaction payload, serialized.\n\nThe message and signatures, encoded in base64 format."},"utilaSigners":{"type":"array","items":{"$ref":"#/components/schemas/apiv2Address"},"description":"The utila addresses used to sign the transaction.\n\nMust be the same length as request.signing_sessions."},"replaceBlockhash":{"type":"boolean","description":"Indicates whether the recent blockhash was or will be replaced with the most recent blockhash before signing."},"memo":{"type":"string","description":"The on-chain memo attached to the transfer via the Memo program, if any."}}},"v2TransactionStateEnum":{"type":"string","enum":["AWAITING_APPROVAL","AWAITING_AML_POLICY_CHECK","DECLINED_BY_AML_POLICY","AWAITING_POLICY_CHECK","AWAITING_SIGNATURE","SIGNED","AWAITING_PUBLISH","PUBLISHED","MINED","MINED_FAILED","FAILED","DECLINED","REPLACED","CANCELED","DROPPED","CONFIRMED","EXPIRED"],"description":"The state of the transaction.\n\n - AWAITING_APPROVAL: Transaction requires approving votes.\n - AWAITING_AML_POLICY_CHECK: The transaction is waiting for the AML policy check to be completed.\nRelevant only for outgoing transactions.\n - DECLINED_BY_AML_POLICY: Transaction was declined by the AML policy Relevant only for outgoing transactions.\n - AWAITING_POLICY_CHECK: Transaction is waiting for the policy check to be completed.\n - AWAITING_SIGNATURE: Transaction is approved and ready to be signed.\n - SIGNED: Transaction is signed but not yet published.\n - AWAITING_PUBLISH: Transaction has been sent to the publishing queue.\n - PUBLISHED: Transaction has been published to the blockchain's mem-pool.\n - MINED: Transaction has been included in a block successfully.\n - MINED_FAILED: Transaction has entered a block but in a failed state (e.g. a failed smart contract call).\n - FAILED: Transaction has entered a block but in a failed state and was confirmed as such by multiple blocks\n - DECLINED: Transaction was declined by a policy check.\n - REPLACED: Transaction was replaced by a new transaction (same nonce or RBF).\n - CANCELED: Transaction was canceled by its initiator or by an admin.\n - DROPPED: Transaction was dropped by the network without being included in a block.\n - CONFIRMED: Transaction has been confirmed by multiple blocks in the blockchain.\n - EXPIRED: Transaction was expired after a certain amount of time."},"v2TransactionStellarTransaction":{"type":"object","properties":{"sourceAccountAddress":{"description":"The source account of the transaction.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"sequenceNumber":{"type":"string","description":"The sequence number of the transaction.","readOnly":true},"fee":{"type":"string","format":"int64","description":"The fee paid for the transaction in stroops.","readOnly":true},"memo":{"description":"The memo attached to the transaction.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2StellarMemo"}]},"timeBounds":{"description":"The timebounds of the transaction.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/TransactionStellarTransactionStellarTimeBounds"}]},"operations":{"type":"array","items":{"$ref":"#/components/schemas/StellarTransactionStellarOperation"},"description":"The operations in the transaction supported by utila.","readOnly":true},"rawXdrEnvelope":{"type":"string","format":"byte","title":"The raw transaction payload"}}},"v2TransactionSubTypeEnum":{"type":"string","enum":["NATIVE_TRANSFER","TOKEN_TRANSFER","NON_FUNGIBLE_TOKEN_TRANSFER","TOKEN_APPROVAL","PERSONAL_SIGN","SIGN_TYPED_DATA","EVM_ACCOUNT_DELEGATION","CONTRACT_CALL","NATIVE_MULTI_TRANSFER","NON_FUNGIBLE_TOKEN_APPROVAL","CONNECTION_TRANSFER","BATCH_TRANSFER","TOKEN_MINT","TOKEN_BURN","PROGRAM_CALL","CONTRACT_DEPLOYMENT","TON_PROOF","TON_SIGN_DATA","SOLANA_SIGN_MESSAGE","GENERIC_TRANSACTION","CHANGE_TRUST","CANTON_TOPOLOGY_TRANSACTION","CANTON_TRANSFER_AUTO_APPROVAL","CANTON_ACCEPT_TRANSFER_OFFER","SUBMITTING_TRANSACTION","BTC_PSBT","BTC_TRANSFER","BTC_SIGN_MESSAGE","SHIELD","UNSHIELD","ALEO_CONSOLIDATE"]},"v2TransactionSuiSignPersonalMessage":{"type":"object","properties":{"signer":{"description":"The address of the signer.","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"message":{"type":"string","format":"byte","description":"The message to sign."},"signature":{"type":"string","format":"byte","description":"The signature of the message."}}},"v2TransactionTonProof":{"type":"object","properties":{"address":{"type":"string","description":"The address of the signer.\nIn Raw address format.\n\nExample: `0:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef`."},"appDomain":{"type":"string","title":"The domain of the app requested the proof"},"payload":{"type":"string","description":"The payload to sign."},"timestamp":{"type":"string","format":"int64","description":"The time at which the signature was created."},"signature":{"type":"string","description":"The signature of the payload."}}},"v2TransactionTonSignData":{"type":"object","properties":{"schemaCrc":{"type":"string","format":"int64","description":"Indicates the layout of payload cell that in turn defines domain separation.\nThis is a descriptor of the content of the cell."},"cell":{"type":"string","description":"The payload to sign."},"publicKey":{"type":"string","description":"The public key of the signer."},"timestamp":{"type":"string","format":"int64","description":"The time at which the signature was created."},"signature":{"type":"string","description":"The signature of the typed data."}}},"v2TransactionTronPersonalSign":{"type":"object","properties":{"message":{"type":"string","description":"Best-effort human-readable payload: set only when the signed bytes are\nvalid UTF-8. Empty for binary messages. Use `message_hex` for the exact,\nunambiguous bytes."},"signature":{"type":"string","format":"byte","description":"ECDSA signature (65 bytes) of the message."},"messageHex":{"type":"string","description":"The exact signed payload as a hex string (e.g. \"0xabcd\"). Always set. This\nis authoritative; `message` is only a display convenience and cannot be\nused to recover the bytes unambiguously."}},"description":"A Tron (TIP-191) personal-sign message. Distinct from EVMMessage so a Tron\npersonal sign is not represented as an EVM message."},"v2TransactionTronTransaction":{"type":"object","properties":{"triggerSmartContract":{"$ref":"#/components/schemas/v2TransactionTronTransactionTriggerSmartContract"},"freezeBalanceV2":{"$ref":"#/components/schemas/v2TransactionTronTransactionFreezeBalanceV2"},"unfreezeBalanceV2":{"$ref":"#/components/schemas/v2TransactionTronTransactionUnfreezeBalanceV2"},"withdrawExpireUnfreeze":{"$ref":"#/components/schemas/v2TransactionTronTransactionWithdrawExpireUnfreeze"},"delegateResource":{"$ref":"#/components/schemas/v2TransactionTronTransactionDelegateResource"},"undelegateResource":{"$ref":"#/components/schemas/v2TransactionTronTransactionUnDelegateResource"},"cancelAllUnfreezeV2":{"$ref":"#/components/schemas/v2TransactionTronTransactionCancelAllUnfreezeV2"},"voteWitness":{"$ref":"#/components/schemas/v2TransactionTronTransactionVoteWitness"},"withdrawBalance":{"$ref":"#/components/schemas/v2TransactionTronTransactionWithdrawBalance"},"transferContract":{"$ref":"#/components/schemas/TronTransactionTransferContract"},"fee":{"description":"The fee details of the transaction.","allOf":[{"$ref":"#/components/schemas/v2TronTransactionFee"}]},"signature":{"type":"string","format":"byte","description":"ECDSA signature (65 bytes) of the transaction.\n\nAvailable when the transaction has been signed.\n\nEncoded in standard TRON format:\n  - Bytes [0-31]: R component (32 bytes, big-endian)\n  - Bytes [32-63]: S component (32 bytes, big-endian)\n  - Byte [64]: V component (recovery identifier)","readOnly":true},"expireTime":{"type":"string","format":"date-time","description":"When the signed transaction expires on the TRON network (raw_data.expiration).\nEmpty until the transaction is prepared for signature, or until raw data\nalready includes expiration (user-supplied raw txs).","readOnly":true}}},"v2TransactionTronTransactionCancelAllUnfreezeV2":{"type":"object","properties":{"ownerAddress":{"description":"The source of the transaction.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]}}},"v2TransactionTronTransactionDelegateResource":{"type":"object","properties":{"ownerAddress":{"description":"The source of the transaction.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"resource":{"description":"The resource to delegate.\n\nCan be one of the following:\n1. `BANDWIDTH`\n2. `ENERGY`","allOf":[{"$ref":"#/components/schemas/v2TransactionTronTransactionTronResourceEnum"}]},"amount":{"type":"string","example":"1500000","description":"The amount of the resource to delegate, in SUN.\n\nExample: `1500000`."},"asset":{"type":"string","example":"assets/native.tron-mainnet","description":"The asset that is being delegated.\n\nExample: `assets/native.tron-mainnet`."},"receiverAddress":{"description":"The address to delegate the resource to.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"lock":{"type":"boolean","description":"Whether to lock the delegation.\n\nDefault: false."},"lockPeriod":{"type":"string","description":"The period to lock the delegation, in block numbers, 1 block ≈ 3 seconds.\n\nExample: `1000`."}}},"v2TransactionTronTransactionFreezeBalanceV2":{"type":"object","properties":{"ownerAddress":{"description":"The source of the transaction.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"amount":{"type":"string","example":"1500000","description":"Amount of TRX to be staked, in SUN.\n\nExample: `1500000`."},"resource":{"description":"The resource to freeze.\n\nCan be one of the following:\n1. `BANDWIDTH`\n2. `ENERGY`","allOf":[{"$ref":"#/components/schemas/v2TransactionTronTransactionTronResourceEnum"}]},"asset":{"type":"string","example":"assets/native.tron-mainnet","description":"The asset that is being staked.\n\nExample: `assets/native.tron-mainnet`."}}},"v2TransactionTronTransactionTriggerSmartContract":{"type":"object","properties":{"ownerAddress":{"description":"The source of the transaction.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"contractAddress":{"description":"The smart contract address.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"callValue":{"type":"string","format":"int64","description":"The amount of SUN passed into the contract (1 TRX = 1,000,000 SUN).\n\nExample: `500000`."},"data":{"type":"string","description":"Hex encoded transaction data. This field will be returned only in FULL view.\n\nExample: `0xa9059cbb0000000000000000000000002ed5dd8a98aea00ae32517742ea5289761b2710e0000000000000000000000000000000000000000000000000000000ba43b7400`."}}},"v2TransactionTronTransactionTronResourceEnum":{"type":"string","enum":["BANDWIDTH","ENERGY"]},"v2TransactionTronTransactionUnDelegateResource":{"type":"object","properties":{"ownerAddress":{"description":"The source of the transaction.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"resource":{"description":"The resource to undelegate.\n\nCan be one of the following:\n1. `BANDWIDTH`\n2. `ENERGY`","allOf":[{"$ref":"#/components/schemas/v2TransactionTronTransactionTronResourceEnum"}]},"amount":{"type":"string","example":"1500000","description":"The amount of the delegated resource to undelegate, in SUN.\n\nExample: `1500000`."},"asset":{"type":"string","example":"assets/native.tron-mainnet","description":"The asset that is being undelegated.\n\nExample: `assets/native.tron-mainnet`."},"receiverAddress":{"description":"The address to undelegate the resource from.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]}}},"v2TransactionTronTransactionUnfreezeBalanceV2":{"type":"object","properties":{"ownerAddress":{"description":"The source of the transaction.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"amount":{"type":"string","example":"1500000","description":"Amount of TRX to be unstaked, in SUN.\n\nExample: `1500000`."},"resource":{"description":"The resource to unfreeze.\n\nCan be one of the following:\n1. `BANDWIDTH`\n2. `ENERGY`","allOf":[{"$ref":"#/components/schemas/v2TransactionTronTransactionTronResourceEnum"}]},"asset":{"type":"string","example":"assets/native.tron-mainnet","description":"The asset that is being unstaked.\n\nExample: `assets/native.tron-mainnet`."}}},"v2TransactionTronTransactionVoteWitness":{"type":"object","properties":{"ownerAddress":{"description":"Voter address.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"votes":{"type":"array","items":{"$ref":"#/components/schemas/v2TransactionTronTransactionVoteWitnessVote"},"description":"The votes to cast. Max 30 votes.\n\nExample: `[{\"vote_address\": \"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\", \"vote_count\": \"1000\"}]`"}},"required":["votes"]},"v2TransactionTronTransactionVoteWitnessVote":{"type":"object","properties":{"voteAddress":{"description":"The address of Super Representatives to vote for.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]},"voteCount":{"type":"string","description":"Example: `1000`.","title":"Number of votes, (1 vote = 1 staked TRX)"}}},"v2TransactionTronTransactionWithdrawBalance":{"type":"object","properties":{"ownerAddress":{"description":"The source of the transaction.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]}}},"v2TransactionTronTransactionWithdrawExpireUnfreeze":{"type":"object","properties":{"ownerAddress":{"description":"The source of the transaction.\n\nA base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)","allOf":[{"$ref":"#/components/schemas/apiv2Address"}]}}},"v2TransactionTypeEnum":{"type":"string","enum":["TRANSACTION","MESSAGE"]},"v2TransactionView":{"type":"string","enum":["BASIC","FULL"],"description":" - BASIC: The default view. Does not include certain fields such as blocking transactions.\n - FULL: Full view, include all fields."},"v2TronAccountActivationFee":{"type":"object","properties":{"fee":{"type":"string","description":"The activation fee in SUN."},"convertedFee":{"description":"The converted (fiat) value of the activation fee.","allOf":[{"$ref":"#/components/schemas/v2ConvertedValue"}]}}},"v2TronFeeEstimation":{"type":"object","properties":{"bandwidthUsed":{"type":"string","description":"The bandwidth to be used by the transaction out of available account bandwidth."},"energyUsed":{"type":"string","description":"The energy to be used by the transaction out of available account energy."},"totalSunUsed":{"type":"string","description":"The estimated total sun to be burned by the transaction, including energy."},"bandwidth":{"description":"Bandwidth resource fee breakdown.","allOf":[{"$ref":"#/components/schemas/v2TronResourceFee"}]},"energy":{"description":"Energy resource fee breakdown.","allOf":[{"$ref":"#/components/schemas/v2TronResourceFee"}]},"accountActivationFee":{"description":"Account activation fee, present when the transaction activates a new account.","allOf":[{"$ref":"#/components/schemas/v2TronAccountActivationFee"}]}}},"v2TronResourceFee":{"type":"object","properties":{"consumed":{"type":"string","description":"The amount of the resource consumed."},"burned":{"type":"string","description":"The amount of TRX burned for this resource."},"convertedBurned":{"description":"The converted (fiat) value of the TRX burned for this resource.","allOf":[{"$ref":"#/components/schemas/v2ConvertedValue"}]}},"description":"Resource-level fee breakdown for a Tron resource (bandwidth or energy)."},"v2TronTransactionFee":{"type":"object","properties":{"usedSun":{"type":"string","description":"The amount of sun used by the transaction."},"convertedValue":{"description":"The converted amount of sun used by the transaction.","allOf":[{"$ref":"#/components/schemas/v2ConvertedValue"}]},"bandwidth":{"description":"Bandwidth resource fee breakdown.","allOf":[{"$ref":"#/components/schemas/v2TronResourceFee"}]},"energy":{"description":"Energy resource fee breakdown.","allOf":[{"$ref":"#/components/schemas/v2TronResourceFee"}]},"accountActivationFee":{"description":"Account activation fee, present when the transaction activates a new account.","allOf":[{"$ref":"#/components/schemas/v2TronAccountActivationFee"}]}}},"v2TronTriggerSmartContract":{"type":"object","properties":{"network":{"type":"string","example":"networks/tron-mainnet","description":"The resource name of the network of the transaction.\n\nFormat: `networks/{network_id}`."},"ownerAddress":{"type":"string","description":"The source of the transaction.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"},"contractAddress":{"type":"string","description":"The smart contract to trigger.\n\nCan be one of the following:\n1. A hex string address, must start with 41 (example: `418840E6C55B9ADA326D211D818C34A994AECED808`)\n2. A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)"},"callValue":{"type":"string","format":"int64","description":"The amount of SUN passed into the contract (1 TRX = 1,000,000 SUN).\n\nExample: `500000`."},"data":{"type":"string","example":"a9059cbb0000000000000000000000002ed5dd8a98aea00ae32517742ea5289761b2710e0000000000000000000000000000000000000000000000000000000ba43b7400","description":"Hex encoded transaction data.\n\nExample: `a9059cbb0000000000000000000000002ed5dd8a98aea00ae32517742ea5289761b2710e0000000000000000000000000000000000000000000000000000000ba43b7400`."}},"required":["network","ownerAddress","contractAddress"]},"v2UTXOState":{"type":"string","enum":["AVAILABLE","LOCKED","FROZEN"],"description":" - AVAILABLE: The UTXO is available for spending.\n - LOCKED: The UTXO is locked by a pending transaction.\n - FROZEN: The UTXO is frozen due to compliance reasons and cannot be spent."},"v2User":{"type":"object","properties":{"name":{"type":"string","title":"Resource name of the user in the format \"users/{user_id}\"","readOnly":true},"fullname":{"type":"string","title":"The user's full name"},"email":{"type":"string","title":"The user's email address"},"pictureUri":{"type":"string","title":"URL to the user's profile picture"},"type":{"title":"The user's type (regular user or service account)","allOf":[{"$ref":"#/components/schemas/apiUserTypeEnum"}]},"vaultContext":{"title":"The user's vault context (if applicable)","allOf":[{"$ref":"#/components/schemas/apiv2VaultContext"}]}},"title":"User resource represents a user in the Utila platform","required":["email"]},"v2Vault":{"type":"object","properties":{"name":{"type":"string","example":"vaults/95257c5a522f","description":"The resource name of the vault.\n\nFormat: `vaults/{vault_id}`","readOnly":true},"displayName":{"type":"string","example":"Fund VI","description":"A human-readable name.\n\nMust match the regular expression `[a-zA-Z0-9\\.,:\\-'# _$]+$` and be shorter than 100 characters"},"archived":{"type":"boolean","description":"Whether this vault is archived.\n\nArchived vaults are not returned by default in `ListVaults` and are not shown in the UI.","readOnly":true},"createTime":{"type":"string","format":"date-time","description":"Creation timestamp.","readOnly":true},"keySetupMode":{"description":"How vault keys are set up / imported.","allOf":[{"$ref":"#/components/schemas/v2KeySetupModeEnum"}]}},"required":["displayName"]},"v2VaultAction":{"type":"object","properties":{"name":{"type":"string","description":"The resource name of the vault action.\n\nFormat: `vaults/{vault_id}/actions/{action_id}`","readOnly":true},"status":{"description":"The current status of the vault action.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2VaultActionStatusEnum"}]},"createTime":{"type":"string","format":"date-time","description":"Creation timestamp.","readOnly":true},"expireTime":{"type":"string","format":"date-time","description":"Expiration timestamp.","readOnly":true}}},"v2VaultActionStatusEnum":{"type":"string","enum":["PENDING","REJECTED","AWAITING_SIGNATURE","RUNNING","FINISHED","FAILED","CANCELED","EXPIRED"]},"v2VerificationStatusEnum":{"type":"string","enum":["VERIFIED","PENDING"],"description":"- VERIFIED: Address is verified\n - PENDING: Address is pending verification","title":"Verification status enum values"},"v2VoteOnTransactionRequestRequestVote":{"type":"string","enum":["APPROVE","DENY"],"description":"The vote to cast on the transaction request."},"v2VoteOnTransactionRequestResponse":{"type":"object","properties":{"transactionState":{"$ref":"#/components/schemas/v2TransactionStateEnum"}}},"v2Wallet":{"type":"object","properties":{"name":{"type":"string","example":"vaults/1b25635a5b3f/wallets/95257c5a522f","description":"The resource name of the wallet.\n\nFormat: `vaults/{vault_id}/wallets/{wallet_id}`","readOnly":true},"displayName":{"type":"string","example":"DeFi wallet","description":"A human-readable name.\n\nMust match the regular expression `[a-zA-Z0-9\\.,:\\-'# _$]+$` and be shorter than 100 characters"},"external":{"type":"boolean","description":"Whether this wallet is external.\n\nExternal wallets are wallets that are not managed by Utila.","readOnly":true},"archived":{"type":"boolean","description":"Whether this wallet is archived.","readOnly":true},"convertedValue":{"description":"The converted value of all assets in this Wallet.\nIncluded only when `FULL` view is requested.\n\nNote: this is an estimate, and may be out of date.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2ConvertedValue"}]},"hasFrozenAssets":{"type":"boolean","example":true,"description":"Some of the assets in this wallet are frozen due to a AML policy.\nIncluded only when `FULL` view is requested.","readOnly":true},"networks":{"type":"array","example":["networks/ethereum-mainnet"],"items":{"type":"string"},"description":"The resource names of the networks of the wallet. Can be set during creation and can be added later\nthrough the `CreateWalletAddress` method."},"evmDetails":{"description":"If this wallet contains an EVM network, this field will be populated.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2WalletEVMDetails"}]},"tronDetails":{"description":"If this wallet contains a Tron network, this field will be populated.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/WalletTronDetails"}]},"tonDetails":{"description":"If this wallet contains a Ton network, this field will be populated.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2WalletTonDetails"}]},"solanaDetails":{"description":"If this wallet contains a Solana network, this field will be populated.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/WalletSolanaDetails"}]},"stellarDetails":{"description":"If this wallet contains a Stellar network, this field will be populated.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2WalletStellarDetails"}]},"xrplDetails":{"description":"If this wallet contains an XRPL network, this field will be populated.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/WalletXRPLDetails"}]},"createParams":{"description":"Parameters only used during wallet creation. Not included in responses.","allOf":[{"$ref":"#/components/schemas/v2WalletCreateParams"}]},"btcDetails":{"description":"If this wallet contains a Bitcoin network, this field will be populated.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2WalletBTCDetails"}]}},"required":["displayName","networks"]},"v2WalletAddress":{"type":"object","properties":{"name":{"type":"string","example":"vaults/1b25635a5b3f/wallets/67af44031584/addresses/519c67ddae33","description":"The resource name of the WalletAddress.\n\nFormat: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`","readOnly":true},"displayName":{"type":"string","example":"Hal's Address 3","description":"A human-readable name.\nRelevant only for deposit addresses.\n\nMust match the regular expression `[a-zA-Z0-9\\.,:\\-'# _$]+$` and be shorter than 100 characters"},"network":{"type":"string","example":"networks/bitcoin-mainnet","description":"The resource name of the network of the address.\n\nFormat: `networks/{network_id}`"},"address":{"type":"string","example":"bc1q04pum57enmfgcu3tu5gwqlmza5n7tchky0gjvu","description":"The blockchain address.","readOnly":true},"format":{"example":"BITCOIN_P2WPKH","description":"Address format.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/WalletAddressFormat"}]},"key":{"type":"string","example":"vaults/1b25635a5b3f/keys/95257c5a522f","description":"The resource name of the MPC key this address was derived from.\n\nFormat: `vaults/{vault_id}/keys/{key_id}`","readOnly":true},"keyDerivationPath":{"type":"array","example":[44,0,0,0,3],"items":{"type":"string","format":"int64"},"description":"Derivation path of the address from the MPC key.","readOnly":true},"type":{"example":"DEPOSIT","readOnly":true,"allOf":[{"$ref":"#/components/schemas/v2WalletAddressType"}]},"note":{"type":"string","example":"This is a note","title":"note"},"createParams":{"description":"Parameters only used during wallet address creation. Not included in\nresponses.","allOf":[{"$ref":"#/components/schemas/v2WalletAddressCreateParams"}]}},"required":["network"]},"v2WalletAddressBalance":{"type":"object","properties":{"asset":{"type":"string","example":"assets/native.ethereum-mainnet","description":"The resource name of the asset.\n\nFormat: `assets/{asset_id}`"},"walletAddress":{"type":"string","example":"vaults/1b25635a5b3f/wallets/203809def2/addresses/519c67ddae33","description":"The resource name of the wallet address.\n\nFormat: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`"},"value":{"type":"string","example":"1.3","description":"The amount of the asset, in decimal form with precision included."},"rawValue":{"type":"string","example":"13000000","description":"The raw amount of the asset that this balance contains.\n\nSpecified in the smallest unit of the Asset."},"frozenValue":{"type":"string","example":"0.3"}}},"v2WalletAddressCreateParams":{"type":"object","properties":{"btcDetails":{"description":"Bitcoin-specific creation parameters.","allOf":[{"$ref":"#/components/schemas/v2WalletAddressCreateParamsBTCDetails"}]}},"description":"Parameters only used during wallet address creation."},"v2WalletAddressCreateParamsBTCDetails":{"type":"object","properties":{"format":{"example":"P2TR","description":"Address format for the new address.\n\nOnly valid when the wallet has no address on this network yet (i.e.\nwhen this request adds the network to the wallet); once a wallet has\nan address on a Bitcoin-based network, every further address uses the\nsame format, and a mismatching value is rejected.\n\nPer-chain supported formats and defaults are listed in the create\nparams of `CreateWallet`.\n\nSetting this for a non-Bitcoin-based network is an error.","allOf":[{"$ref":"#/components/schemas/BTCDetailsAddressFormat"}]}},"description":"Bitcoin-specific creation parameters.","required":["format"]},"v2WalletAddressType":{"type":"string","enum":["MAIN","DEPOSIT","CHANGE"],"description":" - MAIN: Main address (main address of the wallet).\n - DEPOSIT: Deposit address.\n - CHANGE: Change address."},"v2WalletBTCDetails":{"type":"object","properties":{"btcNetworkDetails":{"type":"array","items":{"$ref":"#/components/schemas/v2WalletBTCDetailsBTCNetworkDetails"},"readOnly":true}}},"v2WalletBTCDetailsBTCNetworkDetails":{"type":"object","properties":{"network":{"type":"string","example":"networks/bitcoin-mainnet","description":"A specific btc network of the wallet.","readOnly":true},"mainAddress":{"type":"string","description":"The main deposit address of the wallet in the network.","readOnly":true},"xpub":{"type":"string","description":"The xpub of the wallet in the network. Included only when `FULL` view is requested.","readOnly":true},"format":{"example":"P2WPKH","description":"Address format of `main_address`.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/BTCDetailsAddressFormat"}]}}},"v2WalletBalance":{"type":"object","properties":{"asset":{"type":"string","example":"assets/native.ethereum-mainnet","description":"The resource name of the asset.\n\nFormat: `assets/{asset_id}`"},"wallet":{"type":"string","example":"vaults/1b25635a5b3f/wallets/203809def2","description":"The resource name of the wallet.\n\nFormat: `vaults/{vault_id}/wallets/{wallet_id}`"},"value":{"type":"string","example":"1.3","description":"The amount of the asset, in decimal form with precision included."},"rawValue":{"type":"string","example":"13000000","description":"The raw amount of the asset that this balance contains.\n\nSpecified in the smallest unit of the Asset."},"frozenValue":{"type":"string","example":"0.3"}}},"v2WalletCreateParams":{"type":"object","properties":{"walletGroups":{"type":"array","example":["vaults/1b25635a5b3f/walletGroups/95257c5a522f"],"items":{"type":"string"},"description":"Wallet will be assigned to these wallet groups upon creation.\nEach group must support assignment of empty wallets on creation in the dedicated group setting.\n\nFormat: `vaults/{vault_id}/walletGroups/{wallet_group_id}`."},"btcDetails":{"description":"Bitcoin-specific creation parameters.","allOf":[{"$ref":"#/components/schemas/v2WalletCreateParamsBTCDetails"}]}},"description":"Parameters only used during wallet creation."},"v2WalletCreateParamsBTCDetails":{"type":"object","properties":{"btcNetworkDetails":{"type":"array","items":{"$ref":"#/components/schemas/WalletCreateParamsBTCDetailsBTCNetworkDetails"},"description":"Per-network format selections. Bitcoin-based networks in the wallet\nthat are not listed here use their default format. Each `network` must\nappear at most once."}},"description":"Bitcoin-specific creation parameters. Ignored on non-Bitcoin wallets."},"v2WalletEVMDetails":{"type":"object","properties":{"address":{"type":"string","description":"The address of the wallet.","readOnly":true}}},"v2WalletStellarDetails":{"type":"object","properties":{"address":{"type":"string","description":"The address of the wallet.","readOnly":true}}},"v2WalletTonDetails":{"type":"object","properties":{"address":{"type":"string","description":"The address of the wallet.","readOnly":true}}},"v2WalletView":{"type":"string","enum":["BASIC","FULL"],"description":" - BASIC: The default view. Does not include the converted value.\n - FULL: Calculate and include the converted value and additional fields."},"v2WalletconnectSession":{"type":"object","properties":{"name":{"type":"string","example":"vaults/1b25635a5b3f/walletconnectSessions/123","description":"The resource name of the walletconnect session.\n\nFormat: `vaults/{vault_id}/walletconnectSessions/{walletconnect_session_id}`.","readOnly":true},"initiator":{"type":"string","description":"The initiator of the walletconnect session.\n\nFormat: `users/{user_id}`.","readOnly":true},"peer":{"description":"The peer of the walletconnect session.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/WalletconnectSessionPeer"}]},"network":{"type":"string","description":"The network of the walletconnect session.\n\nFormat: `networks/{network_id}`.","readOnly":true},"verificationContext":{"description":"The WalletConnect verification context for the peer.","readOnly":true,"allOf":[{"$ref":"#/components/schemas/WalletconnectSessionVerificationContext"}]}}},"v2XRPLRawTransaction":{"type":"object","properties":{"network":{"type":"string","example":"networks/xrpl-mainnet","description":"The resource name of the network of the transaction.\n\nFormat: `networks/{network_id}`."},"sender":{"type":"string"},"jsonTransactionData":{"type":"object"},"publish":{"type":"boolean","description":"Set to true if you wish for Utila to automatically broadcast the transaction after it is signed. Default: true."}},"required":["network","sender","jsonTransactionData"]}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"security":[{"bearerAuth":[]}]}