openapi: 3.0.0 info: version: 1.0.0 title: Angle Allowances Integrators API description: API to track the Angle Protocol state servers: - url: https://api.angle.money tags: - name: Integrators paths: /v1/integrators/payload/deposit: get: summary: Get deposit payload description: Generate a payload for depositing tokens into Angle protocol strategies. tags: - Integrators parameters: - $ref: '#/components/parameters/requiredChainId' - name: inputTokenAddress in: query description: The address of the input token. required: true schema: type: string example: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' - name: inputTokenAmount in: query description: The amount of the input token to deposit using token decimals. For example, 1 USDC would be 1000000 (6 decimals). required: true schema: type: number example: 1000000 - name: strategyAddress in: query description: The address of the strategy contract. required: true schema: type: string example: '0xC0077E921C30c39cDD8b693E25Af572C10E82a05' - name: userAddress in: query description: The address of the user performing the transaction. required: true schema: type: string example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' - name: slippage in: query description: The maximum allowed slippage as a percentage value (i.e. 0.1 means 0.1%). required: true schema: type: number example: 0.1 - name: ipAddress in: query description: The IP address of the user. required: false schema: type: string example: 192.168.1.100 responses: '200': description: The deposit payload information. content: application/json: schema: type: object /v1/integrators/payload/withdraw: get: summary: Get withdraw payload description: Generate a payload for withdrawing tokens from Angle protocol strategies. tags: - Integrators parameters: - $ref: '#/components/parameters/requiredChainId' - name: outputTokenAddress in: query description: The address of the output token (the token that the user wants to receive after the withdraw from strategy). required: true schema: type: string example: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' - name: inputTokenAmount in: query description: The amount of the input token to withdraw. This is the amount of the strategy token that the user wants to withdraw (with 18 decimals). For example, 1 stUSDStrat would be 1000000000000000000 (18 decimals). required: true schema: type: number example: 1000000000000000000 - name: strategyAddress in: query description: The address of the strategy contract. required: true schema: type: string example: '0xC0077E921C30c39cDD8b693E25Af572C10E82a05' - name: userAddress in: query description: The address of the user performing the transaction. required: true schema: type: string example: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' - name: slippage in: query description: The maximum allowed slippage as a percentage value (i.e. 0.1 means 0.1%). required: true schema: type: number example: 0.1 - name: ipAddress in: query description: The IP address of the user. required: false schema: type: string example: 192.168.1.100 responses: '200': description: The withdraw payload information. content: application/json: schema: type: object /v1/integrators/vaults/positions: get: summary: Get vault positions description: Retrieve positions data for a specific vault strategy. Position are ordered by the most recent first. tags: - Integrators parameters: - in: query name: chainId required: true schema: type: number enum: - 42161 description: The chain ID (only Arbitrum is supported) - name: strategyAddress in: query description: The address of the strategy contract. required: true schema: type: string example: '0xC0077E921C30c39cDD8b693E25Af572C10E82a05' - in: query name: first required: false schema: type: number minimum: 1 description: Number of items to retrieve - in: query name: skip required: false schema: type: number minimum: 0 description: Number of items to skip responses: '200': description: Successful response with vault positions data content: application/json: schema: type: object /v1/integrators/vaults/user/positions: get: summary: Get user's vault positions description: Retrieve position data for a specific user in a vault strategy. tags: - Integrators parameters: - in: query name: chainId schema: type: integer enum: - 42161 description: Chain ID (optional, currently only Arbitrum is supported) - in: query name: first schema: type: integer minimum: 1 default: 5 description: Number of results to return (optional) - in: query name: includeOperations schema: type: boolean default: false description: Whether to include operations (deposits, withdrawals) in the response (optional) - in: query name: skip schema: type: integer minimum: 0 description: Number of results to skip (optional) - in: query name: strategyAddress schema: type: string description: Address of the strategy (optional) - in: query name: userAddress schema: type: string required: true description: Address of the user responses: '200': description: Successful response with user's vault positions data content: application/json: schema: type: object /v1/integrators/vaults/positions/historical: get: summary: Get historical vault positions description: Retrieve historical position data for a specific vault strategy. Position are ordered by the most recent first. tags: - Integrators parameters: - in: query name: chainId required: true schema: type: number enum: - 42161 description: The chain ID (only Arbitrum is supported) - name: strategyAddress in: query description: The address of the strategy contract. required: true schema: type: string example: '0xC0077E921C30c39cDD8b693E25Af572C10E82a05' - in: query name: first required: false schema: type: number minimum: 1 description: Number of items to retrieve - in: query name: skip required: false schema: type: number minimum: 0 description: Number of items to skip responses: '200': description: Successful response with historical vault positions data content: application/json: schema: type: object /v1/integrators/vaults/operations/historical: get: summary: Get historical vault operations description: Retrieve historical operation data for a specific vault strategy. tags: - Integrators parameters: - in: query name: chainId required: true schema: type: number enum: - 42161 description: The chain ID (only Arbitrum is supported) - name: strategyAddress in: query description: The address of the strategy contract. required: true schema: type: string example: '0xC0077E921C30c39cDD8b693E25Af572C10E82a05' - in: query name: userAddresses required: false schema: oneOf: - type: string - type: array items: type: string description: User address or array of user addresses - in: query name: firstDeposits required: false schema: type: number minimum: 1 description: Number of deposit items to retrieve - in: query name: skipDeposits required: false schema: type: number minimum: 0 description: Number of deposit items to skip - in: query name: firstWithdrawals required: false schema: type: number minimum: 1 description: Number of withdrawal items to retrieve - in: query name: skipWithdrawals required: false schema: type: number minimum: 0 description: Number of withdrawal items to skip responses: '200': description: Successful response with historical vault operations data content: application/json: schema: type: object components: parameters: requiredChainId: in: query name: chainId description: Chain requested required: true schema: type: integer examples: Ethereum: value: 1 Polygon: value: 137 Optimism: value: 10 Arbitrum: value: 42161 Avalanche: value: 43114 securitySchemes: BasicAuth: type: http scheme: basic