api-documentation-generator

API Documentation Generator

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-generator" with this command: npx skills add armanzeroeight/fastagent-plugins/armanzeroeight-fastagent-plugins-api-documentation-generator

API Documentation Generator

Generate OpenAPI/Swagger specifications and comprehensive API documentation.

Quick Start

Create OpenAPI 3.0 specs with paths, schemas, and examples for complete API documentation.

Instructions

OpenAPI 3.0 Structure

Basic structure:

openapi: 3.0.0 info: title: API Name version: 1.0.0 description: API description servers:

  • url: https://api.example.com/v1 paths: /users: get: summary: List users responses: '200': description: Success components: schemas: User: type: object properties: id: type: integer name: type: string

Info Section

info: title: E-commerce API version: 1.0.0 description: | REST API for e-commerce platform.

## Authentication
Use Bearer token in Authorization header.

## Rate Limiting
1000 requests per hour per API key.

contact: name: API Support email: api@example.com url: https://example.com/support license: name: MIT url: https://opensource.org/licenses/MIT

Servers

servers:

Paths and Operations

GET endpoint:

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

POST endpoint:

/users: post: summary: Create user tags: - Users requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateUserRequest' example: name: John Doe email: john@example.com responses: '201': description: User created content: application/json: schema: $ref: '#/components/schemas/User' '400': $ref: '#/components/responses/BadRequest'

Path parameters:

/users/{id}: get: summary: Get user by ID parameters: - name: id in: path required: true schema: type: integer description: User ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/User' '404': $ref: '#/components/responses/NotFound'

Components - Schemas

Simple schema:

components: schemas: User: type: object required: - id - email properties: id: type: integer example: 1 name: type: string example: John Doe email: type: string format: email example: john@example.com created_at: type: string format: date-time

Nested schema:

Order:
  type: object
  properties:
    id:
      type: integer
    customer:
      $ref: '#/components/schemas/User'
    items:
      type: array
      items:
        $ref: '#/components/schemas/OrderItem'
    total:
      type: number
      format: float

Enum:

OrderStatus:
  type: string
  enum:
    - pending
    - processing
    - shipped
    - delivered
    - cancelled

OneOf (union types):

Payment:
  oneOf:
    - $ref: '#/components/schemas/CreditCardPayment'
    - $ref: '#/components/schemas/PayPalPayment'
  discriminator:
    propertyName: payment_type

Components - Responses

Reusable responses:

components: responses: NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' example: error: code: NOT_FOUND message: Resource not found

BadRequest:
  description: Invalid request
  content:
    application/json:
      schema:
        $ref: '#/components/schemas/ValidationError'

Unauthorized:
  description: Authentication required
  content:
    application/json:
      schema:
        $ref: '#/components/schemas/Error'

Components - Parameters

Reusable parameters:

components: parameters: PageParam: name: page in: query schema: type: integer default: 1

LimitParam:
  name: limit
  in: query
  schema:
    type: integer
    default: 20
    maximum: 100

IdParam:
  name: id
  in: path
  required: true
  schema:
    type: integer

Security Schemes

Bearer token:

components: securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT

security:

  • BearerAuth: []

API Key:

components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: X-API-Key

OAuth 2.0:

components: securitySchemes: OAuth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://example.com/oauth/authorize tokenUrl: https://example.com/oauth/token scopes: read: Read access write: Write access

Examples

Multiple examples:

responses: '200': content: application/json: schema: $ref: '#/components/schemas/User' examples: admin: summary: Admin user value: id: 1 name: Admin role: admin regular: summary: Regular user value: id: 2 name: John role: user

Tags

Organize endpoints:

tags:

  • name: Users description: User management
  • name: Products description: Product catalog
  • name: Orders description: Order processing

paths: /users: get: tags: - Users

Complete Example

openapi: 3.0.0 info: title: Blog API version: 1.0.0 description: RESTful API for blog platform

servers:

paths: /posts: get: summary: List posts tags: - Posts parameters: - $ref: '#/components/parameters/PageParam' - $ref: '#/components/parameters/LimitParam' responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Post' meta: $ref: '#/components/schemas/PaginationMeta'

post:
  summary: Create post
  tags:
    - Posts
  security:
    - BearerAuth: []
  requestBody:
    required: true
    content:
      application/json:
        schema:
          type: object
          required:
            - title
            - content
          properties:
            title:
              type: string
            content:
              type: string
            tags:
              type: array
              items:
                type: string
  responses:
    '201':
      description: Post created
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Post'

/posts/{id}: get: summary: Get post tags: - Posts parameters: - name: id in: path required: true schema: type: integer responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Post' '404': $ref: '#/components/responses/NotFound'

components: schemas: Post: type: object properties: id: type: integer title: type: string content: type: string author: $ref: '#/components/schemas/User' created_at: type: string format: date-time

User:
  type: object
  properties:
    id:
      type: integer
    name:
      type: string
    email:
      type: string

PaginationMeta:
  type: object
  properties:
    total:
      type: integer
    page:
      type: integer
    per_page:
      type: integer

Error:
  type: object
  properties:
    error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string

parameters: PageParam: name: page in: query schema: type: integer default: 1

LimitParam:
  name: limit
  in: query
  schema:
    type: integer
    default: 20

responses: NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error'

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

security:

  • BearerAuth: []

Generating from Code

From Express.js

// Use swagger-jsdoc /**

  • @swagger
  • /users:
  • get:
  • summary: List users
    
  • responses:
    
  •   200:
    
  •     description: Success
    

*/ app.get('/users', (req, res) => { // Handler });

From FastAPI (Python)

FastAPI auto-generates OpenAPI

@app.get("/users", response_model=List[User]) async def list_users(): return users

From ASP.NET Core

// Use Swashbuckle [HttpGet] [ProducesResponseType(typeof(List<User>), 200)] public IActionResult GetUsers() { return Ok(users); }

Tools

Swagger Editor: https://editor.swagger.io Swagger UI: Interactive documentation Redoc: Alternative documentation UI Postman: Import OpenAPI for testing

Best Practices

Use $ref for reusability:

  • Define schemas once

  • Reference in multiple places

  • Easier maintenance

Include examples:

  • Help developers understand

  • Enable better testing

  • Show expected formats

Document errors:

  • All possible status codes

  • Error response format

  • Error codes and meanings

Version your API:

  • Include version in URL or header

  • Document breaking changes

  • Maintain old versions

Keep it updated:

  • Generate from code when possible

  • Review regularly

  • Update with API changes

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.

Automation

gcp-cost-optimizer

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

schema-designer

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

terraform-state-manager

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

aws-cost-optimizer

No summary provided by upstream source.

Repository SourceNeeds Review