Generates comprehensive API documentation including OpenAPI/Swagger specs, endpoint descriptions, request/response examples, and integration guides. Use when documenting APIs.
Expert at creating comprehensive, developer-friendly API documentation.
# openapi.yaml
openapi: 3.0.3
info:
title: User Management API
description: |
Comprehensive API for managing users, authentication, and profiles.
## Features
- User CRUD operations
- JWT authentication
- Role-based access control
- Search and pagination
## Authentication
Use Bearer token in Authorization header:
```
Authorization: Bearer <your-jwt-token>
```
version: 1.0.0
contact:
name: API Support
email: api@example.com
url: https://api.example.com/support
license:
name: MIT
url: https://opensource.org/licenses/MIT
servers:
- url: https://api.example.com/v1
description: Production server
- url: https://staging-api.example.com/v1
description: Staging server
- url: http://test-frontend:3000/v1
description: Development server
tags:
- name: Users
description: User management operations
- name: Authentication
description: Authentication and authorization
paths:
/users:
get:
tags: [Users]
summary: List users
description: Retrieve a paginated list of users with optional filtering
operationId: getUsers
security:
- bearerAuth: []
parameters:
- name: page
in: query
description: Page number
schema:
type: integer
minimum: 1
default: 1
- name: limit
in: query
description: Number of items per page
schema:
type: integer
minimum: 1
maximum: 100
default: 10
- name: search
in: query
description: Search query for name or email
schema:
type: string
- name: role
in: query
description: Filter by user role
schema:
type: string
enum: [user, admin, moderator]
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
users:
type: array
items:
$ref: '#/components/schemas/User'
meta:
$ref: '#/components/schemas/PaginationMeta'
example:
users:
- id: 1
email: user@example.com
name: John Doe
role: user
createdAt: '2024-01-01T00:00:00Z'
meta:
page: 1
limit: 10
total: 45
totalPages: 5
'401':
$ref: '#/components/responses/UnauthorizedError'
post:
tags: [Users]
summary: Create user
description: Create a new user account
operationId: createUser
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserInput'
example:
name: Jane Doe
email: jane@example.com
password: SecurePass123!
role: user
responses:
'201':
description: User created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
$ref: '#/components/responses/ValidationError'
'409':
description: Email already exists
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/users/{id}:
get:
tags: [Users]
summary: Get user by ID
operationId: getUserById
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: integer
description: User ID
responses:
'200':
description: User found
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'404':
$ref: '#/components/responses/NotFoundError'
put:
tags: [Users]
summary: Update user
operationId: updateUser
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: integer
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUserInput'
responses:
'200':
description: User updated
content:
application/json:
schema:
$ref: '#/components/schemas/User'
delete:
tags: [Users]
summary: Delete user
operationId: deleteUser
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: integer
responses:
'204':
description: User deleted
'403':
$ref: '#/components/responses/ForbiddenError'
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
schemas:
User:
type: object
required: [id, email, name, role]
properties:
id:
type: integer
description: Unique user identifier
email:
type: string
format: email
description: User email address
name:
type: string
description: User full name
role:
type: string
enum: [user, admin, moderator]
description: User role
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
CreateUserInput:
type: object
required: [email, name, password]
properties:
email:
type: string
format: email
name:
type: string
minLength: 2
maxLength: 100
password:
type: string
minLength: 8
role:
type: string
enum: [user, admin, moderator]
default: user
UpdateUserInput:
type: object
properties:
email:
type: string
format: email
name:
type: string
password:
type: string
minLength: 8
role:
type: string
enum: [user, admin, moderator]
PaginationMeta:
type: object
properties:
page:
type: integer
limit:
type: integer
total:
type: integer
totalPages:
type: integer
Error:
type: object
properties:
error:
type: string
message:
type: string
details:
type: array
items:
type: string
responses:
UnauthorizedError:
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ForbiddenError:
description: Insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFoundError:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ValidationError:
description: Validation failed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
# User API Documentation
## Overview
The User API provides endpoints for managing user accounts, authentication, and profiles.
Base URL: `https://api.example.com/v1`
## Authentication
All endpoints (except registration and login) require authentication using JWT tokens.
Include the token in the Authorization header:
```bash
Authorization: Bearer YOUR_JWT_TOKEN
POST /auth/login
Content-Type: application/json
{
"email": "user@example.com",
"password": "password123"
}
Response:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": { ... }
}
curl -X POST https://api.example.com/v1/users \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"email": "john@example.com",
"password": "SecurePass123!"
}'
curl -X POST https://api.example.com/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "john@example.com",
"password": "SecurePass123!"
}'
curl https://api.example.com/v1/users/me \
-H "Authorization: Bearer YOUR_TOKEN"
GET /users
Query Parameters:
page (integer): Page number (default: 1)limit (integer): Items per page (default: 10, max: 100)search (string): Search users by name or emailrole (string): Filter by role (user, admin, moderator)Response:
{
"users": [
{
"id": 1,
"email": "user@example.com",
"name": "John Doe",
"role": "user",
"createdAt": "2024-01-01T00:00:00Z"
}
],
"meta": {
"page": 1,
"limit": 10,
"total": 45,
"totalPages": 5
}
}
The API uses standard HTTP status codes:
200 - Success201 - Created400 - Bad Request (validation error)401 - Unauthorized (authentication required)403 - Forbidden (insufficient permissions)404 - Not Found409 - Conflict (e.g., email already exists)500 - Internal Server ErrorError Response Format:
{
"error": "ValidationError",
"message": "Invalid input data",
"details": [
"Email must be valid",
"Password must be at least 8 characters"
]
}
API requests are rate-limited to:
Rate limit headers:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1640000000
npm install @example/api-clientpip install example-apigo get github.com/example/api-go
## Best Practices
- Include all endpoints and parameters
- Provide request/response examples
- Document authentication requirements
- Explain error responses
- Add rate limiting information
- Include SDKs and code examples
- Keep documentation up-to-date
- Version your API
- Use standard HTTP methods
- Provide changelog
## Output Checklist
- ✅ OpenAPI spec generated
- ✅ All endpoints documented
- ✅ Request/response examples
- ✅ Authentication documented
- ✅ Error codes explained
- ✅ Quick start guide
- ✅ Code examples
- 📝 README created
npx skills add Dexploarer/api-documentation-generator下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer