{
 "openapi": "3.0.3",
 "info": {
  "title": "Liquistate Trading API (devnet)",
  "version": "0.1.0",
  "description": "Non-custodial: endpoints return unsigned transactions; you sign with your own wallet. Devnet only. Paired coins give no claim to shares, dividends or votes."
 },
 "servers": [
  {
   "url": "https://liquistate-preview.pages.dev"
  }
 ],
 "components": {
  "securitySchemes": {
   "apiKey": {
    "type": "apiKey",
    "in": "header",
    "name": "X-API-Key"
   }
  }
 },
 "paths": {
  "/api/agent/markets": {
   "get": {
    "summary": "List pools with live devnet price and reserves",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": [
     {
      "apiKey": []
     }
    ]
   }
  },
  "/api/agent/tokens": {
   "get": {
    "summary": "Coins and allowed quote assets",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": [
     {
      "apiKey": []
     }
    ]
   }
  },
  "/api/agent/quote": {
   "get": {
    "parameters": [
     {
      "name": "pool",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "side",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "amount",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Quote a swap",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": [
     {
      "apiKey": []
     }
    ]
   }
  },
  "/api/agent/trades": {
   "get": {
    "parameters": [
     {
      "name": "pool",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Recent on-chain trades",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": [
     {
      "apiKey": []
     }
    ]
   }
  },
  "/api/agent/swap/build": {
   "post": {
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "pool": {
          "type": "string"
         },
         "wallet": {
          "type": "string"
         },
         "side": {
          "type": "string"
         },
         "amount": {
          "type": "string"
         }
        },
        "required": [
         "pool",
         "wallet",
         "side",
         "amount"
        ]
       }
      }
     }
    },
    "summary": "Build an UNSIGNED swap tx",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": [
     {
      "apiKey": []
     }
    ]
   }
  },
  "/api/agent/swap/submit": {
   "post": {
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "tx": {
          "type": "string"
         }
        },
        "required": [
         "tx"
        ]
       }
      }
     }
    },
    "summary": "Relay a wallet-signed tx",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": [
     {
      "apiKey": []
     }
    ]
   }
  },
  "/api/agent/pool/build": {
   "post": {
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "wallet": {
          "type": "string"
         },
         "coinMint": {
          "type": "string"
         },
         "quote": {
          "type": "string"
         },
         "coinAmount": {
          "type": "string"
         },
         "quoteAmount": {
          "type": "string"
         }
        },
        "required": [
         "wallet",
         "coinMint",
         "quote",
         "coinAmount",
         "quoteAmount"
        ]
       }
      }
     }
    },
    "summary": "Build an UNSIGNED stock-paired pool creation tx",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": [
     {
      "apiKey": []
     }
    ]
   }
  },
  "/api/amm/markets": {
   "get": {
    "summary": "List pools with live devnet price and reserves",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": []
   }
  },
  "/api/amm/tokens": {
   "get": {
    "summary": "Coins and allowed quote assets",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": []
   }
  },
  "/api/amm/quote": {
   "get": {
    "parameters": [
     {
      "name": "pool",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "side",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "amount",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Quote a swap",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": []
   }
  },
  "/api/amm/trades": {
   "get": {
    "parameters": [
     {
      "name": "pool",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Recent on-chain trades",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": []
   }
  },
  "/api/amm/swap/build": {
   "post": {
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "pool": {
          "type": "string"
         },
         "wallet": {
          "type": "string"
         },
         "side": {
          "type": "string"
         },
         "amount": {
          "type": "string"
         }
        },
        "required": [
         "pool",
         "wallet",
         "side",
         "amount"
        ]
       }
      }
     }
    },
    "summary": "Build an UNSIGNED swap tx",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": []
   }
  },
  "/api/amm/swap/submit": {
   "post": {
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "tx": {
          "type": "string"
         }
        },
        "required": [
         "tx"
        ]
       }
      }
     }
    },
    "summary": "Relay a wallet-signed tx",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": []
   }
  },
  "/api/amm/pool/build": {
   "post": {
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "wallet": {
          "type": "string"
         },
         "coinMint": {
          "type": "string"
         },
         "quote": {
          "type": "string"
         },
         "coinAmount": {
          "type": "string"
         },
         "quoteAmount": {
          "type": "string"
         }
        },
        "required": [
         "wallet",
         "coinMint",
         "quote",
         "coinAmount",
         "quoteAmount"
        ]
       }
      }
     }
    },
    "summary": "Build an UNSIGNED stock-paired pool creation tx",
    "responses": {
     "200": {
      "description": "OK"
     },
     "401": {
      "description": "Bad API key (agent routes)"
     },
     "422": {
      "description": "Invalid input"
     },
     "429": {
      "description": "Rate limited"
     }
    },
    "security": []
   }
  }
 }
}