Pendle Limit Orders API

The Limit Orders API from Pendle — 7 operation(s) for limit orders.

OpenAPI Specification

pendle-limit-orders-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Pendle V2 API Docs Assets Limit Orders API
  description: "\n## Terms used in the documentation/API\n\nBelow are some terms used in the documentation/API:\n\n- Pendle Assets/Tokens: PT, YT, LP, SY\n- Non-Pendle Assets: other tokens that are not Pendle assets, such as USDC, USDT, DAI, etc.\n- Asset ID/Token Id: Is the combination of chain id and token address, e.g. 1-0x5fe30ac5cb1abb0e44cdffb2916c254aeb368650\n- Computing unit: Cost of an API call, this is use to rate limit the API calls. More on it at [our document](https://docs.pendle.finance/pendle-v2/Developers/Backend/ApiOverview#rate-limiting)\n- APY/APR/ROI Format: All APY, APR, and ROI values are returned as decimals. For example, 0.5 means 50%, 0.05 means 5%, 1.2 means 120%\n- Percentage Change Format: All percentage change values (e.g., 24h changes) are returned as decimals. For example, 0.05 means 5% change\n- Logarithmic Values: Some fields like `lnImpliedRate` are natural logarithms. To get the actual rate, use e^(value)\n\n## Recommended way to fetch data\n\nWe have a lot of markets, if you call an API for each market, it will be very slow and you will likely get rate limited. Therefore, in some APIs we support fetch all data at once (example the get all markets data, get all assets data/prices), you could use that to fetch all data at once. They also support filter by asset id, type, so if you don't want to fetch, you can filter it down to the specific ones you want.\n\nFor detailed documentation, visit:\n\n[https://docs.pendle.finance/pendle-v2/Developers/Backend/ApiOverview](https://docs.pendle.finance/pendle-v2/Developers/Backend/ApiOverview)\n\n## Support\n\n- We have a telegram for developers to ask about the API at [https://t.me/peepo_the_engineer_bot](https://t.me/peepo_the_engineer_bot)\n- We have an announcement channel for API updates at [https://t.me/pendledevelopers](https://t.me/pendledevelopers), follow it to get the latest updates on the API.\n\n## FAQ\n\n- How to fetch prices for assets?\n  * Use [Get asset prices by IDs](#tag/assets/get/v1/prices/assets)\n\n- What if i want real time prices?\n  * Price in our systems are calculate every 15 seconds. However, if you want real time prices, use [Swapping price](#tag/sdk/get/v1/sdk/{chainId}/markets/{market}/swapping-prices), it return price for PT/YT when swapping with underlying token and vice versa, we don't have real time prices for other assets.\n\n- Can i use the SDK to get price, instead of using the `swapping-price` endpoint?\n  * **Don't use the SDK to get price**, we don't recommend it. SDK endpoints are designed for you to get the calldata for **sending transaction**, not for getting the price. Also, SDK endpoints are very costly and will get rate limited easily if you use it to get price of many tokens. \n\n- How to get token names, expiries, etc?\n  * Use [Get asset metadata by IDs](#tag/assets/get/v1/assets/all)\n\n- Do you have historical data, breakdown to minutes?\n  * No we don't, all historical data is aggregated to hourly/daily/weekly data.\n"
  version: '1.0'
  contact: {}
servers:
- url: http://127.0.0.1:9000
tags:
- name: Limit Orders
paths:
  /v2/limit-orders:
    get:
      description: "This endpoint is for analytics purpose, if you want to analyze the limit orders data, this endpoint return all the orders that have been made, including the ones that have been cancelled or fully filled. \n\nThe results could be very large, so each time we returns at most 1000 orders, you can use the resumeToken to fetch the next page. \n\nTo get limit order for filling, use the [Get limit orders to match by YT address​](#tag/limit-orders/get/v1/limit-orders/takers/limit-orders) endpoint!"
      operationId: LimitOrdersController_getAllLimitOrders
      parameters:
      - name: chainId
        required: false
        in: query
        description: Chain id to filter by, leave blank to fetch all chains.
        schema:
          type: number
      - name: limit
        required: false
        in: query
        description: Maximum number of results to return. The parameter is capped at 1000.
        schema:
          default: 100
          type: number
      - name: maker
        required: false
        in: query
        description: Maker address to filter orders by
        schema:
          type: string
      - name: yt
        required: false
        in: query
        description: Market address to filter orders by
        schema:
          type: string
      - name: timestamp_start
        required: false
        in: query
        schema:
          format: date-time
          type: string
      - name: timestamp_end
        required: false
        in: query
        schema:
          format: date-time
          type: string
      - name: resumeToken
        required: false
        in: query
        description: Resume token for pagination
        schema:
          type: string
      responses:
        '200':
          description: Returns limit orders with resume token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitOrdersV2Response'
      summary: Get all limit orders for analytics
      tags:
      - Limit Orders
      x-computing-unit: '3'
      x-retail-api-rank: 6969
  /v2/limit-orders/archived:
    get:
      description: 'This have the same interface and usecase as the endpoint above, but it returns the archived orders


        When an order is not fillable anymore, we **might** archive it to save storage space, to fetch it, use this endpoint.


        So to fetch full limit orders in history, using this and the endpoint above. Not all orders are archived, it depends on some conditions.'
      operationId: LimitOrdersController_getAllArchivedLimitOrders
      parameters:
      - name: chainId
        required: false
        in: query
        description: Chain id to filter by, leave blank to fetch all chains.
        schema:
          type: number
      - name: limit
        required: false
        in: query
        description: Maximum number of results to return. The parameter is capped at 1000.
        schema:
          default: 100
          type: number
      - name: maker
        required: false
        in: query
        description: Maker address to filter orders by
        schema:
          type: string
      - name: yt
        required: false
        in: query
        description: Market address to filter orders by
        schema:
          type: string
      - name: timestamp_start
        required: false
        in: query
        schema:
          format: date-time
          type: string
      - name: timestamp_end
        required: false
        in: query
        schema:
          format: date-time
          type: string
      - name: resumeToken
        required: false
        in: query
        description: Resume token for pagination
        schema:
          type: string
      responses:
        '200':
          description: Returns archived limit orders with resume token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitOrdersV2Response'
      summary: Get all archived limit orders for analytics
      tags:
      - Limit Orders
      x-computing-unit: '3'
      x-retail-api-rank: 6969
  /v1/limit-orders/makers/limit-orders:
    get:
      description: 'Returns the active and historical limit orders placed by a specific user in a market. Supports richer filtering than the analytics endpoint (e.g. by YT, status, market).


        A user can have at most 50 open orders per market, so pagination is typically unnecessary here.


        For full cross-user analytics with cursor-based pagination, use [Get all limit orders](#tag/limit-orders/get/v2/limit-orders) instead.'
      operationId: LimitOrdersController_getMakerLimitOrder
      parameters:
      - name: skip
        required: false
        in: query
        description: Number of results to skip. The parameter is capped at 1000.
        schema:
          default: 0
          type: number
      - name: limit
        required: false
        in: query
        description: Maximum number of results to return. The parameter is capped at 100.
        schema:
          default: 10
          type: number
      - name: chainId
        required: true
        in: query
        description: ChainId
        schema:
          type: number
      - name: maker
        required: true
        in: query
        description: Maker's address
        schema:
          type: string
      - name: yt
        required: false
        in: query
        description: Order's YT address
        schema:
          type: string
      - name: type
        required: false
        in: query
        description: 'LimitOrderType { 0 : TOKEN_FOR_PT, 1 : PT_FOR_TOKEN, 2 : TOKEN_FOR_YT, 3 : YT_FOR_TOKEN }'
        schema:
          enum:
          - 0
          - 1
          - 2
          - 3
          type: number
      - name: isActive
        required: false
        in: query
        description: isActive=true to get all maker's active orders, isActive=false otherwise and do not set isActive if you want to fetch all maker's orders
        schema:
          type: boolean
      responses:
        '201':
          description: Returns limit orders
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitOrdersResponse'
      summary: Get user limit orders in market
      tags:
      - Limit Orders
      x-computing-unit: '3'
      x-retail-api-rank: 6969
    post:
      description: 'Submit a signed limit order to the Pendle order book. Once created, the order is visible to takers and will be filled against incoming swaps at or better than the specified implied APY.


        Before calling this, generate the order payload via [Generate limit order data](#tag/limit-orders/post/v1/limit-orders/makers/generate-limit-order-data), sign it with your wallet, and include the signature in the request body.


        Common rejection reasons: the YT or market is not whitelisted for limit orders, the order has already expired, or the signature is invalid.'
      operationId: LimitOrdersController_createOrder
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateLimitOrderDto'
      responses:
        '201':
          description: Returns created limit order
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitOrderResponse'
        '400':
          description: Validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpErrorResponse'
        '422':
          description: Validation failed - unsupported token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpErrorResponse'
      summary: Create limit order
      tags:
      - Limit Orders
      x-computing-unit: '3'
      x-retail-api-rank: 1
  /v1/limit-orders/makers/generate-limit-order-data:
    post:
      description: 'Generate the EIP-712 typed data payload for a limit order. Sign the returned data with the maker''s private key, then submit the order via [Create limit order](#tag/limit-orders/post/v1/limit-orders/makers/limit-orders).


        The generated order specifies the YT address, direction (long or short yield), size, and implied APY target. The order remains valid until it is either fully filled, cancelled, or expired.'
      operationId: LimitOrdersController_generateLimitOrderData
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateLimitOrderDataDto'
      responses:
        '201':
          description: Return generated limit order data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateLimitOrderDataResponse'
        '400':
          description: Validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpErrorResponse'
      summary: Generate limit order data for signing
      tags:
      - Limit Orders
      x-computing-unit: '3'
      x-retail-api-rank: 2
  /v1/limit-orders/makers/generate-scaled-order-data:
    post:
      description: 'Generate a batch of limit orders spread across a price (implied APY) range for signing. Scaled orders distribute your total size across multiple price levels, providing better market depth than a single large order.


        Sign each generated order individually, then submit them via [Create limit order](#tag/limit-orders/post/v1/limit-orders/makers/limit-orders). Useful for market-making strategies.'
      operationId: LimitOrdersController_generateScaledLimitOrderData
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateScaledOrderDataDto'
      responses:
        '201':
          description: Return generated limit order data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateScaledOrderResponse'
      summary: Generate list of limit orders (scaled) for signing
      tags:
      - Limit Orders
      x-computing-unit: '3'
      x-retail-api-rank: 6969
  /v1/limit-orders/takers/limit-orders:
    get:
      description: 'Returns the best-matching active limit orders for a given YT address, sorted by implied APY for efficient taker fill selection.


        The response includes full order structs and maker signatures ready to pass directly to the Pendle limit order contract for on-chain settlement. Only active orders (unfilled, uncancelled, unexpired) are returned.


        For analytics and full order history (including filled/cancelled), use [Get all limit orders](#tag/limit-orders/get/v2/limit-orders) instead.'
      operationId: LimitOrdersController_getTakerLimitOrders
      parameters:
      - name: skip
        required: false
        in: query
        description: Number of results to skip. The parameter is capped at 1000.
        schema:
          default: 0
          type: number
      - name: limit
        required: false
        in: query
        description: Maximum number of results to return. The parameter is capped at 100.
        schema:
          default: 10
          type: number
      - name: chainId
        required: true
        in: query
        description: ChainId
        schema:
          type: number
      - name: yt
        required: true
        in: query
        description: Order's YT address
        schema:
          type: string
      - name: type
        required: true
        in: query
        description: 'LimitOrderType { 0 : TOKEN_FOR_PT, 1 : PT_FOR_TOKEN, 2 : TOKEN_FOR_YT, 3 : YT_FOR_TOKEN }'
        schema:
          enum:
          - 0
          - 1
          - 2
          - 3
          type: number
      - name: sortBy
        required: false
        in: query
        schema:
          enum:
          - Implied Rate
          type: string
      - name: sortOrder
        required: false
        in: query
        schema:
          enum:
          - asc
          - desc
          type: string
      responses:
        '200':
          description: Limit orders data for takers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitOrdersTakerResponse'
        '400':
          description: Validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpErrorResponse'
      summary: Get limit orders to match by YT address
      tags:
      - Limit Orders
      x-computing-unit: '5'
      x-retail-api-rank: 3
  /v2/limit-orders/book/{chainId}:
    get:
      description: 'Returns the consolidated order book for a market, aggregating both limit orders and AMM liquidity depth into a unified view.


        The book is split into two sides:

        - **longYieldEntries**: available liquidity for buying YT (long yield positions), ordered by ascending implied APY

        - **shortYieldEntries**: available liquidity for selling YT (short yield positions), ordered by descending implied APY


        Each entry shows the implied APY price level, combined limit order size, and AMM depth at that level.'
      operationId: LimitOrdersController_getLimitOrderBookV2
      parameters:
      - name: chainId
        required: true
        in: path
        schema:
          type: number
      - name: limit
        required: false
        in: query
        description: Maximum number of results to return. The parameter is capped at 200.
        schema:
          default: 10
          type: number
      - name: precisionDecimal
        required: true
        in: query
        description: 'Min: 0, Max: 3, returned impliedApy will have precision upto 10^{-precisionDecimal}%'
        schema:
          type: number
      - name: market
        required: true
        in: query
        description: Market address
        schema:
          type: string
      - name: includeAmm
        required: false
        in: query
        description: Include AMM orders in the order book
        schema:
          type: boolean
      responses:
        '200':
          description: Returns order book
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderBookV2Response'
      summary: Get order book v2
      tags:
      - Limit Orders
      x-computing-unit: '5'
      x-retail-api-rank: 3
components:
  schemas:
    HttpErrorResponse:
      type: object
      properties:
        message:
          type: string
        statusCode:
          type: number
        error:
          type: string
      required:
      - message
      - statusCode
      - error
    OrderFilledStatusResponse:
      type: object
      properties:
        netInputFromMaker:
          type: string
          description: BigInt string of netInputFromMaker, the unit is the same as making amount
        netOutputToMaker:
          type: string
          description: BigInt string of netOutputToMaker, the unit is SY if the order is PT_FOR_TOKEN or YT_FOR_TOKEN, otherwise, the unit it PT or YT depends on type of order
        feeAmount:
          type: string
          description: BigInt string of feeAmount, in SY
        notionalVolume:
          type: string
          description: BigInt string of notionalVolume, in SY
      required:
      - netInputFromMaker
      - netOutputToMaker
      - feeAmount
      - notionalVolume
    LimitOrdersTakerResponse:
      type: object
      properties:
        total:
          type: number
        limit:
          type: number
        skip:
          type: number
        results:
          type: array
          items:
            $ref: '#/components/schemas/LimitOrderTakerResponse'
      required:
      - total
      - limit
      - skip
      - results
    LimitOrdersV2Response:
      type: object
      properties:
        total:
          type: number
        limit:
          type: number
        results:
          type: array
          items:
            $ref: '#/components/schemas/LimitOrderResponse'
        resumeToken:
          type: string
      required:
      - total
      - limit
      - results
      - resumeToken
    OrderBookV2EntryResponse:
      type: object
      properties:
        impliedApy:
          type: number
          description: Order's implied apy, rounded to precision
        limitOrderSize:
          format: int64
          type: integer
          description: Bigint string of entry size, in PT/YT amounts to fill this entry
        ammSize:
          format: int64
          type: integer
          description: Bigint string of entry size, in AMM LP tokens (if applicable)
      required:
      - impliedApy
      - limitOrderSize
    GenerateScaledOrderResponse:
      type: object
      properties:
        orders:
          description: List of generated limit orders
          type: array
          items:
            $ref: '#/components/schemas/GenerateLimitOrderDataResponse'
      required:
      - orders
    CreateLimitOrderDto:
      type: object
      properties:
        chainId:
          type: number
          description: Chain Id
        signature:
          type: string
          description: Signature of order, signed by maker
        salt:
          type: string
          description: BigInt string of salt
        expiry:
          type: string
          description: BigInt string of expiry
        nonce:
          type: string
          description: BigInt string of nonce
        type:
          type: number
          enum:
          - 0
          - 1
          - 2
          - 3
          description: 'LimitOrderType { 0 : TOKEN_FOR_PT, 1 : PT_FOR_TOKEN, 2 : TOKEN_FOR_YT, 3 : YT_FOR_TOKEN }'
        token:
          type: string
          description: Token used by user to make order
        yt:
          type: string
          description: YT address
        maker:
          type: string
          description: Maker address
        receiver:
          type: string
          description: Receiver address
        makingAmount:
          type: string
          description: BigInt string of making amount
        lnImpliedRate:
          type: string
          description: BigInt string of lnImpliedRate
        failSafeRate:
          type: string
          description: BigInt string of failSafeRate
        permit:
          type: string
          description: Bytes string for permit
      required:
      - chainId
      - signature
      - salt
      - expiry
      - nonce
      - type
      - token
      - yt
      - maker
      - receiver
      - makingAmount
      - lnImpliedRate
      - failSafeRate
      - permit
    GenerateLimitOrderDataDto:
      type: object
      properties:
        chainId:
          type: number
          description: Chain Id
        YT:
          type: string
          description: YT address
        orderType:
          type: number
          enum:
          - 0
          - 1
          - 2
          - 3
          description: 'LimitOrderType { 0 : TOKEN_FOR_PT, 1 : PT_FOR_TOKEN, 2 : TOKEN_FOR_YT, 3 : YT_FOR_TOKEN }'
        token:
          type: string
          description: Input token if type is TOKEN_FOR_PT or TOKEN_FOR_YT, output token otherwise
        maker:
          type: string
          description: Maker address
        makingAmount:
          type: string
          description: BigInt string of making amount, the amount of token if the order is TOKEN_FOR_PT or TOKEN_FOR_YT, otherwise the amount of PT or YT
        impliedApy:
          type: number
          description: Implied APY of this limit order
        expiry:
          type: string
          description: Timestamp of order's expiry, in seconds
      required:
      - chainId
      - YT
      - orderType
      - token
      - maker
      - makingAmount
      - impliedApy
      - expiry
    LimitOrderResponse:
      type: object
      properties:
        id:
          type: string
          description: Hash of the order
        signature:
          type: string
          description: Signature of order, signed by maker
        chainId:
          type: number
          description: Chain id
        salt:
          type: string
          description: BigInt string of salt. Salt is a random generated number to distinguish between orders.Because of some technical reason, this number must be dividable by 12421
        expiry:
          type: string
          description: BigInt string of expiry, in second
        nonce:
          type: string
          description: BigInt string of nonce
        type:
          type: number
          enum:
          - 0
          - 1
          - 2
          - 3
          description: 'LimitOrderType { 0 : TOKEN_FOR_PT, 1 : PT_FOR_TOKEN, 2 : TOKEN_FOR_YT, 3 : YT_FOR_TOKEN }'
        token:
          type: string
          description: Token used by user to make order
        yt:
          type: string
          description: YT address
        maker:
          type: string
          description: Maker address
        receiver:
          type: string
          description: Receiver address
        makingAmount:
          type: string
          description: BigInt string of making amount, the amount of token if the order is TOKEN_FOR_PT or TOKEN_FOR_YT, otherwise the amount of PT or YT
        currentMakingAmount:
          type: string
          description: BigInt string of remaining making amount, the unit is the same as makingAmount
        lnImpliedRate:
          type: string
          description: BigInt string of lnImpliedRate. Natural logarithm of the implied rate
        failSafeRate:
          type: string
          description: BigInt string of failSafeRate
        permit:
          type: string
          description: Bytes string for permit
        orderFilledStatus:
          description: Order filled status
          allOf:
          - $ref: '#/components/schemas/OrderFilledStatusResponse'
        isActive:
          type: boolean
        isCanceled:
          type: boolean
        createdAt:
          format: date-time
          type: string
        orderState:
          description: Order state
          allOf:
          - $ref: '#/components/schemas/OrderStateResponse'
        fullyExecutedTimestamp:
          format: date-time
          type: string
          description: Fully filled timestamp
        canceledTimestamp:
          format: date-time
          type: string
          description: Canceled timestamp
        latestEventTimestamp:
          format: date-time
          type: string
          description: Timestamp of latest event
        sy:
          type: string
          description: SY address
        pt:
          type: string
          description: PT address
        makerBalance:
          type: string
          description: Min(maker balance, maker allowance). How much token the maker has available to use for this order
        failedMintSy:
          type: boolean
          description: Simulate result of the order to mint sy
        failedMintSyReason:
          type: string
          description: Error reason of the order to mint sy
        orderBookBalance:
          type: string
          description: Bigint string of amount shown on order book
        makingToken:
          type: string
          description: Making token address
        takingToken:
          type: string
          description: Taking token address
        status:
          type: string
          enum:
          - FILLABLE
          - PARTIAL_FILLABLE
          - FAILED_TRANSFER_TOKEN
          - EMPTY_MAKER_BALANCE
          - CANCELLED
          - FULLY_FILLED
          - EXPIRED
          description: LimitOrderStatus
      required:
      - id
      - signature
      - chainId
      - salt
      - expiry
      - nonce
      - type
      - token
      - yt
      - maker
      - receiver
      - makingAmount
      - currentMakingAmount
      - lnImpliedRate
      - failSafeRate
      - permit
      - orderFilledStatus
      - isActive
      - isCanceled
      - createdAt
      - sy
      - pt
      - makerBalance
      - failedMintSy
      - failedMintSyReason
      - orderBookBalance
      - makingToken
      - takingToken
      - status
    OrderBookV2Response:
      type: object
      properties:
        longYieldEntries:
          type: array
          items:
            $ref: '#/components/schemas/OrderBookV2EntryResponse'
        shortYieldEntries:
          type: array
          items:
            $ref: '#/components/schemas/OrderBookV2EntryResponse'
      required:
      - longYieldEntries
      - shortYieldEntries
    LimitOrdersResponse:
      type: object
      properties:
        total:
          type: number
        limit:
          type: number
        skip:
          type: number
        results:
          type: array
          items:
            $ref: '#/components/schemas/LimitOrderResponse'
      required:
      - total
      - limit
      - skip
      - results
    GenerateScaledOrderDataDto:
      type: object
      properties:
        chainId:
          type: number
          description: Chain Id
        YT:
          type: string
          description: YT address
        orderType:
          type: number
          enum:
          - 0
          - 1
          - 2
          - 3
          description: 'LimitOrderType { 0 : TOKEN_FOR_PT, 1 : PT_FOR_TOKEN, 2 : TOKEN_FOR_YT, 3 : YT_FOR_TOKEN }'
        token:
          type: string
          description: Input token if type is TOKEN_FOR_PT or TOKEN_FOR_YT, output token otherwise
        maker:
          type: string
          description: Maker address
        makingAmount:
          type: string
          description: BigInt string of making amount, the amount of token if the order is TOKEN_FOR_PT or TOKEN_FOR_YT, otherwise the amount of PT or YT
        lowerImpliedApy:
          type: number
          description: Lower implied APY of this scaled order
        upperImpliedApy:
          type: number
          description: Upper implied APY of this scaled order
        orderCount:
          type: number
          description: Upper implied APY of this scaled order
        sizeDistribution:
          type: string
          enum:
          - flat
          - ascending
          - descending
          description: Scaled Order Distribution Type {  }
        expiry:
          type: string
          description: Timestamp of order's expiry, in seconds
      required:
      - chainId
      - YT
      - orderType
      - token
      - maker
      - makingAmount
      - lowerImpliedApy
      - upperImpliedApy
      - orderCount
      - sizeDistribution
      - expiry
    LimitOrderTakerResponse:
      type: object
      properties:
        order:
          $ref: '#/components/schemas/LimitOrderResponse'
        makingAmount:
          type: string
          description: Amount to be used to fill the order, the unit is the same as the unit of limit order' making amount
        netFromTaker:
          type: string
          description: Amount from taker need to fully fill this order, the unit is SY if the market order is TOKEN_FOR_PT or TOKEN_FOR_YT, otherwise, the unit it PT or YT depends on type of order
        netToTaker:
          type: string
          description: Actual making amount to taker, the unit is SY if the market order is PT_FOR_TOKEN or YT_FOR_TOKEN, otherwise, the unit it PT or YT depends on type of order
      required:
      - order
      - makingAmount
      - netFromTaker
      - netToTaker
    GenerateLimitOrderDataResponse:
      type: object
      properties:
        chainId:
          type: number
          description: Chain id
        YT:
          type: string
          description: YT address
        salt:
          type: string
          description: BigInt string of salt. Salt is a random generated number to distinguish between orders.Because of some technical reason, this number must be dividable by 12421
        expiry:
          type: string
          description: Limit order expiry, in string
        nonce:
          type: string
          description: Nonce of the limit order, this will help the maker to cancel all the limit order they created
        token:
          type: string
          description: Input token if type is TOKEN_FOR_PT or TOKEN_FOR_YT, output token otherwise
        orderType:
          type: number
          enum:
          - 0
          - 1
          - 2
          - 3
          description: 'LimitOrderType { 0 : TOKEN_FOR_PT, 1 : PT_FOR_TOKEN, 2 : TOKEN_FOR_YT, 3 : YT_FOR_TOKEN }'
        failSafeRate:
          type: string
          description: BigInt string of failSafeRate
        maker:
          type: string
          description: Maker's address
        receiver:
          type: string
          description: Maker's address
        makingAmount:
          type: string
          description: BigInt string of making amount, the amount of token if the order is TOKEN_FOR_PT or TOKEN_FOR_YT, otherwise the amount of PT or YT
        permit:
          type: string
          description: ''
        lnImpliedRate:
          format: int64
  

# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/pendle/refs/heads/main/openapi/pendle-limit-orders-api-openapi.yml