writing-api-docs
Provides structured templates and patterns for documenting REST API endpoints, including request/response schemas, error codes, and field descriptions. Offers concrete examples, HTTP status code guidance, and a quality checklist for comprehensive API reference docs.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install lerianstudio-ring-writing-api-docs
Repository
Skill path: tw-team/skills/writing-api-docs
Provides structured templates and patterns for documenting REST API endpoints, including request/response schemas, error codes, and field descriptions. Offers concrete examples, HTTP status code guidance, and a quality checklist for comprehensive API reference docs.
Open repositoryBest for
Primary workflow: Write Technical Docs.
Technical facets: Tech Writer, Backend.
Target audience: API developers, technical writers, and engineering teams creating or maintaining REST API documentation.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: LerianStudio.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install writing-api-docs into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/LerianStudio/ring before adding writing-api-docs to shared team environments
- Use writing-api-docs for documentation workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: writing-api-docs
description: |
Patterns and structure for writing API reference documentation including
endpoint descriptions, request/response schemas, and error documentation.
trigger: |
- Documenting REST API endpoints
- Writing request/response examples
- Documenting error codes
- Creating API field descriptions
skip_when: |
- Writing conceptual guides → use writing-functional-docs
- Reviewing documentation → use documentation-review
- Writing code → use dev-team agents
sequence:
before: [documentation-review]
related:
similar: [writing-functional-docs]
complementary: [api-field-descriptions, documentation-structure]
---
# Writing API Reference Documentation
API reference documentation describes what each endpoint does, its parameters, request/response formats, and error conditions. It focuses on the "what" rather than the "why."
## API Reference Principles
- **RESTful and Predictable:** Standard HTTP methods, consistent URL patterns, document idempotency
- **Consistent Formats:** JSON requests/responses, clear typing, standard error format
- **Explicit Versioning:** Version in URL path, backward compatibility notes, deprecated fields marked
---
## Endpoint Documentation Structure
| Section | Content |
|---------|---------|
| **Title** | Endpoint name |
| **Description** | Brief description of what the endpoint does |
| **HTTP Method + Path** | `POST /v1/organizations/{orgId}/ledgers/{ledgerId}/accounts` |
| **Path Parameters** | Table: Parameter, Type, Required, Description |
| **Query Parameters** | Table: Parameter, Type, Default, Description |
| **Request Body** | JSON example + fields table |
| **Success Response** | Status code + JSON example + fields table |
| **Errors** | Table: Status Code, Error Code, Description |
---
## Field Description Patterns
| Type | Pattern |
|------|---------|
| Basic | `name: string — The name of the Account` |
| With constraints | `code: string — The asset code (max 10 chars, uppercase)` |
| With example | `email: string — Email address (e.g., "[email protected]")` |
| Deprecated | `chartOfAccountsGroupName: string — **[Deprecated]** Use \`route\` instead` |
---
## Data Types Reference
| Type | Description | Example |
|------|-------------|---------|
| `uuid` | UUID v4 identifier | `3172933b-50d2-4b17-96aa-9b378d6a6eac` |
| `string` | Text value | `"Customer Account"` |
| `integer` | Whole number | `42` |
| `boolean` | True/false | `true` |
| `timestamptz` | ISO 8601 (UTC) | `2024-01-15T10:30:00Z` |
| `jsonb` | JSON object | `{"key": "value"}` |
| `array` | List of values | `["item1", "item2"]` |
| `enum` | Predefined values | `currency`, `crypto` |
---
## Request/Response Examples
**Rules:**
- Show realistic, working examples (not "foo", "bar")
- Show all fields that would be returned
- Use actual UUIDs, timestamps, realistic data
---
## Error Documentation
**Standard error format:**
```json
{
"code": "ACCOUNT_NOT_FOUND",
"message": "The specified account does not exist",
"details": { "accountId": "invalid-uuid" }
}
```
**Error table:**
| Status | Code | Description | Resolution |
|--------|------|-------------|------------|
| 400 | INVALID_REQUEST | Validation failed | Check request format |
| 401 | UNAUTHORIZED | Missing/invalid auth | Provide valid API key |
| 403 | FORBIDDEN | Insufficient permissions | Contact admin |
| 404 | NOT_FOUND | Resource doesn't exist | Verify resource ID |
| 409 | CONFLICT | Resource already exists | Use different identifier |
| 422 | UNPROCESSABLE_ENTITY | Business rule violation | Check constraints |
| 429 | TOO_MANY_REQUESTS | Rate limit exceeded | Retry after delay |
| 500 | INTERNAL_ERROR | Server error | Retry or contact support |
---
## HTTP Status Codes
**Success:** 200 (GET/PUT/PATCH), 201 (POST creates), 204 (DELETE)
**Client errors:** 400 (malformed), 401 (no auth), 403 (no permission), 404 (not found), 409 (conflict), 422 (invalid semantics), 429 (rate limit)
**Server errors:** 500 (internal)
---
## Pagination Documentation
For paginated endpoints, document query parameters:
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| limit | integer | 10 | Results per page (max 100) |
| page | integer | 1 | Page number |
Response includes: `items`, `page`, `limit`, `totalItems`, `totalPages`
---
## Versioning Notes
> **Note:** You're viewing documentation for the **current version** (v3).
For deprecated: `> **Deprecated:** This endpoint will be removed in v4. Use [/v3/accounts](link) instead.`
---
## Quality Checklist
- [ ] HTTP method and path correct
- [ ] All path parameters documented
- [ ] All query parameters documented
- [ ] All request body fields documented with types
- [ ] All response fields documented with types
- [ ] Required vs optional clear
- [ ] Realistic request/response examples included
- [ ] All error codes documented
- [ ] Deprecated fields marked
- [ ] Links to related endpoints included