acc-api-doc-template

📁 dykyi-roman/awesome-claude-code 📅 2 days ago
1
总安装量
1
周安装量
#55242
全站排名
安装命令
npx skills add https://github.com/dykyi-roman/awesome-claude-code --skill acc-api-doc-template

Agent 安装分布

opencode 1
claude-code 1

Skill 文档

API Documentation Template Generator

Generate comprehensive API documentation for REST endpoints.

Document Structure

# API Reference

## Overview
{API description and base URL}

## Authentication
{Auth methods}

## Endpoints

### {Resource}
- [GET /{resource}](#get-resource)
- [POST /{resource}](#post-resource)
- [GET /{resource}/{id}](#get-resource-id)
- [PUT /{resource}/{id}](#put-resource-id)
- [DELETE /{resource}/{id}](#delete-resource-id)

## Error Handling
{Error format and codes}

## Rate Limiting
{Rate limit info}

Section Templates

Overview Section

## Overview

**Base URL:** `https://api.example.com/v1`

**Content Type:** `application/json`

**API Version:** v1 (2025-01-15)

### Request Format

All requests should include:
- `Content-Type: application/json` header
- Authentication header (see Authentication section)
- Request body as JSON for POST/PUT requests

Authentication Section

## Authentication

### Bearer Token

Include the token in the Authorization header:

```http
Authorization: Bearer {token}

API Key

Include the API key in the X-API-Key header:

X-API-Key: {api_key}

Obtaining Tokens

POST /auth/token
Content-Type: application/json

{
    "email": "user@example.com",
    "password": "secret"
}

Response:

{
    "token": "eyJhbGciOiJIUzI1NiIs...",
    "expires_at": "2025-01-16T12:00:00Z"
}

### Endpoint Template

```markdown
## {HTTP Method} /{path}

{Brief description of what this endpoint does}

### Request

**URL:** `{HTTP Method} /api/v1/{path}`

**Authentication:** Required / Optional

#### Path Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `{param}` | {type} | Yes/No | {description} |

#### Query Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `{param}` | {type} | {default} | {description} |

#### Request Body

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `{field}` | {type} | Yes/No | {description} |

**Example Request:**

```http
{METHOD} /api/v1/{path}
Authorization: Bearer {token}
Content-Type: application/json

{
    "field": "value"
}

Response

Success Response: {status code} {status text}

Field Type Description
{field} {type} {description}

Example Response:

{
    "id": "123",
    "field": "value",
    "created_at": "2025-01-15T10:00:00Z"
}

Errors

Status Code Description
400 VALIDATION_ERROR Invalid request body
401 UNAUTHORIZED Missing or invalid token
404 NOT_FOUND Resource not found
422 UNPROCESSABLE Business rule violation

### Error Handling Section

```markdown
## Error Handling

### Error Response Format

All errors follow this format:

```json
{
    "error": {
        "code": "ERROR_CODE",
        "message": "Human-readable error message",
        "details": {
            "field": ["Specific field error"]
        }
    }
}

HTTP Status Codes

Status Meaning
200 OK – Request succeeded
201 Created – Resource created
204 No Content – Successful deletion
400 Bad Request – Invalid syntax
401 Unauthorized – Invalid credentials
403 Forbidden – Insufficient permissions
404 Not Found – Resource doesn’t exist
422 Unprocessable Entity – Validation failed
429 Too Many Requests – Rate limit exceeded
500 Internal Server Error – Server error

Common Error Codes

Code Description
VALIDATION_ERROR Request validation failed
UNAUTHORIZED Authentication required
FORBIDDEN Insufficient permissions
NOT_FOUND Resource not found
CONFLICT Resource already exists
RATE_LIMITED Too many requests

### Rate Limiting Section

```markdown
## Rate Limiting

API requests are rate limited per API key:

| Plan | Limit | Window |
|------|-------|--------|
| Free | 100 | per hour |
| Pro | 1000 | per hour |
| Enterprise | 10000 | per hour |

### Rate Limit Headers

| Header | Description |
|--------|-------------|
| `X-RateLimit-Limit` | Maximum requests allowed |
| `X-RateLimit-Remaining` | Requests remaining |
| `X-RateLimit-Reset` | Unix timestamp when limit resets |

### Rate Limit Response

When rate limited, you'll receive:

```http
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1705320000

{
    "error": {
        "code": "RATE_LIMITED",
        "message": "Rate limit exceeded. Retry after 60 seconds."
    }
}

## Complete Endpoint Example

```markdown
## POST /orders

Create a new order for the authenticated user.

### Request

**URL:** `POST /api/v1/orders`

**Authentication:** Required

#### Request Body

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `items` | array | Yes | Order items |
| `items[].product_id` | string | Yes | Product UUID |
| `items[].quantity` | integer | Yes | Quantity (1-100) |
| `shipping_address` | object | Yes | Delivery address |
| `shipping_address.street` | string | Yes | Street address |
| `shipping_address.city` | string | Yes | City name |
| `shipping_address.postal_code` | string | Yes | Postal/ZIP code |
| `shipping_address.country` | string | Yes | ISO 3166-1 alpha-2 |
| `coupon_code` | string | No | Discount code |

**Example Request:**

```http
POST /api/v1/orders
Authorization: Bearer eyJhbGci...
Content-Type: application/json

{
    "items": [
        {
            "product_id": "550e8400-e29b-41d4-a716-446655440000",
            "quantity": 2
        }
    ],
    "shipping_address": {
        "street": "123 Main St",
        "city": "New York",
        "postal_code": "10001",
        "country": "US"
    },
    "coupon_code": "SAVE10"
}

Response

Success Response: 201 Created

Field Type Description
id string Order UUID
status string Order status
items array Order items with prices
subtotal object Subtotal amount
discount object Discount amount
total object Total amount
created_at string ISO 8601 timestamp

Example Response:

{
    "id": "ord_123456",
    "status": "pending",
    "items": [
        {
            "product_id": "550e8400-e29b-41d4-a716-446655440000",
            "name": "Widget Pro",
            "quantity": 2,
            "unit_price": {"amount": 2999, "currency": "USD"},
            "total": {"amount": 5998, "currency": "USD"}
        }
    ],
    "subtotal": {"amount": 5998, "currency": "USD"},
    "discount": {"amount": 600, "currency": "USD"},
    "total": {"amount": 5398, "currency": "USD"},
    "shipping_address": {
        "street": "123 Main St",
        "city": "New York",
        "postal_code": "10001",
        "country": "US"
    },
    "created_at": "2025-01-15T10:30:00Z"
}

Errors

Status Code Description
400 INVALID_PRODUCT Product ID is malformed
404 PRODUCT_NOT_FOUND Product doesn’t exist
422 OUT_OF_STOCK Insufficient inventory
422 INVALID_COUPON Coupon code invalid or expired
422 MIN_ORDER_VALUE Order below minimum value

## Generation Instructions

When generating API documentation:

1. **Identify** all endpoints from routes or actions
2. **Document** request parameters (path, query, body)
3. **Document** response fields with types
4. **Provide** realistic example requests/responses
5. **List** all possible error responses
6. **Include** authentication requirements
7. **Group** endpoints by resource