Skip to main content

api-documentation-generator

Generate comprehensive API documentation for Confluence from code, OpenAPI specs, or endpoints. Use when documenting REST APIs, GraphQL APIs, or any API endpoints. Creates structured documentation with examples, parameters, responses, and error codes.

Source facts

Repository
sethdford/claude-plugins
Last source activity
October 17, 2025 at 13:24
Detected SKILL.md language
English
Stars
3
Forks
1

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
API Documentation Generator
description
Generate comprehensive API documentation for Confluence from code, OpenAPI specs, or endpoints. Use when documenting REST APIs, GraphQL APIs, or any API endpoints. Creates structured documentation with examples, parameters, responses, and error codes.
allowed-tools
Read, Grep, Bash
# API Documentation Generator Expert assistance for creating comprehensive API documentation in Confluence. ## When to Use This Skill - Documenting new API endpoints - Creating API reference pages - Converting OpenAPI/Swagger specs to Confluence - User mentions: API, endpoints, REST, GraphQL, documentation - After implementing new API features ## API Documentation Structure ### Complete API Page Template ```markdown # [API Name] API ## Overview Brief description of what this API does and its purpose. ## Base URL ``` https://api.example.com/v1 ``` ## Authentication How to authenticate with this API. ## Endpoints ### GET /resource Brief description of what this endpoint does. #### Parameters [Parameter table] #### Request Example [Code block with example] #### Response [Success response example] #### Error Codes [Error table] ## Rate Limiting API rate limit information. ## Changelog Version history and changes. ``` ## Endpoint Documentation ### Standard Sections #### 1. Endpoint Header ```markdown ### POST /api/users Create a new user account ``` #### 2. Description ```markdown Creates a new user account with the provided information. Sends a verification email to the user's address. **Permissions**: Requires `admin` role **Rate Limit**: 10 requests per minute ``` #### 3. Parameters Table ##### Path Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | User ID (UUID format) | | `version` | integer | No | API version (default: 1) | ##### Query Parameters | Parameter | Type | Required | Description | Default | |-----------|------|----------|-------------|---------| | `page` | integer | No | Page number | 1 | | `limit` | integer | No | Items per page | 20 | | `sort` | string | No | Sort field | `created_at` | | `order` | string | No | Sort order (asc/desc) | `desc` | ##### Request Body | Field | Type | Required | Description | Constraints | |-------|------|----------|-------------|-------------| | `email` | string | Yes | User email address | Valid email format | | `username` | string | Yes | Username | 3-20 alphanumeric chars | | `password` | string | Yes | Password | Min 8 chars, 1 uppercase, 1 number | | `full_name` | string | No | Full name | Max 100 chars | | `role` | string | No | User role | One of: user, admin, moderator | #### 4. Request Example **cURL**: ```bash curl -X POST https://api.example.com/v1/users \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "email": "user@example.com", "username": "johndoe", "password": "SecurePass123", "full_name": "John Doe", "role": "user" }' ``` **JavaScript (fetch)**: ```javascript const response = await fetch('https://api.example.com/v1/users', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_API_KEY' }, body: JSON.stringify({ email: 'user@example.com', username: 'johndoe', password: 'SecurePass123', full_name: 'John Doe', role: 'user' }) }); const data = await response.json(); console.log(data); ``` **Python (requests)**: ```python import requests url = "https://api.example.com/v1/users" headers = { "Content-Type": "application/json", "Authorization": "Bearer YOUR_API_KEY" } data = { "email": "user@example.com", "username": "johndoe", "password": "SecurePass123", "full_name": "John Doe", "role": "user" } response = requests.post(url, headers=headers, json=data) print(response.json()) ``` #### 5. Response Examples **Success Response (201 Created)**: ```json { "status": "success", "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "email": "user@example.com", "username": "johndoe", "full_name": "John Doe", "role": "user", "email_verified": false, "created_at": "2024-01-15T10:30:00Z", "updated_at": "2024-01-15T10:30:00Z" } } ``` **Response Fields**: | Field | Type | Description | |-------|------|-------------| | `id` | string | Unique user identifier (UUID) | | `email` | string | User's email address | | `username` | string | Username | | `full_name` | string | User's full name | | `role` | string | User's role | | `email_verified` | boolean | Email verification status | | `created_at` | string | Account creation timestamp (ISO 8601) | | `updated_at` | string | Last update timestamp (ISO 8601) | #### 6. Error Responses | Status Code | Error Code | Description | Resolution | |-------------|------------|-------------|------------| | 400 | `INVALID_EMAIL` | Email format is invalid | Provide valid email address | | 400 | `WEAK_PASSWORD` | Password doesn't meet requirements | Use min 8 chars, 1 uppercase, 1 number | | 400 | `USERNAME_TAKEN` | Username already exists | Choose different username | | 401 | `UNAUTHORIZED` | Missing or invalid API key | Include valid Authorization header | | 403 | `FORBIDDEN` | Insufficient permissions | Requires admin role | | 429 | `RATE_LIMIT_EXCEEDED` | Too many requests | Wait before retrying | | 500 | `INTERNAL_ERROR` | Server error | Contact support if persists | **Error Response Format**: ```json { "status": "error", "error": { "code": "USERNAME_TAKEN", "message": "The username 'johndoe' is already in use", "details": { "field": "username", "value": "johndoe" } } } ``` ## Authentication Documentation ### API Key Authentication ```markdown ## Authentication All API requests require authentication using an API key. ### Obtaining an API Key 1. Log in to your account 2. Navigate to Settings > API Keys 3. Click "Generate New Key" 4. Store the key securely (shown only once) ### Using the API Key Include the API key in the `Authorization` header: ``` Authorization: Bearer YOUR_API_KEY ``` **Example**: ```bash curl -H "Authorization: Bearer sk_test_abc123..." \ https://api.example.com/v1/users ``` ### Security Best Practices - Never commit API keys to version control - Rotate keys regularly (every 90 days) - Use environment variables for key storage - Different keys for development/production ``` ### OAuth 2.0 Documentation ```markdown ## Authentication This API uses OAuth 2.0 for authentication. ### Authorization Flow 1. **Redirect user to authorization URL**: ``` https://api.example.com/oauth/authorize? client_id=YOUR_CLIENT_ID& redirect_uri=YOUR_REDIRECT_URI& response_type=code& scope=read write ``` 2. **User authorizes your app** 3. **Receive authorization code**: ``` https://your-redirect-uri?code=AUTH_CODE ``` 4. **Exchange code for access token**: ```bash curl -X POST https://api.example.com/oauth/token \ -d "client_id=YOUR_CLIENT_ID" \ -d "client_secret=YOUR_CLIENT_SECRET" \ -d "code=AUTH_CODE" \ -d "grant_type=authorization_code" ``` 5. **Use access token in requests**: ``` Authorization: Bearer ACCESS_TOKEN ``` ### Scopes | Scope | Description | |-------|-------------| | `read` | Read access to resources | | `write` | Create and update resources | | `delete` | Delete resources | | `admin` | Full administrative access | ``` ## Rate Limiting Documentation ```markdown ## Rate Limiting API requests are rate limited to ensure fair usage. ### Limits | Tier | Requests per minute | Requests per day | |------|-------------------|------------------| | Free | 60 | 10,000 | | Pro | 600 | 100,000 | | Enterprise | Unlimited | Unlimited | ### Rate Limit Headers Each response includes rate limit information: ``` X-RateLimit-Limit: 60 X-RateLimit-Remaining: 45 X-RateLimit-Reset: 1642247400 ``` | Header | Description | |--------|-------------| | `X-RateLimit-Limit` | Total requests allowed in window | | `X-RateLimit-Remaining` | Requests remaining in window | | `X-RateLimit-Reset` | Unix timestamp when limit resets | ### Handling Rate Limits When rate limited, you'll receive a `429 Too Many Requests` response: ```json { "status": "error", "error": { "code": "RATE_LIMIT_EXCEEDED", "message": "API rate limit exceeded", "retry_after": 42 } } ``` **Best practices**: - Monitor `X-RateLimit-Remaining` header - Implement exponential backoff - Cache responses when possible - Use webhooks instead of polling ``` ## Pagination Documentation ```markdown ## Pagination List endpoints return paginated results. ### Request Parameters | Parameter | Type | Default | Description | |-----------|------|---------|-------------| | `page` | integer | 1 | Page number (1-indexed) | | `limit` | integer | 20 | Items per page (max 100) | ### Example Request ```bash GET /api/users?page=2&limit=50 ``` ### Response Format
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub