| name | api-documentation |
| description | Use when creating API documentation, implementing OpenAPI specifications, writing Swagger documentation, creating GraphQL schemas, and generating SDKs. Includes documentation best practices, API versioning, and API documentation automation. Based on CPTD and OpenAPI Specification certifications. |
| license | MIT |
API Documentation Skill ā API Specialist
Overview
This skill provides comprehensive guidance for creating comprehensive API documentation. It covers OpenAPI specifications, Swagger documentation, GraphQL schemas, SDK generation, and API documentation best practices following CPTD and OpenAPI Specification certifications.
When to Use
Use this skill when:
- Creating API documentation
- Implementing OpenAPI specifications
- Writing Swagger documentation
- Creating GraphQL schemas
- Generating SDKs from API specs
- Documenting RESTful APIs
- Documenting GraphQL APIs
- Creating API documentation sites
- Implementing API versioning documentation
- Creating API examples
- Writing API tutorials
- Documenting API authentication
- Documenting API error handling
- Creating API changelogs
- Implementing API documentation automation
- Creating API documentation templates
- Documenting API best practices
- Creating API documentation style guides
- Implementing API documentation testing
- Creating API documentation metrics
- Documenting API security requirements
- Creating API documentation for developers
- Implementing API documentation updates
Do NOT use this skill when:
- Writing application business logic (use domain-driven skill)
- Designing database schemas (use database-design skill)
- Writing API endpoint specifications (use api-design skill)
- Performing security audits (use security-auditor skill)
- Writing SQL queries (use sql-best-practices skill)
- Designing multi-page website layouts (use design-system skill)
- Analyzing deployment configurations (use deployment skill)
- Writing documentation (use documentation-best-practices skill)
OpenAPI Specification
OpenAPI Structure
openapi: 3.1.0
info:
title: API Title
description: API description
version: 1.0.0
contact:
name: API Support
email: support@example.com
url: https://example.com/support
servers:
- url: https://api.example.com/v1
description: Production server
- url: https://staging-api.example.com/v1
description: Staging server
paths:
/users:
get:
summary: List all users
operationId: listUsers
tags:
- users
parameters:
- name: page
in: query
schema:
type: integer
default: 1
- name: limit
in: query
schema:
type: integer
default: 20
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/UserList'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
post:
summary: Create a new user
operationId: createUser
tags:
- users
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/User'
responses:
'201':
description: User created
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
description: Bad request
components:
schemas:
User:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
email:
type: string
format: email
UserList:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/User'
pagination:
$ref: '#/components/schemas/Pagination'
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
security:
- BearerAuth: []
OpenAPI Best Practices
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā OpenAPI Best Practices ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā Naming: ā
ā - Use nouns for resource names ā
ā - Use plural for collections ā
ā - Use camelCase for properties ā
ā - Use PascalCase for schemas ā
ā ā
ā Versioning: ā
ā - Include version in URL path ā
ā - Use Accept header for version ā
ā - Document version changes ā
ā ā
ā Authentication: ā
ā - Document all authentication methods ā
ā - Provide authentication examples ā
ā - Document token lifecycle ā
ā ā
ā Error Handling: ā
ā - Document all error responses ā
ā - Provide error codes and messages ā
ā - Include error examples ā
ā ā
ā Pagination: ā
ā - Document pagination parameters ā
ā - Include pagination metadata ā
ā - Provide pagination examples ā
ā ā
ā Filtering and Sorting: ā
ā - Document filtering parameters ā
ā - Document sorting parameters ā
ā - Provide filtering examples ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
GraphQL Schema Documentation
GraphQL Schema Structure
type Query {
user(id: ID!): User
users(limit: Int, offset: Int): UserConnection
me: User
}
type Mutation {
createUser(input: CreateUserInput!): User!
updateUser(id: ID!, input: UpdateUserInput!): User
deleteUser(id: ID!): Boolean!
}
type User {
id: ID!
name: String!
email: String!
createdAt: DateTime!
updatedAt: DateTime!
}
input CreateUserInput {
name: String!
email: String!
password: String!
}
input UpdateUserInput {
name: String
email: String
password: String
}
type UserConnection {
nodes: [User!]!
pageInfo: PageInfo!
totalCount: Int!
}
type PageInfo {
hasNextPage: Boolean!
hasPreviousPage: Boolean!
startCursor: String
endCursor: String
}
scalar DateTime
GraphQL Best Practices
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā GraphQL Best Practices ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā Naming: ā
ā - Use camelCase for field names ā
ā - Use PascalCase for types ā
ā - Use verbs for mutations ā
ā ā
ā Pagination: ā
ā - Use cursor-based pagination ā
ā - Implement Relay connection pattern ā
ā - Document pagination fields ā
ā ā
ā Authentication: ā
ā - Document authentication requirements ā
ā - Document authorization requirements ā
ā - Document token requirements ā
ā ā
ā Error Handling: ā
ā - Document error types ā
ā - Document error codes ā
ā - Document error examples ā
ā ā
ā Input Validation: ā
ā - Document input validation rules ā
ā - Document required fields ā
ā - Document field constraints ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
API Documentation Tools
Popular Tools
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā API Documentation Tools ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā Swagger UI: ā
ā - Interactive API documentation ā
ā - OpenAPI support ā
ā - Customizable ā
ā - Self-hosted ā
ā ā
ā Redoc: ā
ā - Beautiful documentation ā
ā - OpenAPI support ā
ā - Custom themes ā
ā - CLI integration ā
ā ā
ā Postman Documentation: ā
ā - Collection documentation ā
ā - Interactive examples ā
ā - Team collaboration ā
ā - API monitoring ā
ā ā
ā Slate: ā
ā - Markdown-based ā
ā - Easy to customize ā
ā - Static site generation ā
ā - Multiple languages ā
ā ā
ā Stoplight: ā
ā - OpenAPI editor ā
ā - Documentation generation ā
ā - Mock servers ā
ā - Testing tools ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
API Documentation Checklist
Documentation Checklist
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā API Documentation Checklist ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā General: ā
ā [ ] API overview and purpose ā
ā [ ] Authentication requirements ā
ā [ ] API versioning information ā
ā [ ] Base URL information ā
ā ā
ā Endpoints: ā
ā [ ] All endpoints documented ā
ā [ ] HTTP methods documented ā
ā [ ] Request parameters documented ā
ā [ ] Request body documented ā
ā [ ] Response examples provided ā
ā [ ] Error responses documented ā
ā ā
ā Examples: ā
ā [ ] Request examples ā
ā [ ] Response examples ā
ā [ ] Error examples ā
ā [ ] Code examples ā
ā ā
ā Security: ā
ā [ ] Authentication documented ā
ā [ ] Authorization documented ā
ā [ ] Rate limiting documented ā
ā [ ] Security headers documented ā
ā ā
ā Advanced Features: ā
ā [ ] Pagination documented ā
ā [ ] Filtering documented ā
ā [ ] Sorting documented ā
ā [ ] Including related resources documented ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Real-World Impact
Before this skill:
- Incomplete API documentation
- Missing examples
- Poor API discoverability
- Developer frustration
- Support overhead
After this skill:
- Comprehensive API documentation
- Clear examples
- Easy API discoverability
- Developer satisfaction
- Reduced support overhead
Cross-References
api-design - For API design and specifications
documentation-best-practices - For documentation standards
context7-docs - For up-to-date documentation
References