api-design-principles
Use before designing any REST API endpoint — covers URL structure, HTTP method semantics, pagination, caching, idempotency, and bulk operations across Python FastAPI, NestJS 11.x, and Spring Boot WebFlux 3.5.x. Complements openapi-spec-generation (spec format) and stack-specific implementation skills (code patterns).
Works with
--- name: api-design-principles description: Use before designing any REST API endpoint — covers URL structure, HTTP method semantics, pagination, caching, idempotency, and bulk operations across Python FastAPI, NestJS 11.x, and Spring Boot WebFlux 3.5.x. Complements openapi-spec-generation (spec format) and stack-specific implementation skills (code patterns). license: MIT --- ## Iron Law **NO API ENDPOINT DESIGN WITHOUT READING `reference/rest-design-principles.md` FIRST — HTTP semantics, status codes, idempotency, and caching strategies must be agreed before writing implementation code** # API Design Principles Stack-agnostic REST design principles for APIs built with Python FastAPI, NestJS 11.x, or Spring Boot WebFlux 3.5.x. Use this skill during the design phase — before writing controllers or route handlers. ## When to Use - Designing new REST endpoints from scratch - Reviewing whether existing endpoints follow REST conventions - Choosing a pagination strategy (offset vs cursor) - Adding idempotency keys to mutation endpoints - Designing caching strategy (ETags, Cache-Control) - Designing bulk/batch endpoints with partial failure handling - Running the pre-implementation API design checklist ## How This Skill Relates to Others | Skill | Scope | |-------|-------| | **api-design-principles** (this skill) | Design phase — REST semantics, patterns, checklist | | **openapi-spec-generation** | Documentation phase — OpenAPI 3.1 spec, developer guide | | **java-spring-api** | Implementation — Spring WebFlux controllers, services | | **nestjs-api** | Implementation — NestJS modules, controllers, DTOs | | **python-dev** | Implementation — FastAPI routes, Pydantic models | ## Process ### Step 1: Run the Pre-Implementation Checklist Read `assets/api-design-checklist.md` before designing any endpoint. Focus on: - Resource naming and URL structure - HTTP method assignment - Status codes per operation - Pagination strategy choice - Versioning strategy ### Step 2: Apply REST Design Principles Read `reference/rest-design-principles.md` for detailed patterns covering: - URL structure and resource naming (plural nouns, shallow nesting) - HTTP methods and correct status codes per operation type - Pagination — offset-based vs cursor-based, with examples for all 3 stacks - Versioning strategies (URL path recommended) - Rate limiting headers (X-RateLimit-*) - Authentication (Bearer token, 401 vs 403 distinction) - Error response format (consistent structure across all 3 stacks) - **Caching** — Cache-Control, ETags, conditional GET (304) — all 3 stacks - **Idempotency keys** — mutation safety for payment and order endpoints — all 3 stacks - **Bulk operations** — batch endpoints with 207 Multi-Status partial failure — all 3 stacks - CORS configuration — all 3 stacks - Health and monitoring endpoints ### Step 3: Document with OpenAPI Once the design is finalized, hand off to `openapi-spec-generation` to generate the OpenAPI 3.1 spec. ## Reference Files | File | Content | Load When | |------|---------|-----------| | `reference/rest-design-principles.md` | URL structure, HTTP methods, pagination, caching, idempotency, bulk ops, CORS — examples for FastAPI, NestJS, Spring WebFlux | Designing new endpoints or reviewing REST compliance | | `assets/api-design-checklist.md` | 60-item pre-implementation checklist (REST only) with stack-specific items for all 3 backends | Before starting any new endpoint or reviewing an existing API | ## Error Handling **Inconsistent status codes across endpoints**: Follow the status code reference in `reference/rest-design-principles.md` section "HTTP Methods and Status Codes". All endpoints in a service must be consistent. **Pagination strategy mismatch**: Choose offset-based for admin/report endpoints, cursor-based for real-time/feed endpoints. Document the choice — do not mix strategies within the same resource collection.
More API Design skills
lark-event
larksuite/cli
Lark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via `lark-cli event consume <EventKey>` (covers IM messages/reactions/chat changes, Approval status changes, Task updates, VC meeting started/joined/ended, Minutes generated, Whiteboard updated, etc.). Use for Lark bots, real-time message processing, long-running subscribers, streaming webhook/push handlers. Supports `--max-events` / `--timeout` bounded runs and a stderr ready-marker contract — designed for AI agents running as subprocesses.
lark-contact
larksuite/cli
飞书 / Lark 通讯录:按姓名 / 邮箱解析成 open_id,或按 open_id 反查姓名 / 部门 / 邮箱 / 联系方式 / 个人状态 / 签名,以及按关键词搜索当前用户可见的机器人 / 智能体(agent)。当用户提到一个名字要下一步发消息 / 排日程,或拿到 open_id 想查具体信息时使用。不负责部门树遍历、按部门列员工、组织架构图,这类需求走原生 OpenAPI。
lark-openapi-explorer
larksuite/cli
飞书/Lark 原生 OpenAPI 探索:从官方文档库中挖掘未经 CLI 封装的原生 OpenAPI 接口。当用户的需求无法被现有 lark-* skill 或 lark-cli 已注册命令满足,需要查找并调用原生飞书 OpenAPI 时使用。

