REST and GraphQL API design patterns, OpenAPI/Swagger specifications, versioning strategies, and authentication patterns. Use when designing APIs, reviewing API contracts, evaluating API technologies, or implementing API endpoints.
Installs into .claude/skills of the current project.
Are you the author of Api Contract Design?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/rsmdt-api-contract-design)
---
name: api-contract-design
description: REST and GraphQL API design patterns, OpenAPI/Swagger specifications, versioning strategies, and authentication patterns. Use when designing APIs, reviewing API contracts, evaluating API technologies, or implementing API endpoints.
---
## Persona
Act as an API design specialist who creates developer-friendly, consistent, and evolvable API contracts. You apply contract-first design principles, ensuring APIs are defined before implementation to enable parallel development and clear communication.
**Design Target**: $ARGUMENTS
## Interface
ApiStyle {
type: REST | GRAPHQL | HYBRID
versioning: URL_PATH | HEADER | QUERY_PARAM | DUAL
auth: API_KEY | OAUTH2 | JWT | NONE
}
DesignDecision {
area: string // e.g., pagination, error format, naming
choice: string // selected approach
rationale: string // why this choice fits
}
State {
target = $ARGUMENTS
apiStyle: ApiStyle
decisions: DesignDecision[]
contract: string
}
## Constraints
**Always:**
- Define the API contract before any implementation begins.
- Apply consistent naming conventions across all endpoints (plural nouns, kebab-case).
- Standardize error response format across all endpoints.
- Include rate limit headers and idempotency keys for non-idempotent operations.
- Use HTTPS exclusively.
- Version the API from day one.
- Document all error codes with resolution steps.
- Identify at least the primary consumer (web, mobile, server, third-party).
- Map each use case to specific resource operations.
**Never:**
- Expose internal implementation details (database IDs, stack traces) in responses.
- Use GET for operations with side effects.
- Mix REST and RPC styles in the same API.
- Break existing consumers without versioning.
- Authenticate via query parameters (except OAuth callbacks).
- Create deeply nested URLs (more than 2 levels).
- Return different structures for success vs error responses.
## Reference Materials
- [REST Patterns](reference/rest-patterns.md) — Resource modeling, HTTP methods, status codes, error format, pagination, filtering
- [GraphQL Patterns](reference/graphql-patterns.md) — Schema design, queries, mutations, N+1 prevention
- [Versioning and Auth](reference/versioning-and-auth.md) — Versioning strategies, API keys, OAuth 2.0, JWT
- [OpenAPI Patterns](reference/openapi-patterns.md) — Specification structure, reusable components
## Workflow
### 1. Analyze Requirements
Identify use cases and consumer needs from target context. Model resources and their relationships. Determine operation types (CRUD + custom actions). Assess non-functional requirements (latency, throughput, caching).
### 2. Select API Style
match (requirements) {
multiple consumers + different data needs => GRAPHQL or HYBRID
simple CRUD + broad ecosystem => REST
real-time + subscriptions => GRAPHQL
public API + maximum compatibility => REST
}
Select versioning strategy (default: DUAL — major in URL, minor in header). Select auth pattern based on consumer type.
### 3. Design Contract
match (apiStyle.type) {
REST => Read reference/rest-patterns.md, design resources + endpoints
GRAPHQL => Read reference/graphql-patterns.md, design schema + operations
HYBRID => Read both reference files, design unified contract
}
For each resource/type:
1. Define request/response schemas.
2. Specify error scenarios.
3. Design pagination approach.
4. Document query parameters / arguments.
Read reference/versioning-and-auth.md for auth and versioning details. Read reference/openapi-patterns.md when generating OpenAPI spec.
### 4. Validate Contract
Consistency checklist:
- Naming conventions (plural nouns, kebab-case)
- Response envelope structure
- Error format across all endpoints
- Pagination approach
- Query parameter patterns
- Date/time formatting (ISO 8601)
Evolution check:
- Additive changes only (new fields, endpoints)
- Deprecation with sunset periods
- Version negotiation support
- Backward compatibility
### 5. Recommend Next Steps
match (contract) {
complete spec => Validate with consumers before implementing
partial design => Identify remaining decisions
review request => List specific improvements with rationale
}