{
  "openapi": "3.0.0",
  "paths": {
    "/api/v3/intents/intentStatus": {
      "post": {
        "operationId": "IntentsController_getIntentStatus",
        "summary": "Get Intent Status",
        "description": "Query the current status of a cross-chain intent transaction. Provide one of: intentHash, intentCreatedHash, or fulfillmentHash to track the intent's progress through the execution lifecycle.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IntentStatusRequestV3DTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved intent status and transaction details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntentStatusResponseV3DTO"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V3"
        ]
      }
    },
    "/api/v3/intents/intentsByAddress": {
      "post": {
        "operationId": "IntentsController_getIntentsByAddress",
        "summary": "Get Intents By Address",
        "description": "Query intents by creator/funder addresses across EVM, Solana, and Tron chains. Supports pagination and date range filtering. At least one address array must be provided.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IntentsByAddressRequestV3DTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved intents for the provided addresses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntentsResponseV3DTO"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V3"
        ]
      }
    },
    "/api/v3/intents/intentByHash": {
      "post": {
        "operationId": "IntentsController_getIntentByHash",
        "summary": "Get Intent Activity By Hash",
        "description": "Lookup an intent by its hash and return full activity details including lifecycle events (fulfillment, refund). Searches across EVM, Solana, and Tron chains.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IntentByHashRequestV3DTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved intent activity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntentByHashResponseV3DTO"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V3"
        ]
      }
    },
    "/api/v3/intents/refundableIntents": {
      "post": {
        "operationId": "IntentsController_getRefundableIntents",
        "summary": "Get Refundable Intents",
        "description": "Query refundable intents (expired without fulfillment or refund) by creator/funder addresses across EVM, Solana, and Tron chains. At least one address array must be provided.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundableIntentsRequestV3DTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved refundable intents for the provided addresses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntentsResponseV3DTO"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V3"
        ]
      }
    },
    "/api/v2/quotes": {
      "post": {
        "operationId": "QuotesController_getQuotes",
        "summary": "Get Quotes",
        "description": "Retrieve quotes from solvers for a given intent. Returns an array of quotes with pricing and execution details from available solvers.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetQuotesDTO"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successfully retrieved quotes from solvers",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EcoAPIResponse"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V2"
        ]
      }
    },
    "/api/v2/quotes/reverse": {
      "post": {
        "operationId": "QuotesController_getReverseQuote",
        "summary": "Get Reverse Quotes",
        "description": "Retrieve reverse quotes from solvers for a given intent. Reverse quotes allow you to specify what you want to offer and get quotes for what will be received and can only have transfer calls.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetQuotesDTO"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successfully retrieved reverse quotes from solvers",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EcoAPIResponse"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V2"
        ]
      }
    },
    "/api/v2/quotes/initiateGaslessIntent": {
      "post": {
        "operationId": "QuotesController_initiateGaslessIntent",
        "summary": "Initiate Gasless Intent",
        "description": "Submit a gasless intent transaction using a previously obtained quote. This endpoint initiates the gasless execution of an intent with the specified solver.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InitiateGaslessIntentDTO"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successfully initiated gasless intent transaction",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EcoAPIResponse"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V2"
        ]
      }
    },
    "/api/v2/quotes/getGaslessIntentTransactionData": {
      "post": {
        "operationId": "QuotesController_getDestinationChainTransactionHash",
        "summary": "Get Gasless Intent Transaction Data",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GaslessIntentTransactionDataRequestDTO"
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GaslessIntentTransactionDataDTO"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V2"
        ]
      }
    },
    "/api/v3/quotes/exactOut": {
      "post": {
        "operationId": "QuotesV3Controller_getQuotes",
        "summary": "Get Exact Out Quotes",
        "description": "Retrieve exact out quotes from solvers for a cross-chain token swap. Returns detailed pricing, fees, contract addresses, and estimated fulfillment time for the requested swap.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuotesRequestV3DTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved exact out quotes with pricing and execution details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotesResponseV3DTO"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V3"
        ]
      }
    },
    "/api/v3/quotes/exactIn": {
      "post": {
        "operationId": "QuotesV3Controller_getReverseQuotes",
        "summary": "Get Exact In Quotes",
        "description": "Retrieve exact in quotes from solvers for a given intent. Exact in quotes allow you to specify what you want to offer and get quotes for what will be received and can only have transfer calls.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuotesRequestV3DTO"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successfully retrieved exact in quotes from solvers",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotesResponseV3DTO"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V3"
        ]
      }
    },
    "/api/v3/quotes/single": {
      "post": {
        "operationId": "QuotesV3Controller_createQuote",
        "summary": "Get Single Quote",
        "description": "Retrieve the best quote for a cross-chain single token swap. Returns detailed pricing, fees, contract addresses, and estimated fulfillment time for the requested swap. This endpoint should only be used for intents intended to be published onchain.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SingleRequestV3DTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved quote with pricing and execution details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleResponseV3DTO"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V3"
        ]
      }
    },
    "/api/v3/quotes/initiateGaslessIntent": {
      "post": {
        "operationId": "QuotesV3Controller_initiateGaslessIntent",
        "summary": "Initiate Gasless Intent",
        "description": "Submit a gasless intent transaction using a previously obtained quote. This endpoint initiates the gasless execution of an intent with the specified solver.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InitiateGaslessIntentV3DTO"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successfully initiated gasless intent transaction",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InitiateGaslessIntentResponseV3DTO"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V3"
        ]
      }
    },
    "/api/v1/solverRegistry/registerSolver": {
      "post": {
        "operationId": "SolverRegistryController_registerSolver",
        "summary": "Register Solver",
        "description": "Register a new solver. Solvers provide quotes and execute intents on behalf of users. This endpoint requires authentication via request signature headers.",
        "parameters": [
          {
            "name": "x-beam-sig",
            "in": "header",
            "description": "Request signature header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-beam-sig-expire",
            "in": "header",
            "description": "Request signature expiry header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-beam-sig-address",
            "in": "header",
            "description": "Request signature address header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddRegisteredSolverDTO"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Solver successfully registered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EcoAPIResponse"
                }
              }
            }
          }
        },
        "tags": [
          "Solver Registration"
        ]
      }
    },
    "/api/v1/solverRegistry/updateSolver": {
      "patch": {
        "operationId": "SolverRegistryController_updateSolver",
        "summary": "Update Solver",
        "description": "Update an existing registered solver configuration. Allows updating endpoints, supported routes, and execution types. This endpoint requires authentication via request signature headers from the solver owner.",
        "parameters": [
          {
            "name": "x-beam-sig",
            "in": "header",
            "description": "Request signature header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-beam-sig-expire",
            "in": "header",
            "description": "Request signature expiry header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-beam-sig-address",
            "in": "header",
            "description": "Request signature address header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRegisteredSolverDTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Solver configuration successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EcoAPIResponse"
                }
              }
            }
          }
        },
        "tags": [
          "Solver Registration"
        ]
      }
    },
    "/api/v1/quotes": {
      "post": {
        "operationId": "V1QuotesController_getQuotes",
        "summary": "Get Quotes",
        "description": "Retrieve quotes from solvers for a given intent. Returns an array of quotes with pricing and execution details from available solvers.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V1GetQuotesDTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved quotes from solvers",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V1GetQuotesResponseDTO"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V1"
        ]
      }
    },
    "/api/v1/quotes/reverse": {
      "post": {
        "operationId": "V1QuotesController_getReverseQuote",
        "summary": "Get Reverse Quotes",
        "description": "Retrieve reverse quotes from solvers for a given intent. Reverse quotes allow you to specify what you want to offer and get quotes for what will be received and can only have transfer calls.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V1GetQuotesDTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved reverse quotes from solvers",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V1GetQuotesResponseDTO"
                }
              }
            }
          }
        },
        "tags": [
          "Quotes V1"
        ]
      }
    }
  },
  "info": {
    "title": "Eco Routes API",
    "description": "Eco Routes API documentation",
    "version": "1.0",
    "contact": {}
  },
  "tags": [],
  "servers": [
    {
      "url": "https://quotes.eco.com",
      "description": "Production"
    },
    {
      "url": "https://quotes-preprod.eco.com",
      "description": "Preproduction"
    },
    {
      "url": "https://quotes.staging.eco.com",
      "description": "Staging"
    },
    {
      "url": "http://localhost:4000",
      "description": "Local"
    }
  ],
  "components": {
    "schemas": {
      "GetIntentsForHashesDTO": {
        "type": "object",
        "properties": {
          "hashes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "hashes"
        ]
      },
      "IntentStatusRequestV3DTO": {
        "type": "object",
        "properties": {
          "intentHash": {
            "type": "string",
            "description": "Hash of the intent to query status for",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef12"
          },
          "intentCreatedHash": {
            "type": "string",
            "description": "Transaction hash of the intent creation transaction",
            "example": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890ab"
          },
          "fulfillmentHash": {
            "type": "string",
            "description": "Transaction hash of the intent fulfillment transaction",
            "example": "0x567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef123456"
          }
        }
      },
      "StatusV3DTO": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "Pending",
              "Completed"
            ],
            "description": "High-level status of the intent (Pending or Completed)",
            "example": "Pending"
          },
          "subStatus": {
            "type": "string",
            "enum": [
              "WaitingToFulfill",
              "WaitingForRefund",
              "Fulfilled",
              "Refunded"
            ],
            "description": "Detailed status indicating the specific stage of intent execution",
            "example": "WaitingToFulfill"
          }
        },
        "required": [
          "status",
          "subStatus"
        ]
      },
      "TransactionInfoV3DTO": {
        "type": "object",
        "properties": {
          "chainId": {
            "type": "number",
            "description": "Chain ID where this transaction occurred",
            "example": 1
          },
          "transactionHash": {
            "type": "string",
            "description": "Hash of the transaction",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef12"
          },
          "blockExplorerUrl": {
            "type": "string",
            "description": "URL to view this transaction on a block explorer",
            "example": "https://etherscan.io/tx/0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef12"
          }
        },
        "required": [
          "chainId",
          "transactionHash",
          "blockExplorerUrl"
        ]
      },
      "IntentStatusV3DTO": {
        "type": "object",
        "properties": {
          "intentHash": {
            "type": "string",
            "description": "Hash of the intent being tracked",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef12"
          },
          "status": {
            "description": "Current status and sub-status of the intent execution",
            "allOf": [
              {
                "$ref": "#/components/schemas/StatusV3DTO"
              }
            ]
          },
          "intentCreated": {
            "description": "Transaction details for when the intent was created",
            "allOf": [
              {
                "$ref": "#/components/schemas/TransactionInfoV3DTO"
              }
            ]
          },
          "fulfillment": {
            "description": "Transaction details for when the intent was fulfilled (if completed)",
            "allOf": [
              {
                "$ref": "#/components/schemas/TransactionInfoV3DTO"
              }
            ]
          },
          "refund": {
            "description": "Transaction details for when the intent was refunded (if refunded)",
            "allOf": [
              {
                "$ref": "#/components/schemas/TransactionInfoV3DTO"
              }
            ]
          }
        },
        "required": [
          "intentHash",
          "status",
          "intentCreated"
        ]
      },
      "IntentStatusResponseV3DTO": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Intent status response data",
            "allOf": [
              {
                "$ref": "#/components/schemas/IntentStatusV3DTO"
              }
            ]
          }
        },
        "required": [
          "data"
        ]
      },
      "IntentsByAddressRequestV3DTO": {
        "type": "object",
        "properties": {
          "evmAddresses": {
            "description": "Array of EVM addresses (0x...) to filter intents by creator/funder",
            "example": [
              "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "solanaAddresses": {
            "description": "Array of Solana addresses (base58) to filter intents by creator/funder",
            "example": [
              "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tronAddresses": {
            "description": "Array of Tron addresses (T...) to filter intents by creator/funder",
            "example": [
              "TYASr5UV6HEcXatwdFQfmLVUqQQQMUxHLS"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "startTimestamp": {
            "type": "number",
            "description": "Start timestamp (Unix seconds) for date range filter (default: 7 days ago)",
            "example": 1704067200
          },
          "endTimestamp": {
            "type": "number",
            "description": "End timestamp (Unix seconds) for date range filter (default: now)",
            "example": 1704153600
          }
        }
      },
      "EventInfoDTO": {
        "type": "object",
        "properties": {
          "txHash": {
            "type": "string",
            "description": "Transaction hash of the event",
            "example": "0x1234567890abcdef..."
          },
          "timestamp": {
            "type": "number",
            "description": "Unix timestamp when the event occurred",
            "example": 1729600000
          },
          "chainID": {
            "type": "number",
            "description": "Chain ID where the event occurred",
            "example": 8453
          }
        },
        "required": [
          "txHash",
          "timestamp",
          "chainID"
        ]
      },
      "IntentActivityV3DTO": {
        "type": "object",
        "properties": {
          "intentHash": {
            "type": "string",
            "description": "Intent hash (properly formatted with/without 0x prefix based on source chain)",
            "example": "0xabc123..."
          },
          "sourceChainID": {
            "type": "number",
            "description": "Source chain ID where the intent was created",
            "example": 1399811149
          },
          "destinationChainID": {
            "type": "number",
            "description": "Destination chain ID where the intent will be fulfilled",
            "example": 8453
          },
          "creator": {
            "type": "string",
            "description": "Address that created the intent",
            "example": "0x123..."
          },
          "funder": {
            "type": "string",
            "description": "Address that funded the intent (if different from creator)",
            "example": "0x456..."
          },
          "recipient": {
            "type": "string",
            "description": "Destination address for the intent",
            "example": "0x789..."
          },
          "deadline": {
            "type": "number",
            "description": "Unix timestamp when the intent expires and becomes refundable",
            "example": 1730000000
          },
          "createdAt": {
            "type": "number",
            "description": "Unix timestamp when the intent was created",
            "example": 1729500000
          },
          "version": {
            "type": "string",
            "description": "Intent version (from EVM indexer or \"3.0.0-alpha.8\" for Solana/Tron)",
            "example": "1.7.13"
          },
          "params": {
            "type": "object",
            "description": "Raw intent parameters for frontend parsing",
            "example": {}
          },
          "createdTxHash": {
            "type": "string",
            "description": "Transaction hash of the intent creation",
            "example": "0xabc..."
          },
          "contract": {
            "type": "string",
            "description": "Contract address that emitted the intent creation event",
            "example": "0xdef..."
          },
          "isGasless": {
            "type": "boolean",
            "description": "Whether this is a gasless intent (funder is different from creator)",
            "example": true
          },
          "fulfillment": {
            "description": "Fulfillment event details (if intent was fulfilled)",
            "allOf": [
              {
                "$ref": "#/components/schemas/EventInfoDTO"
              }
            ]
          },
          "refund": {
            "description": "Refund event details (if intent was refunded)",
            "allOf": [
              {
                "$ref": "#/components/schemas/EventInfoDTO"
              }
            ]
          }
        },
        "required": [
          "intentHash",
          "sourceChainID",
          "destinationChainID",
          "creator",
          "deadline",
          "createdAt",
          "version",
          "params",
          "createdTxHash",
          "contract",
          "isGasless"
        ]
      },
      "IntentsResponseV3DTO": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Array of intents matching the request",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IntentActivityV3DTO"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "IntentByHashRequestV3DTO": {
        "type": "object",
        "properties": {
          "intentHash": {
            "type": "string",
            "description": "Intent hash to look up",
            "example": "0xabc123..."
          }
        },
        "required": [
          "intentHash"
        ]
      },
      "IntentByHashResponseV3DTO": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Intent activity details",
            "allOf": [
              {
                "$ref": "#/components/schemas/IntentActivityV3DTO"
              }
            ]
          }
        },
        "required": [
          "data"
        ]
      },
      "RefundableIntentsRequestV3DTO": {
        "type": "object",
        "properties": {
          "evmAddresses": {
            "description": "Array of EVM addresses (0x...) to filter refundable intents by creator/funder",
            "example": [
              "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "solanaAddresses": {
            "description": "Array of Solana addresses (base58) to filter refundable intents by creator/funder",
            "example": [
              "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tronAddresses": {
            "description": "Array of Tron addresses (T...) to filter refundable intents by creator/funder",
            "example": [
              "TYASr5UV6HEcXatwdFQfmLVUqQQQMUxHLS"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "SplitSignatureDTO": {
        "type": "object",
        "properties": {
          "signature": {
            "type": "string"
          }
        },
        "required": [
          "signature"
        ]
      },
      "GetSaltDTO": {
        "type": "object",
        "properties": {
          "counter": {
            "type": "number"
          },
          "chainID": {
            "type": "number"
          }
        },
        "required": [
          "chainID"
        ]
      },
      "TokenAmountDataDTO": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Address of the ERC20 token contract",
            "example": "0xA0b86a33E6441446C1c3df4c64B739C7e4a81ec0"
          },
          "amount": {
            "type": "string",
            "description": "Token amount in smallest unit (wei for ETH, base units for ERC20 tokens)",
            "example": "1000000"
          }
        },
        "required": [
          "token",
          "amount"
        ]
      },
      "CallDataDTO": {
        "type": "object",
        "properties": {
          "target": {
            "type": "string",
            "description": "Address of the contract to call or recipient for native token transfers",
            "example": "0x742d35Cc6634C0532925a3b8D56C85e83F9D18Fa"
          },
          "data": {
            "type": "string",
            "description": "Encoded function call data or empty for native token transfers",
            "example": "0xa9059cbb000000000000000000000000742d35cc6634c0532925a3b8d56c85e83f9d18fa0000000000000000000000000000000000000000000000000000000000989680"
          },
          "value": {
            "type": "string",
            "description": "Native token value to send with the call (in wei)",
            "example": "0"
          }
        },
        "required": [
          "target",
          "data",
          "value"
        ]
      },
      "RouteDataDTO": {
        "type": "object",
        "properties": {
          "originChainID": {
            "type": "string",
            "description": "Chain ID where the intent originates",
            "example": "8453"
          },
          "destinationChainID": {
            "type": "string",
            "description": "Chain ID where the intent will be executed",
            "example": "10"
          },
          "inboxContract": {
            "type": "string",
            "description": "Address of the inbox contract on the destination chain",
            "example": "0x123abc456def789012345678901234567890abcd"
          },
          "tokens": {
            "description": "Array of ERC20 tokens and amounts involved in the destination calls",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TokenAmountDataDTO"
            }
          },
          "calls": {
            "description": "Array of contract calls to be executed on the destination chain",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CallDataDTO"
            }
          },
          "salt": {
            "type": "string",
            "description": "Salt for the intent (used when initiating gasless intents or publishing onchain, set to '0x0' for quote requests)",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
          }
        },
        "required": [
          "originChainID",
          "destinationChainID",
          "inboxContract",
          "tokens",
          "calls"
        ]
      },
      "RewardDataDTO": {
        "type": "object",
        "properties": {
          "creator": {
            "type": "string",
            "description": "Address of the user creating this intent, this will be the recipient of a refund if the intent expires",
            "example": "0x742d35Cc6634C0532925a3b8D56C85e83F9D18Fa"
          },
          "proverContract": {
            "type": "string",
            "description": "Address of the prover contract that validates intent execution",
            "example": "0x1234567890abcdef1234567890abcdef12345678"
          },
          "deadline": {
            "type": "string",
            "description": "Unix timestamp deadline for when this intent expires (in seconds)",
            "example": "1699123456"
          },
          "nativeValue": {
            "type": "string",
            "description": "Native token amount offered (in wei)",
            "example": "0"
          },
          "tokens": {
            "description": "Array of ERC20 tokens and amounts offered on the origin chain for fulfilling the intent",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TokenAmountDataDTO"
            }
          }
        },
        "required": [
          "creator",
          "proverContract",
          "deadline",
          "nativeValue",
          "tokens"
        ]
      },
      "PermitDTO": {
        "type": "object",
        "properties": {
          "chainID": {
            "type": "number"
          },
          "funder": {
            "type": "string"
          },
          "spender": {
            "type": "string",
            "description": "Address authorized to spend the approved tokens",
            "example": "0x742d35Cc6634C0532925a3b8D56C85e83F9D18Fa"
          },
          "token": {
            "type": "string",
            "description": "ERC20 token contract address that supports permit functionality",
            "example": "0xA0b86a33E6441446C1c3df4c64B739C7e4a81ec0"
          },
          "signature": {
            "type": "string",
            "description": "ERC20 permit signature",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1b"
          },
          "deadline": {
            "type": "string",
            "description": "Unix timestamp deadline for when the permit expires (in seconds)",
            "example": "1699123456"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "chainID",
          "funder",
          "spender",
          "token",
          "signature",
          "deadline",
          "value"
        ]
      },
      "Permit2TypedDataDetailsDTO": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "ERC20 token contract address being approved",
            "example": "0xA0b86a33E6441446C1c3df4c64B739C7e4a81ec0"
          },
          "amount": {
            "type": "string",
            "description": "Amount to approve (in base units)",
            "example": "1000000000"
          },
          "expiration": {
            "type": "string",
            "description": "Unix timestamp when the permit expires (in seconds)",
            "example": "1699123456"
          },
          "nonce": {
            "type": "string",
            "description": "Unique nonce for the permit to prevent replay attacks",
            "example": "42"
          }
        },
        "required": [
          "token",
          "amount",
          "expiration",
          "nonce"
        ]
      },
      "Permit2DTO": {
        "type": "object",
        "properties": {
          "chainID": {
            "type": "number"
          },
          "permitContract": {
            "type": "string",
            "description": "Address of the Permit2 contract for universal token approvals",
            "example": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
          },
          "details": {
            "description": "Array of token details and amounts being approved",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Permit2TypedDataDetailsDTO"
            }
          },
          "funder": {
            "type": "string"
          },
          "spender": {
            "type": "string",
            "description": "Address authorized to spend the approved tokens",
            "example": "0x742d35Cc6634C0532925a3b8D56C85e83F9D18Fa"
          },
          "sigDeadline": {
            "type": "string",
            "description": "Unix timestamp deadline for when the permit expires (in seconds)",
            "example": "1699123456"
          },
          "signature": {
            "type": "string",
            "description": "Permit2 signature for the approval data",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1b"
          }
        },
        "required": [
          "chainID",
          "permitContract",
          "details",
          "funder",
          "spender",
          "sigDeadline",
          "signature"
        ]
      },
      "AllowanceOrTransferDTO": {
        "type": "object",
        "properties": {
          "chainID": {
            "type": "number",
            "description": "The chain ID where the allowance or transfer occurs",
            "example": 1
          },
          "modeOrExpiration": {
            "type": "number",
            "description": "Mode for allowance (0) or expiration timestamp for transfer",
            "example": 0
          },
          "tokenKey": {
            "type": "string",
            "description": "Token contract address",
            "example": "0xA0b86a33E6441B8Ec2c8C7E5b0d77D5FdDa0c4E4"
          },
          "account": {
            "type": "string",
            "description": "Account address for the allowance or transfer",
            "example": "0x742d35cc6634c0532925a3b8b0eff6a2db3b51a"
          },
          "amountDelta": {
            "type": "string",
            "description": "Amount delta for the allowance or transfer (in wei)",
            "example": "1000000000000000000"
          }
        },
        "required": [
          "chainID",
          "modeOrExpiration",
          "tokenKey",
          "account",
          "amountDelta"
        ]
      },
      "Permit3DTO": {
        "type": "object",
        "properties": {
          "chainId": {
            "type": "number",
            "description": "The original chain ID from the signature",
            "example": 1
          },
          "permitContract": {
            "type": "string",
            "description": "Address of the Permit3 contract",
            "example": "0x1234567890123456789012345678901234567890"
          },
          "owner": {
            "type": "string",
            "description": "Owner address of the tokens being permitted",
            "example": "0x0987654321098765432109876543210987654321"
          },
          "salt": {
            "type": "string",
            "description": "Unique salt value for the permit signature",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
          },
          "signature": {
            "type": "string",
            "description": "Cryptographic signature for the permit",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1b"
          },
          "deadline": {
            "type": "string",
            "description": "Expiration timestamp for the permit signature",
            "example": "1234567890"
          },
          "timestamp": {
            "type": "number",
            "description": "Unix timestamp when the permit was created",
            "example": 1234567890
          },
          "merkleRoot": {
            "type": "string",
            "description": "Merkle root hash representing all chain permit leaves",
            "example": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd"
          },
          "leaves": {
            "description": "Array of merkle tree leaf hashes for multi-chain permits",
            "example": [
              "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890ab",
              "0xfedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "allowanceOrTransfers": {
            "description": "Array of allowance or transfer data organized by chain for multi-chain permits",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AllowanceOrTransferDTO"
            }
          }
        },
        "required": [
          "chainId",
          "permitContract",
          "owner",
          "salt",
          "signature",
          "deadline",
          "timestamp",
          "merkleRoot",
          "leaves",
          "allowanceOrTransfers"
        ]
      },
      "PermitDataDTO": {
        "type": "object",
        "properties": {
          "permit": {
            "description": "Array of ERC20 permit signatures for token approvals",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PermitDTO"
            }
          },
          "permit2": {
            "description": "Permit2 signature data for universal token approvals",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Permit2DTO"
            }
          },
          "permit3": {
            "description": "Permit3 signature data for multi-chain token approvals",
            "allOf": [
              {
                "$ref": "#/components/schemas/Permit3DTO"
              }
            ]
          }
        }
      },
      "GaslessIntentDataDTO": {
        "type": "object",
        "properties": {
          "permitData": {
            "description": "Optional permit data for token approvals (permit, permit2, or permit3)",
            "allOf": [
              {
                "$ref": "#/components/schemas/PermitDataDTO"
              }
            ]
          },
          "allowPartial": {
            "type": "boolean",
            "description": "Whether to allow partial funding of the intent",
            "example": false,
            "default": false
          }
        }
      },
      "IntentDataDTO": {
        "type": "object",
        "properties": {
          "routeData": {
            "description": "Route configuration specifying source and destination chains and transfer details",
            "allOf": [
              {
                "$ref": "#/components/schemas/RouteDataDTO"
              }
            ]
          },
          "rewardData": {
            "description": "Reward configuration defining tokens and amounts offered to solvers for executing the intent",
            "allOf": [
              {
                "$ref": "#/components/schemas/RewardDataDTO"
              }
            ]
          },
          "gaslessIntentData": {
            "description": "Optional gasless intent data containing permit signatures for token approvals and execution configuration",
            "allOf": [
              {
                "$ref": "#/components/schemas/GaslessIntentDataDTO"
              }
            ]
          }
        },
        "required": [
          "routeData",
          "rewardData"
        ]
      },
      "GetQuotesDTO": {
        "type": "object",
        "properties": {
          "dAppID": {
            "type": "string",
            "description": "Identifier for the client application making the request",
            "example": "my-dapp"
          },
          "intentExecutionTypes": {
            "type": "array",
            "description": "Array of intent execution types to filter quotes by",
            "example": [
              "SELF_PUBLISH"
            ],
            "items": {
              "type": "string",
              "enum": [
                "SELF_PUBLISH",
                "GASLESS"
              ]
            }
          },
          "intentData": {
            "description": "Intent containing route and reward data for the quote request, and optionally gasless intent data",
            "allOf": [
              {
                "$ref": "#/components/schemas/IntentDataDTO"
              }
            ]
          }
        },
        "required": [
          "dAppID",
          "intentExecutionTypes",
          "intentData"
        ]
      },
      "QuoteDataEntryDTO": {
        "type": "object",
        "properties": {
          "intentExecutionType": {
            "type": "string",
            "enum": [
              "SELF_PUBLISH",
              "GASLESS"
            ],
            "description": "The execution type for this quote entry",
            "example": "SELF_PUBLISH"
          },
          "routeTokens": {
            "description": "Tokens involved in the intent execution",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TokenAmountDataDTO"
            }
          },
          "routeCalls": {
            "description": "Contract calls to be executed on the destination chain",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CallDataDTO"
            }
          },
          "rewardTokens": {
            "description": "Tokens to be offered for to fulfill the intent",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TokenAmountDataDTO"
            }
          },
          "rewardNative": {
            "type": "string",
            "description": "Native token amount to be offered (in wei)",
            "example": "0"
          },
          "expiryTime": {
            "type": "string",
            "description": "Unix timestamp when this quote expires (in seconds)",
            "example": "1699123456"
          },
          "estimatedFulfillTimeSec": {
            "type": "number",
            "description": "Estimated time in seconds for the intent to be fulfilled after initiation",
            "example": 1.5
          }
        },
        "required": [
          "intentExecutionType",
          "routeTokens",
          "routeCalls",
          "rewardTokens",
          "expiryTime",
          "estimatedFulfillTimeSec"
        ]
      },
      "QuoteDataDTO": {
        "type": "object",
        "properties": {
          "quoteEntries": {
            "description": "Array of quote entries from the solver",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuoteDataEntryDTO"
            }
          }
        },
        "required": [
          "quoteEntries"
        ]
      },
      "GaslessIntentRequestIntentEntryDTO": {
        "type": "object",
        "properties": {
          "routeData": {
            "description": "Route configuration specifying source and destination chains and transfer details",
            "allOf": [
              {
                "$ref": "#/components/schemas/RouteDataDTO"
              }
            ]
          },
          "rewardData": {
            "description": "Reward configuration defining tokens and amounts offered to solvers for executing the intent",
            "allOf": [
              {
                "$ref": "#/components/schemas/RewardDataDTO"
              }
            ]
          },
          "quoteID": {
            "type": "string",
            "description": "Unique identifier of the quote being used to initiate the gasless intent",
            "example": "quote:01234567-89ab-cdef-0123-456789abcdef"
          },
          "solverID": {
            "type": "string",
            "description": "Address of the solver that provided the quote",
            "example": "0x742d35Cc6634C0532925a3b8D56C85e83F9D18Fa"
          },
          "salt": {
            "type": "string"
          }
        },
        "required": [
          "routeData",
          "rewardData",
          "quoteID",
          "solverID",
          "salt"
        ]
      },
      "InitiateGaslessIntentDTO": {
        "type": "object",
        "properties": {
          "intentGroupID": {
            "type": "string",
            "description": "Unique identifier of the group of intents being used",
            "example": "group:01234567-89ab-cdef-0123-456789abcdef"
          },
          "dAppID": {
            "type": "string",
            "description": "Identifier for the client application initiating the gasless intent",
            "example": "my-dapp"
          },
          "intentEntries": {
            "description": "Array of intent request entries",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GaslessIntentRequestIntentEntryDTO"
            }
          },
          "gaslessIntentData": {
            "description": "Gasless intent configuration containing permit signatures and execution parameters",
            "allOf": [
              {
                "$ref": "#/components/schemas/GaslessIntentDataDTO"
              }
            ]
          }
        },
        "required": [
          "intentGroupID",
          "dAppID",
          "intentEntries",
          "gaslessIntentData"
        ]
      },
      "EcoAPIResponse": {
        "type": "object",
        "properties": {}
      },
      "GaslessIntentTransactionDataRequestDTO": {
        "type": "object",
        "properties": {
          "intentGroupID": {
            "type": "string",
            "description": "Unique identifier of the intent group to query transaction data for",
            "example": "group:01234567-89ab-cdef-0123-456789abcdef"
          }
        },
        "required": [
          "intentGroupID"
        ]
      },
      "GaslessIntentTransactionDataDTO": {
        "type": "object",
        "properties": {
          "intentGroupID": {
            "type": "string",
            "description": "Unique identifier of the intent group",
            "example": "group:01234567-89ab-cdef-0123-456789abcdef"
          },
          "destinationChainID": {
            "type": "number",
            "description": "Destination chain ID where the intent was executed",
            "example": 137
          },
          "destinationChainTxHash": {
            "type": "string",
            "description": "Transaction hash on the destination chain",
            "example": "0xfedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321"
          }
        },
        "required": [
          "intentGroupID"
        ]
      },
      "QuoteRequestV3DTO": {
        "type": "object",
        "properties": {
          "sourceChainID": {
            "type": "number",
            "description": "Chain ID of the source network where tokens will be sent from",
            "example": 1
          },
          "destinationChainID": {
            "type": "number",
            "description": "Chain ID of the destination network where tokens will be received",
            "example": 42161
          },
          "sourceToken": {
            "type": "string",
            "description": "Contract address of the token being sent on the source chain",
            "example": "0xA0b86a33E6441e45C3b9d1C3D6a0b5be4b7b5b5a"
          },
          "destinationToken": {
            "type": "string",
            "description": "Contract address of the token to be received on the destination chain",
            "example": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"
          },
          "sourceAmount": {
            "type": "string",
            "description": "Amount of source tokens to send, specified as a string representation of a bigint",
            "example": "1000000"
          },
          "funder": {
            "type": "string",
            "description": "Address that will provide the tokens and pay for the transaction",
            "example": "0x742d35Cc6527C92b4A1F3a2a8b1c9b3e8c4c5b2a"
          },
          "refundRecipient": {
            "type": "string",
            "description": "Address to receive refunds if the intent fails (defaults to funder if not specified)",
            "example": "0x742d35Cc6527C92b4A1F3a2a8b1c9b3e8c4c5b2a"
          },
          "recipient": {
            "type": "string",
            "description": "Address that will receive the tokens on the destination chain",
            "example": "0x8Ba1c0a8B4A4b9e8A9f1a6B7c8d9e0F1234567890"
          }
        },
        "required": [
          "sourceChainID",
          "destinationChainID",
          "sourceToken",
          "destinationToken",
          "sourceAmount",
          "funder",
          "recipient"
        ]
      },
      "QuotesV3RequestContractsDTO": {
        "type": "object",
        "properties": {
          "sourcePortal": {
            "type": "string",
            "description": "Contract address for the intent source (where intents are created and managed)",
            "example": "0x1234567890abcdef1234567890abcdef12345678"
          },
          "destinationPortal": {
            "type": "string",
            "description": "Contract address for the inbox (receives and processes cross-chain messages)",
            "example": "0x567890abcdef1234567890abcdef1234567890ab"
          },
          "prover": {
            "type": "string",
            "description": "Contract address for the prover (handles cross-chain proof verification)",
            "example": "0xabcdef1234567890abcdef1234567890abcdef12"
          }
        }
      },
      "QuotesRequestV3DTO": {
        "type": "object",
        "properties": {
          "dAppID": {
            "type": "string",
            "description": "Unique identifier for the client application making the request",
            "example": "my-dapp"
          },
          "intentExecutionTypes": {
            "type": "array",
            "description": "Array of intent execution types to fetch quotes for",
            "example": [
              "SELF_PUBLISH"
            ],
            "items": {
              "type": "string",
              "enum": [
                "SELF_PUBLISH",
                "GASLESS"
              ]
            }
          },
          "quoteRequest": {
            "description": "Cross-chain token swap request details including source/destination tokens and addresses",
            "allOf": [
              {
                "$ref": "#/components/schemas/QuoteRequestV3DTO"
              }
            ]
          },
          "contracts": {
            "description": "Optional contract addresses to use for the cross-chain swap (will use defaults if not specified)",
            "allOf": [
              {
                "$ref": "#/components/schemas/QuotesV3RequestContractsDTO"
              }
            ]
          }
        },
        "required": [
          "dAppID",
          "intentExecutionTypes",
          "quoteRequest"
        ]
      },
      "TokenInfoV3DTO": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "Contract address of the token",
            "example": "0xA0b86a33E6441e45C3b9d1C3D6a0b5be4b7b5b5a"
          },
          "decimals": {
            "type": "number",
            "description": "Number of decimal places for the token",
            "example": 6
          },
          "symbol": {
            "type": "string",
            "description": "Token symbol or ticker",
            "example": "USDC"
          }
        },
        "required": [
          "address",
          "decimals",
          "symbol"
        ]
      },
      "FeeV3DTO": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name identifier for the fee type",
            "example": "Solver Fee"
          },
          "description": {
            "type": "string",
            "description": "Human-readable description of what this fee covers",
            "example": "Fee paid to the solver for executing the cross-chain swap"
          },
          "token": {
            "description": "Token information for the fee payment",
            "allOf": [
              {
                "$ref": "#/components/schemas/TokenInfoV3DTO"
              }
            ]
          },
          "amount": {
            "type": "string",
            "description": "Fee amount as a string representation of a bigint",
            "example": "1000"
          }
        },
        "required": [
          "name",
          "description",
          "token",
          "amount"
        ]
      },
      "QuoteResponseDataV3DTO": {
        "type": "object",
        "properties": {
          "intentExecutionType": {
            "type": "string",
            "enum": [
              "SELF_PUBLISH",
              "GASLESS"
            ],
            "description": "The execution type for this quote entry",
            "example": "SELF_PUBLISH"
          },
          "sourceChainID": {
            "type": "number",
            "description": "Chain ID of the source network where tokens will be sent from",
            "example": 1
          },
          "destinationChainID": {
            "type": "number",
            "description": "Chain ID of the destination network where tokens will be received",
            "example": 42161
          },
          "sourceToken": {
            "type": "string",
            "description": "Contract address of the token being sent on the source chain",
            "example": "0xA0b86a33E6441e45C3b9d1C3D6a0b5be4b7b5b5a"
          },
          "destinationToken": {
            "type": "string",
            "description": "Contract address of the token to be received on the destination chain",
            "example": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"
          },
          "sourceAmount": {
            "type": "string",
            "description": "Amount of source tokens to send, as a string representation of a bigint",
            "example": "1000000"
          },
          "destinationAmount": {
            "type": "string",
            "description": "Amount of destination tokens to be received, as a string representation of a bigint",
            "example": "995000"
          },
          "funder": {
            "type": "string",
            "description": "Address that will provide the tokens and pay for the transaction",
            "example": "0x742d35Cc6527C92b4A1F3a2a8b1c9b3e8c4c5b2a"
          },
          "refundRecipient": {
            "type": "string",
            "description": "Address to receive refunds if the intent fails",
            "example": "0x742d35Cc6527C92b4A1F3a2a8b1c9b3e8c4c5b2a"
          },
          "recipient": {
            "type": "string",
            "description": "Address that will receive the tokens on the destination chain",
            "example": "0x8Ba1c0a8B4A4b9e8A9f1a6B7c8d9e0F1234567890"
          },
          "fees": {
            "description": "Array of fees that will be charged for executing this cross-chain swap",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeeV3DTO"
            }
          },
          "deadline": {
            "type": "number",
            "description": "Unix timestamp (in seconds) after which this quote expires and cannot be executed",
            "example": 1672531200
          },
          "estimatedFulfillTimeSec": {
            "type": "number",
            "description": "Estimated time in seconds for the cross-chain swap to be completed",
            "example": 300
          },
          "encodedRoute": {
            "type": "string",
            "description": "ABI-encoded route data for onchain intent execution",
            "example": "0x00000000000000000000000000000000000000000000000000000000000000202810ea6d0860ce5315ef2b62b1b580f2b4ef158b76a6ea8f8982600c130e55e70000000000000000000000000000000000000000000000000000000068e56fa2000000000000000000000000b5e58a8206473dc3ab9b8d4d3b0f84c0ba68f8b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000833589fcd6edb6e082dc7c32d4f71b54bda0291300000000000000000000000000000000000000000000000000000000004bd61000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a9059cbb0000000000000000000000002b2c52b1b63c4bfc7f16910a1734641d8e34de6200000000000000000000000000000000000000000000000000000000004bd61000000000000000000000000000000000000000000000000000000000"
          }
        },
        "required": [
          "intentExecutionType",
          "sourceChainID",
          "destinationChainID",
          "sourceToken",
          "destinationToken",
          "sourceAmount",
          "destinationAmount",
          "funder",
          "refundRecipient",
          "recipient",
          "fees",
          "deadline",
          "estimatedFulfillTimeSec",
          "encodedRoute"
        ]
      },
      "QuoteV3ResponseContractsDTO": {
        "type": "object",
        "properties": {
          "sourcePortal": {
            "type": "string",
            "description": "Contract address for the intent source (where intents are created and managed)",
            "example": "0x1234567890abcdef1234567890abcdef12345678"
          },
          "destinationPortal": {
            "type": "string",
            "description": "Contract address for the inbox (receives and processes cross-chain messages)",
            "example": "0x567890abcdef1234567890abcdef1234567890ab"
          },
          "prover": {
            "type": "string",
            "description": "Contract address for the prover (handles cross-chain proof verification)",
            "example": "0xabcdef1234567890abcdef1234567890abcdef12"
          }
        },
        "required": [
          "sourcePortal",
          "destinationPortal",
          "prover"
        ]
      },
      "SolverQuoteDataV2DTO": {
        "type": "object",
        "properties": {
          "quoteResponse": {
            "description": "Detailed quote information including tokens, amounts, fees, and timing",
            "allOf": [
              {
                "$ref": "#/components/schemas/QuoteResponseDataV3DTO"
              }
            ]
          },
          "contracts": {
            "description": "Contract addresses required for executing this cross-chain swap",
            "allOf": [
              {
                "$ref": "#/components/schemas/QuoteV3ResponseContractsDTO"
              }
            ]
          }
        },
        "required": [
          "contracts"
        ]
      },
      "SolverQuoteV2ResponseDTO": {
        "type": "object",
        "properties": {
          "quoteID": {
            "type": "string"
          },
          "solverID": {
            "type": "string"
          },
          "receiveSignedIntentUrl": {
            "type": "string"
          },
          "quoteData": {
            "$ref": "#/components/schemas/SolverQuoteDataV2DTO"
          }
        },
        "required": [
          "quoteID",
          "solverID",
          "receiveSignedIntentUrl",
          "quoteData"
        ]
      },
      "QuotesResponseV3DTO": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Array of solver quote responses",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SolverQuoteV2ResponseDTO"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "SingleRequestV3DTO": {
        "type": "object",
        "properties": {
          "dAppID": {
            "type": "string",
            "description": "Unique identifier for the client application making the request",
            "example": "my-dapp"
          },
          "quoteRequest": {
            "description": "Cross-chain token swap request details including source/destination tokens and addresses",
            "allOf": [
              {
                "$ref": "#/components/schemas/QuoteRequestV3DTO"
              }
            ]
          },
          "contracts": {
            "description": "Optional contract addresses to use for the cross-chain swap (will use defaults if not specified)",
            "allOf": [
              {
                "$ref": "#/components/schemas/QuotesV3RequestContractsDTO"
              }
            ]
          }
        },
        "required": [
          "dAppID",
          "quoteRequest"
        ]
      },
      "QuoteResponseV3DTO": {
        "type": "object",
        "properties": {
          "quoteResponse": {
            "description": "Detailed quote information including tokens, amounts, fees, and timing",
            "allOf": [
              {
                "$ref": "#/components/schemas/QuoteResponseDataV3DTO"
              }
            ]
          },
          "contracts": {
            "description": "Contract addresses required for executing this cross-chain swap",
            "allOf": [
              {
                "$ref": "#/components/schemas/QuoteV3ResponseContractsDTO"
              }
            ]
          }
        },
        "required": [
          "contracts"
        ]
      },
      "SingleResponseV3DTO": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Quote response data",
            "allOf": [
              {
                "$ref": "#/components/schemas/QuoteResponseV3DTO"
              }
            ]
          }
        },
        "required": [
          "data"
        ]
      },
      "GaslessIntentDataV3DTO": {
        "type": "object",
        "properties": {
          "permit3": {
            "description": "Permit3 signature data for multi-chain token approvals",
            "allOf": [
              {
                "$ref": "#/components/schemas/Permit3DTO"
              }
            ]
          },
          "allowPartial": {
            "type": "boolean",
            "description": "Whether to allow partial funding of the intent",
            "example": false,
            "default": false
          }
        },
        "required": [
          "permit3"
        ]
      },
      "InitiateGaslessIntentV3DTO": {
        "type": "object",
        "properties": {
          "intentGroupID": {
            "type": "string",
            "description": "Unique identifier of the group of intents being used",
            "example": "group:01234567-89ab-cdef-0123-456789abcdef"
          },
          "dAppID": {
            "type": "string",
            "description": "Identifier for the client application initiating the gasless intent",
            "example": "my-dapp"
          },
          "intentEntries": {
            "description": "Array of intent request entries",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GaslessIntentRequestIntentEntryDTO"
            }
          },
          "gaslessIntentData": {
            "description": "Gasless intent configuration containing permit signatures and execution parameters",
            "allOf": [
              {
                "$ref": "#/components/schemas/GaslessIntentDataV3DTO"
              }
            ]
          }
        },
        "required": [
          "intentGroupID",
          "dAppID",
          "intentEntries",
          "gaslessIntentData"
        ]
      },
      "GaslessIntentExecutionResponseEntryDTO": {
        "type": "object",
        "properties": {
          "chainID": {
            "type": "number",
            "description": "Chain ID where the gasless intent was executed",
            "example": 1
          },
          "quoteIDs": {
            "description": "Array of quote IDs associated with this execution",
            "example": [
              "quote_abc123def456",
              "quote_ghi789jkl012"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "transactionHash": {
            "type": "string",
            "description": "Transaction hash of the executed gasless intent",
            "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
          },
          "error": {
            "type": "object",
            "description": "Error details if the gasless intent execution failed",
            "example": {
              "message": "Insufficient balance",
              "code": "INSUFFICIENT_FUNDS"
            }
          }
        },
        "required": [
          "chainID",
          "quoteIDs",
          "transactionHash"
        ]
      },
      "GaslessIntentExecutionResponseDTO": {
        "type": "object",
        "properties": {
          "successes": {
            "description": "Array of successfully initiated gasless intent executions",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GaslessIntentExecutionResponseEntryDTO"
            }
          },
          "failures": {
            "description": "Array of failed gasless intent execution attempts with error details",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GaslessIntentExecutionResponseEntryDTO"
            }
          }
        },
        "required": [
          "successes",
          "failures"
        ]
      },
      "InitiateGaslessIntentResponseV3DTO": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Gasless intent execution response data",
            "allOf": [
              {
                "$ref": "#/components/schemas/GaslessIntentExecutionResponseDTO"
              }
            ]
          }
        },
        "required": [
          "data"
        ]
      },
      "CrossChainRoutesConfigDTO": {
        "type": "object",
        "properties": {}
      },
      "CrossChainRoutesDTO": {
        "type": "object",
        "properties": {
          "useTokenEnums": {
            "type": "boolean",
            "description": "Whether to use token enum identifiers instead of contract addresses for token identification",
            "example": false,
            "default": false
          },
          "crossChainRoutesConfig": {
            "description": "Configuration object mapping source chain IDs to their supported destination chains and tokens. Structure: { [sourceChainId]: { [destChainId]: [{ send: tokenAddress, receive: [tokenAddresses] }] } }",
            "example": {
              "1": {
                "137": [
                  {
                    "send": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
                    "receive": [
                      "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"
                    ]
                  }
                ]
              },
              "137": {
                "1": [
                  {
                    "send": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
                    "receive": [
                      "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
                    ]
                  }
                ]
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/CrossChainRoutesConfigDTO"
              }
            ]
          }
        },
        "required": [
          "crossChainRoutesConfig"
        ]
      },
      "AdminAddRegisteredSolverDTO": {
        "type": "object",
        "properties": {
          "intentExecutionTypes": {
            "type": "array",
            "description": "Array of intent execution types that this solver supports",
            "example": [
              "SELF_PUBLISH",
              "GASLESS"
            ],
            "items": {
              "type": "string",
              "enum": [
                "SELF_PUBLISH",
                "GASLESS"
              ]
            }
          },
          "supportsNativeTransfers": {
            "type": "boolean",
            "description": "Whether the solver supports native token transfers (ETH, MATIC, etc.) without wrapping",
            "example": true
          },
          "crossChainRoutes": {
            "description": "Configuration of cross-chain routes that this solver supports, organized by source and destination chains",
            "allOf": [
              {
                "$ref": "#/components/schemas/CrossChainRoutesDTO"
              }
            ]
          },
          "quotesUrl": {
            "type": "string",
            "description": "V1 endpoint URL for retrieving quotes from the solver",
            "example": "https://solver.example.com/api/v1/quotes"
          },
          "reverseQuotesUrl": {
            "type": "string",
            "description": "V1 endpoint URL for retrieving reverse quotes (specify output, get input quotes)",
            "example": "https://solver.example.com/api/v1/quotes/reverse"
          },
          "quotesV2Url": {
            "type": "string",
            "description": "V2 endpoint URL for retrieving quotes from the solver with enhanced parameters",
            "example": "https://solver.example.com/api/v2/quotes"
          },
          "reverseQuotesV2Url": {
            "type": "string",
            "description": "V2 endpoint URL for retrieving reverse quotes with enhanced parameters",
            "example": "https://solver.example.com/api/v2/quotes/reverse"
          },
          "receiveSignedIntentUrl": {
            "type": "string",
            "description": "V1 endpoint URL where the solver receives signed intents for execution",
            "example": "https://solver.example.com/api/v1/intents"
          },
          "receiveSignedIntentV2Url": {
            "type": "string",
            "description": "V2 endpoint URL where the solver receives signed intents with enhanced parameters",
            "example": "https://solver.example.com/api/v2/intents"
          },
          "gaslessIntentTransactionDataUrl": {
            "type": "string",
            "description": "Endpoint URL for retrieving transaction data for gasless intent execution",
            "example": "https://solver.example.com/api/v1/gasless/transaction-data"
          },
          "useSolverDataFormat": {
            "type": "boolean",
            "description": "Whether to use solver-specific data format (true) or generic format (false)",
            "example": true,
            "default": true
          },
          "solverID": {
            "type": "string"
          }
        },
        "required": [
          "intentExecutionTypes",
          "crossChainRoutes",
          "quotesUrl",
          "receiveSignedIntentUrl",
          "solverID"
        ]
      },
      "AdminUpdateRegisteredSolverDTO": {
        "type": "object",
        "properties": {
          "intentExecutionTypes": {
            "type": "array",
            "description": "Array of intent execution types that this solver supports",
            "example": [
              "SELF_PUBLISH",
              "GASLESS"
            ],
            "items": {
              "type": "string",
              "enum": [
                "SELF_PUBLISH",
                "GASLESS"
              ]
            }
          },
          "crossChainRoutes": {
            "description": "Configuration of cross-chain routes that this solver supports, organized by source and destination chains",
            "allOf": [
              {
                "$ref": "#/components/schemas/CrossChainRoutesDTO"
              }
            ]
          },
          "quotesUrl": {
            "type": "string",
            "description": "V1 endpoint URL for retrieving quotes from the solver",
            "example": "https://solver.example.com/api/v1/quotes"
          },
          "quotesV2Url": {
            "type": "string",
            "description": "V2 endpoint URL for retrieving quotes from the solver with enhanced parameters",
            "example": "https://solver.example.com/api/v2/quotes"
          },
          "reverseQuotesUrl": {
            "type": "string",
            "description": "V1 endpoint URL for retrieving reverse quotes (specify output, get input quotes)",
            "example": "https://solver.example.com/api/v1/quotes/reverse"
          },
          "receiveSignedIntentUrl": {
            "type": "string",
            "description": "V1 endpoint URL where the solver receives signed intents for execution",
            "example": "https://solver.example.com/api/v1/intents"
          },
          "useSolverDataFormat": {
            "type": "boolean",
            "description": "Whether to use solver-specific data format (true) or generic format (false)",
            "example": true
          },
          "solverID": {
            "type": "string"
          }
        },
        "required": [
          "solverID"
        ]
      },
      "AddRegisteredSolverDTO": {
        "type": "object",
        "properties": {
          "intentExecutionTypes": {
            "type": "array",
            "description": "Array of intent execution types that this solver supports",
            "example": [
              "SELF_PUBLISH",
              "GASLESS"
            ],
            "items": {
              "type": "string",
              "enum": [
                "SELF_PUBLISH",
                "GASLESS"
              ]
            }
          },
          "supportsNativeTransfers": {
            "type": "boolean",
            "description": "Whether the solver supports native token transfers (ETH, MATIC, etc.) without wrapping",
            "example": true
          },
          "crossChainRoutes": {
            "description": "Configuration of cross-chain routes that this solver supports, organized by source and destination chains",
            "allOf": [
              {
                "$ref": "#/components/schemas/CrossChainRoutesDTO"
              }
            ]
          },
          "quotesUrl": {
            "type": "string",
            "description": "V1 endpoint URL for retrieving quotes from the solver",
            "example": "https://solver.example.com/api/v1/quotes"
          },
          "reverseQuotesUrl": {
            "type": "string",
            "description": "V1 endpoint URL for retrieving reverse quotes (specify output, get input quotes)",
            "example": "https://solver.example.com/api/v1/quotes/reverse"
          },
          "quotesV2Url": {
            "type": "string",
            "description": "V2 endpoint URL for retrieving quotes from the solver with enhanced parameters",
            "example": "https://solver.example.com/api/v2/quotes"
          },
          "reverseQuotesV2Url": {
            "type": "string",
            "description": "V2 endpoint URL for retrieving reverse quotes with enhanced parameters",
            "example": "https://solver.example.com/api/v2/quotes/reverse"
          },
          "receiveSignedIntentUrl": {
            "type": "string",
            "description": "V1 endpoint URL where the solver receives signed intents for execution",
            "example": "https://solver.example.com/api/v1/intents"
          },
          "receiveSignedIntentV2Url": {
            "type": "string",
            "description": "V2 endpoint URL where the solver receives signed intents with enhanced parameters",
            "example": "https://solver.example.com/api/v2/intents"
          },
          "gaslessIntentTransactionDataUrl": {
            "type": "string",
            "description": "Endpoint URL for retrieving transaction data for gasless intent execution",
            "example": "https://solver.example.com/api/v1/gasless/transaction-data"
          },
          "useSolverDataFormat": {
            "type": "boolean",
            "description": "Whether to use solver-specific data format (true) or generic format (false)",
            "example": true,
            "default": true
          }
        },
        "required": [
          "intentExecutionTypes",
          "crossChainRoutes",
          "quotesUrl",
          "receiveSignedIntentUrl"
        ]
      },
      "UpdateRegisteredSolverDTO": {
        "type": "object",
        "properties": {
          "intentExecutionTypes": {
            "type": "array",
            "description": "Array of intent execution types that this solver supports",
            "example": [
              "SELF_PUBLISH",
              "GASLESS"
            ],
            "items": {
              "type": "string",
              "enum": [
                "SELF_PUBLISH",
                "GASLESS"
              ]
            }
          },
          "crossChainRoutes": {
            "description": "Configuration of cross-chain routes that this solver supports, organized by source and destination chains",
            "allOf": [
              {
                "$ref": "#/components/schemas/CrossChainRoutesDTO"
              }
            ]
          },
          "quotesUrl": {
            "type": "string",
            "description": "V1 endpoint URL for retrieving quotes from the solver",
            "example": "https://solver.example.com/api/v1/quotes"
          },
          "quotesV2Url": {
            "type": "string",
            "description": "V2 endpoint URL for retrieving quotes from the solver with enhanced parameters",
            "example": "https://solver.example.com/api/v2/quotes"
          },
          "reverseQuotesUrl": {
            "type": "string",
            "description": "V1 endpoint URL for retrieving reverse quotes (specify output, get input quotes)",
            "example": "https://solver.example.com/api/v1/quotes/reverse"
          },
          "receiveSignedIntentUrl": {
            "type": "string",
            "description": "V1 endpoint URL where the solver receives signed intents for execution",
            "example": "https://solver.example.com/api/v1/intents"
          },
          "useSolverDataFormat": {
            "type": "boolean",
            "description": "Whether to use solver-specific data format (true) or generic format (false)",
            "example": true
          }
        }
      },
      "V1IntentDataDTO": {
        "type": "object",
        "properties": {
          "routeData": {
            "$ref": "#/components/schemas/RouteDataDTO"
          },
          "rewardData": {
            "$ref": "#/components/schemas/RewardDataDTO"
          }
        },
        "required": [
          "routeData",
          "rewardData"
        ]
      },
      "V1GetQuotesDTO": {
        "type": "object",
        "properties": {
          "dAppID": {
            "type": "string",
            "description": "Unique identifier for the dApp making the quote request",
            "example": "my-dapp"
          },
          "intentData": {
            "description": "Intent data containing route and reward information for the quote request",
            "allOf": [
              {
                "$ref": "#/components/schemas/V1IntentDataDTO"
              }
            ]
          }
        },
        "required": [
          "dAppID",
          "intentData"
        ]
      },
      "V1QuoteDataDTO": {
        "type": "object",
        "properties": {
          "tokens": {
            "description": "Array of ERC20 tokens and amounts required for this quote",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TokenAmountDataDTO"
            }
          },
          "nativeValue": {
            "type": "string",
            "description": "Native token value required for this quote (in wei)",
            "example": "0"
          },
          "expiryTime": {
            "type": "string",
            "description": "Unix timestamp when this quote expires",
            "example": "1699123456"
          },
          "estimatedFulfillTimeSec": {
            "type": "number",
            "description": "Estimated time in seconds for the intent to be fulfilled after submission",
            "example": 30
          }
        },
        "required": [
          "tokens",
          "expiryTime",
          "estimatedFulfillTimeSec"
        ]
      },
      "V1QuoteResponseDTO": {
        "type": "object",
        "properties": {
          "quoteData": {
            "description": "Quote data containing the pricing and execution details for this quote",
            "allOf": [
              {
                "$ref": "#/components/schemas/V1QuoteDataDTO"
              }
            ]
          }
        },
        "required": [
          "quoteData"
        ]
      },
      "V1GetQuotesResponseDTO": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Array of quote responses from solvers for the v1 quotes endpoint",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/V1QuoteResponseDTO"
            }
          }
        },
        "required": [
          "data"
        ]
      }
    }
  }
}