api-rest-design
Apply when designing RESTful APIs, defining endpoints, HTTP methods, status codes, and response formats.
$ 설치
git clone https://github.com/CoderMariusz/MonoPilot /tmp/MonoPilot && cp -r /tmp/MonoPilot/.claude/skills/api-rest-design ~/.claude/skills/MonoPilot// tip: Run this command in your terminal to install the skill
SKILL.md
name: api-rest-design description: Apply when designing RESTful APIs, defining endpoints, HTTP methods, status codes, and response formats. version: 1.1.0 tokens: ~700 confidence: high sources:
- https://restfulapi.net/
- https://www.rfc-editor.org/rfc/rfc9110 last_validated: 2025-12-10 next_review: 2025-12-24 tags: [api, rest, backend, design]
When to Use
Apply when designing RESTful APIs, defining endpoints, HTTP methods, status codes, and response formats.
Patterns
Pattern 1: Resource Naming
# Source: https://restfulapi.net/resource-naming/
GOOD:
GET /users # List users
GET /users/123 # Get user 123
POST /users # Create user
PUT /users/123 # Update user 123
DELETE /users/123 # Delete user 123
GET /users/123/orders # User's orders (nested resource)
BAD:
GET /getUsers # Verb in URL
POST /createUser # Verb in URL
GET /user/123 # Singular (use plural)
Pattern 2: HTTP Status Codes
# Source: https://www.rfc-editor.org/rfc/rfc9110
Success:
200 OK - GET/PUT success with body
201 Created - POST success, include Location header
204 No Content - DELETE success, no body
Client Errors:
400 Bad Request - Invalid input/payload
401 Unauthorized - Missing/invalid auth
403 Forbidden - Auth valid, no permission
404 Not Found - Resource doesn't exist
409 Conflict - Resource state conflict
422 Unprocessable - Validation failed
Server Errors:
500 Internal - Unexpected server error
503 Unavailable - Service temporarily down
Pattern 3: Response Format
// Source: https://restfulapi.net/
// Success response
{
"data": { "id": 123, "name": "John" },
"meta": { "timestamp": "2025-12-10T12:00:00Z" }
}
// Error response
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid email format",
"details": [{ "field": "email", "message": "Must be valid email" }]
}
}
// List with pagination
{
"data": [...],
"meta": { "total": 100, "page": 1, "limit": 20 }
}
Pattern 4: Filtering & Pagination
# Source: https://restfulapi.net/
GET /users?status=active&role=admin # Filter
GET /users?sort=created_at:desc # Sort
GET /users?page=2&limit=20 # Pagination
GET /users?fields=id,name,email # Field selection
Pattern 5: Versioning
# Source: https://restfulapi.net/versioning/
URL path (recommended):
GET /api/v1/users
Header (alternative):
Accept: application/vnd.api+json;version=1
Anti-Patterns
- Verbs in URLs - Use nouns:
/usersnot/getUsers - Wrong status codes - Don't return 200 for errors
- Inconsistent responses - Same format for all endpoints
- Missing pagination - Always paginate lists
- No versioning - Plan for API evolution
Verification Checklist
- Resource URLs use plural nouns
- Correct HTTP methods (GET read, POST create, etc.)
- Appropriate status codes returned
- Consistent error response format
- Pagination on list endpoints
- API versioning strategy defined
Repository

CoderMariusz
Author
CoderMariusz/MonoPilot/.claude/skills/api-rest-design
1
Stars
0
Forks
Updated48m ago
Added6d ago