Skip to main content

OpenAPI Module

The OpenAPI module enables automatic tool generation from OpenAPI/Swagger specifications, allowing agents to interact with any REST API.

Overview

from openstackai.openapi import OpenAPIClient, OpenAPIParser
from openstackai.openapi.tools import create_tools_from_spec

Key Components

ComponentDescription
OpenAPIClientHTTP client for API calls
OpenAPIParserParse OpenAPI specs
create_tools_from_specGenerate agent tools

Quick Start

From OpenAPI Spec

from openstackai.openapi import create_tools_from_spec

# Load from URL
tools = create_tools_from_spec("https://api.example.com/openapi.json")

# Load from file
tools = create_tools_from_spec("./api_spec.yaml")

# Use with agent
agent = Agent(
name="APIAgent",
tools=tools
)

Direct API Client

from openstackai.openapi import OpenAPIClient

client = OpenAPIClient("https://api.example.com/openapi.json")

# Call an endpoint
response = client.call("getUsers", limit=10)

# With authentication
client = OpenAPIClient(
"https://api.example.com/openapi.json",
auth_token="Bearer your-token"
)

Tool Generation

Basic Generation

tools = create_tools_from_spec(
"https://petstore.swagger.io/v2/swagger.json"
)

# Generated tools include:
# - getPetById
# - addPet
# - updatePet
# - deletePet
# etc.

Filtered Generation

# Only include specific operations
tools = create_tools_from_spec(
"api_spec.yaml",
include_operations=["getUser", "createUser"]
)

# Exclude certain operations
tools = create_tools_from_spec(
"api_spec.yaml",
exclude_operations=["deleteUser"]
)

# Filter by tags
tools = create_tools_from_spec(
"api_spec.yaml",
include_tags=["users", "products"]
)

Authentication

API Key

tools = create_tools_from_spec(
"api_spec.yaml",
auth={"api_key": "your-key"}
)

Bearer Token

tools = create_tools_from_spec(
"api_spec.yaml",
auth={"bearer_token": "your-jwt-token"}
)

OAuth2

tools = create_tools_from_spec(
"api_spec.yaml",
auth={
"oauth2": {
"client_id": "...",
"client_secret": "...",
"token_url": "https://..."
}
}
)

Using with Agents

from openstackai import Agent
from openstackai.openapi import create_tools_from_spec

# Create tools from Petstore API
tools = create_tools_from_spec(
"https://petstore.swagger.io/v2/swagger.json"
)

# Create agent with API tools
agent = Agent(
name="PetStoreAgent",
instructions="You help users manage pets in the store.",
tools=tools
)

# Agent can now call API endpoints
result = agent.run("Find all available dogs")

Customization

Custom Base URL

tools = create_tools_from_spec(
"api_spec.yaml",
base_url="https://staging.api.example.com"
)

Custom Headers

tools = create_tools_from_spec(
"api_spec.yaml",
headers={
"X-Custom-Header": "value",
"Accept-Language": "en-US"
}
)

See Also