Skill v1.0.1
currentAutomated scan100/1002 files
version: "1.0.1" name: api-doc-template description: Generates API documentation for PHP projects. Creates endpoint documentation with parameters, responses, and examples.
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 FormatAll 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 TokenInclude the token in the Authorization header:
Authorization: Bearer {token}
### API KeyInclude 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
## {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:**
{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
## Error Handling### Error Response FormatAll errors follow this format:
{ "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
## Rate LimitingAPI 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 ResponseWhen rate limited, you'll receive:
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
## POST /ordersCreate 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:**
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:
- Identify all endpoints from routes or actions
- Document request parameters (path, query, body)
- Document response fields with types
- Provide realistic example requests/responses
- List all possible error responses
- Include authentication requirements
- Group endpoints by resource