openapi
Turn any OpenAPI spec into a dynamic CLI tool
v1.0.0 • by cli4ai • Updated 2 days ago • License
$ cli4ai add openapi About
@cli4ai/openapi
Turn any OpenAPI spec into a dynamic CLI tool.
Installation
cli4ai add -g openapi
Usage
Load and inspect a spec
# From URL
cli4ai run openapi load https://petstore3.swagger.io/api/v3/openapi.json
# From file
cli4ai run openapi load ./api-spec.json
List all operations
# List all operations
cli4ai run openapi list https://petstore3.swagger.io/api/v3/openapi.json
# Filter by tag
cli4ai run openapi list ./spec.json --tag pets
# Filter by method
cli4ai run openapi list ./spec.json --method POST
Call an endpoint
# By operationId
cli4ai run openapi call ./spec.json getPetById id=123
# By method and path
cli4ai run openapi call ./spec.json "GET /pet/{petId}" petId=123
# With query parameters
cli4ai run openapi call ./spec.json findPetsByStatus status=available
# With request body
cli4ai run openapi call ./spec.json addPet body='{"name":"Fluffy","status":"available"}'
# Dry run (show request without executing)
cli4ai run openapi call ./spec.json getPetById id=123 --dry-run
View schemas
# List all schemas
cli4ai run openapi schema ./spec.json
# View specific schema
cli4ai run openapi schema ./spec.json Pet
Authentication
Set environment variables for authentication:
# Bearer token
export OPENAPI_BEARER_TOKEN="your-token"
# API key (uses X-API-Key header or spec-defined header)
export OPENAPI_API_KEY="your-api-key"
# Override base URL
export OPENAPI_BASE_URL="https://api.example.com/v2"
Examples
Petstore API
# Load the spec
cli4ai run openapi load https://petstore3.swagger.io/api/v3/openapi.json
# List pets
cli4ai run openapi call https://petstore3.swagger.io/api/v3/openapi.json findPetsByStatus status=available
# Get a specific pet
cli4ai run openapi call https://petstore3.swagger.io/api/v3/openapi.json getPetById petId=1
GitHub API
export OPENAPI_BEARER_TOKEN="ghp_your_token"
# Get user info
cli4ai run openapi call https://raw.githubusercontent.com/github/rest-api-description/main/descriptions/api.github.com/api.github.com.json "GET /user"
Parameter Passing
Parameters can be passed in several ways:
# key=value format
cli4ai run openapi call ./spec.json operation param1=value1 param2=value2
# --key=value format
cli4ai run openapi call ./spec.json operation --param1=value1
# Request body as JSON
cli4ai run openapi call ./spec.json operation body='{"key":"value"}'
Output
All output is JSON for easy parsing:
{
"status": 200,
"statusText": "OK",
"headers": { ... },
"data": { ... }
}
Limitations
- Only JSON specs are supported (no YAML)
- OAuth2 flows require manual token acquisition
- File uploads not yet supported
Keywords
Related Packages
fireflies
v1.0.8 • by cliforai
Fireflies.ai meeting transcripts
#fireflies
#meeting
#transcript
0 downloads
ipinfo
v1.0.5 • by cliforai
IP address information lookup (powered by ipinfo.io)
#ipinfo
#ip
#geolocation
0 downloads
youtube
v1.0.9 • by cliforai
YouTube transcript tool (powered by yt-dlp)
#youtube
#video
#transcript
0 downloads