openapi: 3.0.0 info: title: Blade Deposit API description: Documentation for interacting with the Blade API version: 2.0.0 contact: email: aggregators@shipyardsoftware.org name: Blade API Support servers: - url: https://blade-api.sushi.com description: Blade API Production Server security: - ApiKeyAuth: [] tags: - name: Deposit description: Liquidity pool deposit operations paths: /rfq/v2/deposit: post: tags: - Deposit summary: Deposit assets into liquidity pool description: This endpoint allows users to deposit assets into a liquidity pool by submitting the required details, such as the pool contract address and the amount of assets to be deposited. This process is crucial for users who want to increase the liquidity of the pool and potentially earn rewards or fees. Use this endpoint to securely and efficiently add assets to the pool, contributing to the stability and performance of the ecosystem. operationId: depositAssets requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DepositRequest' examples: multiple-assets-deposit: summary: Deposit Multiple Assets description: Example of depositing multiple assets into a liquidity pool value: deposit: '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1': '2000000000000000000' sender: '0x54298A80a06068587E13b9dC1AC090259A98D5cD' days_to_lock: 10 chain_id: 10 single_asset: false pool_address: '0x5130f6cE257B8F9bF7fac0A0b519Bd588120ed40' katana-deposit: summary: Katana Pool Deposit description: Example of depositing into Katana pool (uses lock_time instead of days_to_lock) value: deposit: '0x0913DA6Da4b42f538B445599b46Bb4622342Cf52': '2000000000000000000' sender: '0x54298A80a06068587E13b9dC1AC090259A98D5cD' lock_time: 720 chain_id: 747474 single_asset: false pool_address: '0x989E8F547FbCa65f4FB0af41e50e4058e6c68166' single-asset-with-pool-tokens: summary: Deposit With Specific output pool token description: If you want to deposit and specify how many pool tokens receive. value: sender: '0x54298A80a06068587E13b9dC1AC090259A98D5cD' days_to_lock: 10 chain_id: 10 single_asset: true output_pool_tokens: 29438108002416884 single_token: '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1' pool_address: '0x5130f6cE257B8F9bF7fac0A0b519Bd588120ed40' responses: '200': description: Deposit processed successfully content: application/json: schema: $ref: '#/components/schemas/DepositResponse' examples: multiple-assets-response: summary: Multiple Assets Deposit Response description: Response for depositing multiple assets into a liquidity pool value: sender: '0x54298A80a06068587E13b9dC1AC090259A98D5cD' n_days: 10 pool_tokens: '29438108002416884' good_until: 1729657240 signature: v: 28 r: '0x7c37b52021ea25ed38cbaf4def111eb9b5e6f0c1dc6c34ded53b9824c40febbf' s: '0x66ce09126a23cadf277877e556f2d6c5bc3ad1e7080368a13bb0349208d30396' clipper_exchange_address: '0x5130f6cE257B8F9bF7fac0A0b519Bd588120ed40' deposit_amounts: - '0' - '0' - '0' - '0' - '2000000000000000000' - '0' - '0' katana-response: summary: Katana Pool Deposit Response description: Response for depositing into Katana pool with extra_data and lock_time value: sender: '0x54298A80a06068587E13b9dC1AC090259A98D5cD' pool_tokens: '1911697202535426211354545867456512' good_until: 1754952442 signature: v: 27 r: '0xa4be6ab4120b2d55e383f9489e317c05911097cf38b92f8dffe393fed23c07ec' s: '0x66d48deb50124d9e4d20c5f6ce570fd930f6bb8a1cd67bae68daef5fbf89112c' clipper_exchange_address: '0x989E8F547FbCa65f4FB0af41e50e4058e6c68166' extra_data: '0x000000000000000000000000000000000000000098b593221fc2d138f0a669c5000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000e475704f93603000000000000000000000000000000000000000000000000019257a485f5ec7000000' deposit_amounts: - '0' - '2000000000000000000' lock_time: 720 single-asset-response: summary: Deposit With Specific output pool token Response description: Response for deposit with specific pool tokens specified value: sender: '0x54298A80a06068587E13b9dC1AC090259A98D5cD' n_days: 10 pool_tokens: '29438108002416884' good_until: 1729657750 signature: v: 28 r: '0x8abcd885e7c151158e21288124b6cac461088ecd9ac07938752667277de2f581' s: '0x4716077b4ee2eaf0668d0c219c507581efa61c287e1bdfe32597fb5d19609641' clipper_exchange_address: '0x5130f6cE257B8F9bF7fac0A0b519Bd588120ed40' amount: '1998512049104122112' token: '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/InvalidInputData' '500': $ref: '#/components/responses/InternalServerError' '503': $ref: '#/components/responses/ExternalServiceError' components: responses: ExternalServiceError: description: External Service Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' InternalServerError: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' InvalidInputData: description: Invalid input data content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: errorMessage: Invalid input data errorType: BadData errorCode: 422 data: - type: missing loc: - chain_id msg: Field required input: input_amount: '18000' input_asset_symbol: ETH output_asset_symbol: WBTC time_in_seconds: 60 url: https://errors.pydantic.dev/2.1/v/missing Unauthorized: description: Unauthorized - Missing or invalid API key. Ensure you include a valid `x-api-key` header. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: errorMessage: 'Auth: Access is forbidden' errorType: Forbidden BadRequest: description: Bad Request - Invalid data in the request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' Forbidden: description: Forbidden Error - Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' schemas: DepositResponse: type: object properties: sender: type: string description: The address of the user who initiated the deposit transaction. n_days: type: integer description: The number of days the assets will be locked in the pool, matching the `days_to_lock` from the request. Supported for all pools except Katana. For katana, returns `lock_time`. lock_time: type: integer description: The number of minutes the assets will be locked in the pool, matching the `lock_time` from the request. Only supported by the Katana pool. For other pools, returns `n_days`. good_until: type: integer description: The timestamp indicating how long the deposit details, including the signature, are valid. pool_tokens: type: string description: The total number of pool tokens that will be given to the user as a result of the deposit. signature: $ref: '#/components/schemas/EIP2098Signature' clipper_exchange_address: type: string description: The address of the Blade exchange contract where the deposit is being made. deposit_amounts: type: array items: type: string description: A list of the amounts to be deposited for each asset. If an asset was not provided in the request, the amount returned will be 0. For example, if 3 assets were provided in a 4-asset pool, the response will include an amount of 0 for the missing asset. For single asset deposit this field is not present amount: type: string description: (Single-asset deposits only) The total amount of the single asset that is being deposited into the pool. token: type: string description: (Single-asset deposits only) The address of the token that is being deposited into the pool. extra_data: type: string description: Encode LP token price and prices list into ABI-compatible bytes. Only supported by the Katana pool. required: - sender - good_until - pool_tokens - signature - clipper_exchange_address EIP2098Signature: type: object description: A EIP 2098 'short signature' representation for the signature from the Blade Exchange server properties: v: type: integer description: Recovery identifier r: type: string description: ECDSA signature r s: type: string description: ECDSA signature s required: - v - r - s ErrorResponse: type: object properties: errorMessage: type: string description: Description of the error errorType: type: string description: Type of the error errorCode: type: integer description: Error code (returned only when we have a blade code for the error) data: type: array items: type: object description: Additional error data (returned only when the input data is invalid) required: - errorMessage - errorType DepositRequest: type: object properties: sender: type: string description: The address of the user initiating the deposit transaction. example: '0x960376b3F62f41E7e66809a05D1C5afdFD60A0E9' pool_address: type: string description: The address of the pool example: '0x989E8F547FbCa65f4FB0af41e50e4058e6c68166' days_to_lock: type: integer description: Number of days to lock the deposit in the liquidity pool. Required for all pools except Katana, which uses `lock_time` instead. example: 5 lock_time: type: integer description: Number of minutes to lock the deposit in the liquidity pool. Only supported by the Katana pool. For other pools, use `days_to_lock`. example: 5 deposit: type: object additionalProperties: type: string description: An object containing the asset address and the amount to deposit as a string. The amount should be in its machine-readable form. This parameter is required only if `single_asset` is false. example: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599': '400000000' '0x6B175474E89094C44Da98b954EedeAC495271d0F': '2000000000000000000' '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2': '1000000000000000000' '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48': '2000000' chain_id: type: integer description: The unique identifier of the blockchain network where the deposit will be made. example: 1 output_pool_tokens: type: integer description: The total number of pool tokens the user wants to receive. It is only valid for single-asset deposits. example: 10000 single_asset: type: boolean description: A boolean that indicates whether only one asset is being deposited. default: false example: true single_token: type: string description: Required only when `single_asset` is true. This represents the address of the single asset being deposited. example: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' required: - sender - pool_address - chain_id securitySchemes: ApiKeyAuth: type: apiKey in: header name: x-api-key description: API key required for all endpoints. In order to prevent abuse on the API we implement rate limits on the requests, to overcome these limits as an aggregator get in contact with the [support team](mailto:aggregators@shipyardsoftware.org) to get API credentials.