{
  "openapi": "3.1.0",
  "info": {
    "title": "Aave v4 GraphQL API",
    "version": "1.0.0",
    "description": "Public GraphQL-over-HTTP API for the Aave v4 protocol: market data, reserves and hub assets, user positions, and transaction building. This document describes the HTTP transport only; the type system is the GraphQL schema, published at /schema.graphql and through introspection where enabled. The API is public and permissionless: no API keys, no OAuth, no scopes. Rate limits are enforced at the network edge and scale with usage, so no fixed quota is published and no per-request budget headers are emitted; on a 429, honour Retry-After when present and otherwise back off exponentially."
  },
  "servers": [
    {
      "url": "https://api.v4.aave.com"
    },
    {
      "url": "https://api.aave.com"
    }
  ],
  "security": [],
  "paths": {
    "/graphql": {
      "post": {
        "operationId": "executeGraphql",
        "summary": "Execute a GraphQL operation",
        "description": "Queries and mutations against the Aave v4 schema. See https://aave.com/docs/aave-v4/getting-started/graphql for a guided start and /schema.graphql for the full type system.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "required": [
                      "query"
                    ],
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "GraphQL document to execute."
                      },
                      "variables": {
                        "type": "object",
                        "description": "Values for the document's variables."
                      },
                      "operationName": {
                        "type": "string",
                        "description": "Which operation to run when the document defines several."
                      }
                    },
                    "title": "GraphQLRequest"
                  },
                  {
                    "title": "GraphQLBatchRequest",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "query"
                      ],
                      "properties": {
                        "query": {
                          "type": "string",
                          "description": "GraphQL document to execute."
                        },
                        "variables": {
                          "type": "object",
                          "description": "Values for the document's variables."
                        },
                        "operationName": {
                          "type": "string",
                          "description": "Which operation to run when the document defines several."
                        }
                      },
                      "title": "GraphQLRequest"
                    },
                    "minItems": 1,
                    "maxItems": 10,
                    "description": "Batch form: up to ten operations, answered as an array of responses in the same order."
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "GraphQL response. Failures arrive as an errors array in the body, per the GraphQL-over-HTTP convention.",
            "content": {
              "application/graphql-response+json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Result of the operation; null when it failed."
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "message": {
                            "type": "string"
                          },
                          "locations": {
                            "type": "array",
                            "items": {
                              "type": "object"
                            }
                          },
                          "path": {
                            "type": "array",
                            "items": {}
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited at the network edge. Honour Retry-After when present; otherwise back off exponentially."
          }
        }
      },
      "get": {
        "operationId": "graphqlPlayground",
        "summary": "Interactive GraphQL playground",
        "description": "Browser IDE for exploring the API. Not a data endpoint.",
        "responses": {
          "200": {
            "description": "Playground page.",
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/schema.graphql": {
      "get": {
        "operationId": "getSchemaSdl",
        "summary": "GraphQL schema (SDL)",
        "description": "The full schema of the live API in GraphQL SDL form.",
        "responses": {
          "200": {
            "description": "Schema definition language text.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Returned on deployments that do not publish their schema."
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "operationId": "getLlmsTxt",
        "summary": "Agent-facing description of this API",
        "description": "What the API serves, how to call it, and where the documentation lives, as markdown.",
        "responses": {
          "200": {
            "description": "Markdown index.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/health": {
      "get": {
        "operationId": "getHealth",
        "summary": "Service health",
        "responses": {
          "200": {
            "description": "Healthy.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Unhealthy.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}