Uniswap · Schema
UserOperation
ERC-4337 v0.8 UserOperation.
BlockchainCryptocurrencyDeFiDecentralized ExchangeLiquiditySwaps
Properties
| Name | Type | Description |
|---|---|---|
| sender | string | Smart account address that will execute the operation. |
| nonce | string | Anti-replay nonce from the EntryPoint. |
| callData | string | ABI-encoded call data for the batch execution. |
| callGasLimit | string | Gas limit for the main execution call. |
| verificationGasLimit | string | Gas limit for the verification step. |
| preVerificationGas | string | Gas to cover bundler overhead and L1 data costs. |
| maxFeePerGas | string | EIP-1559 max fee per gas. |
| maxPriorityFeePerGas | string | EIP-1559 max priority fee per gas. |
| factory | string | Account factory address (present for first-time account deployment). |
| factoryData | string | Calldata for the account factory. |
| paymaster | string | Paymaster contract address (present when gas is sponsored). |
| paymasterVerificationGasLimit | string | Gas limit for paymaster verification. |
| paymasterPostOpGasLimit | string | Gas limit for paymaster post-operation. |
| paymasterData | string | Paymaster-specific data. |
| signature | string | Dummy signature placeholder; the client signs the UserOperation after receiving this response. |
| eip7702Auth | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/uniswap/refs/heads/main/json-schema/uniswap-user-operation-schema.json",
"title": "UserOperation",
"description": "ERC-4337 v0.8 UserOperation.",
"type": "object",
"properties": {
"sender": {
"type": "string",
"description": "Smart account address that will execute the operation."
},
"nonce": {
"type": "string",
"description": "Anti-replay nonce from the EntryPoint."
},
"callData": {
"type": "string",
"description": "ABI-encoded call data for the batch execution."
},
"callGasLimit": {
"type": "string",
"description": "Gas limit for the main execution call."
},
"verificationGasLimit": {
"type": "string",
"description": "Gas limit for the verification step."
},
"preVerificationGas": {
"type": "string",
"description": "Gas to cover bundler overhead and L1 data costs."
},
"maxFeePerGas": {
"type": "string",
"description": "EIP-1559 max fee per gas."
},
"maxPriorityFeePerGas": {
"type": "string",
"description": "EIP-1559 max priority fee per gas."
},
"factory": {
"type": "string",
"description": "Account factory address (present for first-time account deployment)."
},
"factoryData": {
"type": "string",
"description": "Calldata for the account factory."
},
"paymaster": {
"type": "string",
"description": "Paymaster contract address (present when gas is sponsored)."
},
"paymasterVerificationGasLimit": {
"type": "string",
"description": "Gas limit for paymaster verification."
},
"paymasterPostOpGasLimit": {
"type": "string",
"description": "Gas limit for paymaster post-operation."
},
"paymasterData": {
"type": "string",
"description": "Paymaster-specific data."
},
"signature": {
"type": "string",
"description": "Dummy signature placeholder; the client signs the UserOperation after receiving this response."
},
"eip7702Auth": {
"$ref": "#/components/schemas/Eip7702Authorization"
}
},
"required": [
"sender",
"nonce",
"callData",
"callGasLimit",
"verificationGasLimit",
"preVerificationGas",
"maxFeePerGas",
"maxPriorityFeePerGas",
"signature"
]
}