api-documentation

When to use this skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "api-documentation" with this command: npx skills add supercent-io/skills-template/supercent-io-skills-template-api-documentation

API Documentation

When to use this skill

  • API Development: When adding new endpoints

  • External Release: Public API launch

  • Team Collaboration: Frontend-backend interface definition

Instructions

Step 1: OpenAPI (Swagger) Spec

openapi: 3.0.0 info: title: User Management API version: 1.0.0 description: API for managing users contact: email: api@example.com

servers:

paths: /users: get: summary: List all users description: Retrieve a paginated list of users tags: - Users parameters: - name: page in: query schema: type: integer default: 1 - name: limit in: query schema: type: integer default: 20 maximum: 100 responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/User' pagination: $ref: '#/components/schemas/Pagination' '401': $ref: '#/components/responses/Unauthorized'

post:
  summary: Create a new user
  tags:
    - Users
  requestBody:
    required: true
    content:
      application/json:
        schema:
          $ref: '#/components/schemas/CreateUserRequest'
  responses:
    '201':
      description: User created
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User'
    '400':
      $ref: '#/components/responses/BadRequest'

components: schemas: User: type: object properties: id: type: string format: uuid email: type: string format: email name: type: string createdAt: type: string format: date-time required: - id - email - name

CreateUserRequest:
  type: object
  properties:
    email:
      type: string
      format: email
    name:
      type: string
      minLength: 2
      maxLength: 50
    password:
      type: string
      minLength: 8
  required:
    - email
    - name
    - password

Pagination:
  type: object
  properties:
    page:
      type: integer
    limit:
      type: integer
    total:
      type: integer

responses: Unauthorized: description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: "Authentication required"

BadRequest:
  description: Bad Request
  content:
    application/json:
      schema:
        type: object
        properties:
          error:
            type: string
            example: "Invalid input"

securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT

security:

  • bearerAuth: []

Step 2: Generate Documentation from Code (JSDoc/Decorators)

Express + TypeScript:

/**

  • @swagger
  • /api/users:
  • post:
  • summary: Create a new user
    
  • tags: [Users]
    
  • requestBody:
    
  •   required: true
    
  •   content:
    
  •     application/json:
    
  •       schema:
    
  •         type: object
    
  •         required:
    
  •           - email
    
  •           - name
    
  •           - password
    
  •         properties:
    
  •           email:
    
  •             type: string
    
  •             format: email
    
  •           name:
    
  •             type: string
    
  •           password:
    
  •             type: string
    
  •             minLength: 8
    
  • responses:
    
  •   201:
    
  •     description: User created successfully
    
  •   400:
    
  •     description: Invalid input
    

*/ router.post('/users', async (req, res) => { const { email, name, password } = req.body; const user = await userService.createUser({ email, name, password }); res.status(201).json(user); });

Step 3: Interactive Documentation

Swagger UI Setup:

import swaggerUi from 'swagger-ui-express'; import YAML from 'yamljs';

const swaggerDocument = YAML.load('./openapi.yaml');

app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument, { customCss: '.swagger-ui .topbar { display: none }', customSiteTitle: "My API Documentation" }));

Step 4: Examples & Guides

API Documentation

Authentication

All API requests require authentication using JWT tokens.

Getting a Token

```bash curl -X POST https://api.example.com/v1/auth/login
-H "Content-Type: application/json"
-d '{"email": "user@example.com", "password": "yourpassword"}' ```

Response: ```json { "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "refreshToken": "..." } ```

Using the Token

```bash curl -X GET https://api.example.com/v1/users
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" ```

Creating a User

Endpoint: POST /v1/users

Request Body: ```json { "email": "john@example.com", "name": "John Doe", "password": "SecurePass123!" } ```

Success Response (201): ```json { "id": "123e4567-e89b-12d3-a456-426614174000", "email": "john@example.com", "name": "John Doe", "createdAt": "2025-01-15T10:00:00Z" } ```

Error Response (400): ```json { "error": "Email already exists" } ```

Rate Limiting

  • 100 requests per 15 minutes per IP
  • Header: X-RateLimit-Remaining

Pagination

``` GET /v1/users?page=2&limit=20 ```

Response includes pagination info: ```json { "data": [...], "pagination": { "page": 2, "limit": 20, "total": 157, "pages": 8 } } ```

Error Codes

  • 400 - Bad Request (validation error)
  • 401 - Unauthorized (missing/invalid token)
  • 403 - Forbidden (insufficient permissions)
  • 404 - Not Found
  • 409 - Conflict (duplicate resource)
  • 429 - Too Many Requests (rate limit)
  • 500 - Internal Server Error

Output format

API Documentation Structure

docs/ ├── README.md # Overview ├── getting-started.md # Quick start guide ├── authentication.md # Auth guide ├── api-reference/ │ ├── users.md # Users endpoints │ ├── auth.md # Auth endpoints │ └── products.md # Products endpoints ├── guides/ │ ├── pagination.md │ ├── error-handling.md │ └── rate-limiting.md ├── examples/ │ ├── curl.md │ ├── javascript.md │ └── python.md └── openapi.yaml # OpenAPI spec

Constraints

Required Rules (MUST)

  • Real Examples: Provide working code examples

  • Error Cases: Document not only success but also failure cases

  • Keep Updated: Update documentation when API changes

Prohibited (MUST NOT)

  • Real Keys in Examples: Do not use real API keys/passwords in examples

  • Vague Descriptions: Unclear descriptions like "returns data"

Best practices

  • Try It Out: Provide interactive documentation (Swagger UI)

  • Provide SDK: SDK and examples for major languages

  • Changelog: Document API changes

References

  • OpenAPI Specification

  • Swagger UI

  • Redoc

Metadata

Version

  • Current Version: 1.0.0

  • Last Updated: 2025-01-01

  • Compatible Platforms: Claude, ChatGPT, Gemini

Tags

#API-documentation #OpenAPI #Swagger #REST #developer-docs #documentation

Examples

Example 1: Basic usage

Example 2: Advanced usage

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

web-accessibility

Web Accessibility (A11y)

Repository Source
General

database-schema-design

Database Schema Design

Repository Source
General

backend-testing

When to use this skill

Repository Source
api-documentation | V50.AI