AEP (API Enhancement Proposals) Skill
Overview
AEPs (API Enhancement Proposals) are the authoritative design standards for APIs. They ensure consistency, intuitiveness, and long-term stability across all services.
Rule of Thumb: AEPs are numbered by importance. Lower numbers are more fundamental.
- < 100: Meta-policies and governance.
- 100-199: CORE STANDARDS. Every API developer must know these.
- 200+: Specific patterns and edge cases.
AEP Index
📌 Core Resource Design (Start Here)
Defines the fundamental shape of the API.
- AEP-121: Resource-oriented design (The data model: Resources vs Collections)
- AEP-122: Resource names (URL structure, formatting)
- AEP-124: Resource association (Relationships between resources)
- AEP-101: OpenAPI (Specification standards)
- AEP-102: APIs and API terminology
- AEP-126: Enumerations
- AEP-127: HTTP and gRPC Transcoding
🛠️ Standard Methods (The "CRUD")
Every resource should support these standard interactions unless impossible.
- AEP-130: Methods (General guidance)
- AEP-131: Get (Retrieving a single resource)
- AEP-132: List (Listing collections, includes pagination)
- AEP-133: Create (Creating new resources)
- AEP-134: Update (Updating resources,
update_mask)
- AEP-135: Delete (Deleting resources)
⚡ Advanced Methods
- AEP-136: Custom methods (Verbs beyond CRUD, e.g.,
Cancel, Undelete)
- AEP-137: Apply (Declarative configuration updates)
📋 Fields & Data Types
Naming conventions and data formats.
- AEP-140: Field names (Snake_case, reserved words)
- AEP-141: Quantities (Units, measurements)
- AEP-142: Time and duration (Timestamp formats)
- AEP-143: Standardized codes (IETF/ISO standards)
- AEP-144: Array fields (Repeated fields)
- AEP-145: Ranges (Start/end intervals)
- AEP-146: Generic fields (Any, Struct)
- AEP-148: Standard fields (
name, create_time, update_time, display_name)
🧩 Common Patterns & Features
- AEP-158: Pagination (Page tokens, page size)
- AEP-151: Long-running operations (Async tasks)
- AEP-193: Errors (Status codes, error details)
- AEP-154: Preconditions (ETags, concurrency)
- AEP-155: Idempotency (Request IDs)
- AEP-156: Singleton resources (Config, Settings)
- AEP-157: Partial responses (Field selection)
- AEP-159: Reading across collections ("List all books in all libraries")
- AEP-160: Filtering (Filter syntax)
- AEP-161: Field masks (Partial updates)
- AEP-162: Resource Revisions
- AEP-164: Soft delete
📚 Documentation & Compatibility
- AEP-180: Protobuf Backwards compatibility
- AEP-191: File and directory structure
- AEP-192: Documentation (Comments, formatting)
🔍 Specific Patterns (200+)
- AEP-203: Field behavior documentation (Required, Output Only)
- AEP-210: Unicode
- AEP-211: Authorization checks
- AEP-213: Common components
- AEP-214: Resource expiration (TTL)
- AEP-216: States (Enums for lifecycle)
- AEP-217: Unreachable resources
📦 Batch Operations
Essential for high-volume agent operations.
- AEP-231: Batch Get
- AEP-233: Batch Create
- AEP-234: Batch Update
- AEP-235: Batch Delete
Pro Tip: Partial Success for Agents
When building APIs for agents, prefer partial success semantics over all-or-nothing atomicity, even for synchronous batch operations. This allows agents to succeed on valid operations and receive specific error details for failed ones, preventing a single invalid entry from blocking an entire batch. Use a failed_requests map to return individual errors.
🏛️ Meta & Governance
- AEP-1: Purpose and Guidelines
- AEP-5: Designing an API (The process)
- AEP-300: AEP Editions
How to Use
- Identify the Requirement: e.g., "I need to add a 'status' field."
- Find the Rule: Search the index above. "AEP-216: States" looks relevant.
- Read the Standard:
- The content is located in:
references/aep/general/<NUMBER>.md
- Example: To read about Standard Fields, check
references/aep/general/0148.md
- Verify: Ensure your implementation matches the spec exactly (naming, behavior, types).
Pro Tip: Use grep to search across all AEPs if the index isn't enough:
grep -r "my search term" references/aep/general
1---2name: aep3description: AEP (API Enhancement Proposals) design standards. Use when designing, reviewing, or implementing APIs to ensure compliance with AEP conventions.4---56# AEP (API Enhancement Proposals) Skill78## Overview910AEPs (API Enhancement Proposals) are the authoritative design standards for APIs. They ensure consistency, intuitiveness, and long-term stability across all services.1112**Rule of Thumb:** AEPs are numbered by importance. **Lower numbers are more fundamental.**1314- **< 100:** Meta-policies and governance.15- **100-199:** **CORE STANDARDS.** Every API developer must know these.16- **200+:** Specific patterns and edge cases.1718## AEP Index1920### 📌 Core Resource Design (Start Here)2122_Defines the fundamental shape of the API._2324- **AEP-121:** Resource-oriented design (The data model: Resources vs Collections)25- **AEP-122:** Resource names (URL structure, formatting)26- **AEP-124:** Resource association (Relationships between resources)27- **AEP-101:** OpenAPI (Specification standards)28- **AEP-102:** APIs and API terminology29- **AEP-126:** Enumerations30- **AEP-127:** HTTP and gRPC Transcoding3132### 🛠️ Standard Methods (The "CRUD")3334_Every resource should support these standard interactions unless impossible._3536- **AEP-130:** Methods (General guidance)37- **AEP-131:** **Get** (Retrieving a single resource)38- **AEP-132:** **List** (Listing collections, includes pagination)39- **AEP-133:** **Create** (Creating new resources)40- **AEP-134:** **Update** (Updating resources, `update_mask`)41- **AEP-135:** **Delete** (Deleting resources)4243### ⚡ Advanced Methods4445- **AEP-136:** Custom methods (Verbs beyond CRUD, e.g., `Cancel`, `Undelete`)46- **AEP-137:** Apply (Declarative configuration updates)4748### 📋 Fields & Data Types4950_Naming conventions and data formats._5152- **AEP-140:** Field names (Snake_case, reserved words)53- **AEP-141:** Quantities (Units, measurements)54- **AEP-142:** Time and duration (Timestamp formats)55- **AEP-143:** Standardized codes (IETF/ISO standards)56- **AEP-144:** Array fields (Repeated fields)57- **AEP-145:** Ranges (Start/end intervals)58- **AEP-146:** Generic fields (Any, Struct)59- **AEP-148:** Standard fields (`name`, `create_time`, `update_time`, `display_name`)6061### 🧩 Common Patterns & Features6263- **AEP-158:** **Pagination** (Page tokens, page size)64- **AEP-151:** Long-running operations (Async tasks)65- **AEP-193:** **Errors** (Status codes, error details)66- **AEP-154:** Preconditions (ETags, concurrency)67- **AEP-155:** Idempotency (Request IDs)68- **AEP-156:** Singleton resources (Config, Settings)69- **AEP-157:** Partial responses (Field selection)70- **AEP-159:** Reading across collections ("List all books in all libraries")71- **AEP-160:** Filtering (Filter syntax)72- **AEP-161:** Field masks (Partial updates)73- **AEP-162:** Resource Revisions74- **AEP-164:** Soft delete7576### 📚 Documentation & Compatibility7778- **AEP-180:** Protobuf Backwards compatibility79- **AEP-191:** File and directory structure80- **AEP-192:** Documentation (Comments, formatting)8182### 🔍 Specific Patterns (200+)8384- **AEP-203:** Field behavior documentation (Required, Output Only)85- **AEP-210:** Unicode86- **AEP-211:** Authorization checks87- **AEP-213:** Common components88- **AEP-214:** Resource expiration (TTL)89- **AEP-216:** States (Enums for lifecycle)90- **AEP-217:** Unreachable resources9192### 📦 Batch Operations9394_Essential for high-volume agent operations._9596- **AEP-231:** Batch Get97- **AEP-233:** Batch Create98- **AEP-234:** Batch Update99- **AEP-235:** Batch Delete100101> **Pro Tip: Partial Success for Agents**102> When building APIs for agents, prefer **partial success** semantics over all-or-nothing atomicity, even for synchronous batch operations. This allows agents to succeed on valid operations and receive specific error details for failed ones, preventing a single invalid entry from blocking an entire batch. Use a `failed_requests` map to return individual errors.103104### 🏛️ Meta & Governance105106- **AEP-1:** Purpose and Guidelines107- **AEP-5:** Designing an API (The process)108- **AEP-300:** AEP Editions109110## How to Use1111121. **Identify the Requirement:** e.g., "I need to add a 'status' field."1132. **Find the Rule:** Search the index above. "AEP-216: States" looks relevant.1143. **Read the Standard:**115 - The content is located in: `references/aep/general/<NUMBER>.md`116 - _Example:_ To read about Standard Fields, check `references/aep/general/0148.md`1174. **Verify:** Ensure your implementation matches the spec exactly (naming, behavior, types).118119**Pro Tip:** Use `grep` to search across all AEPs if the index isn't enough:120`grep -r "my search term" references/aep/general`