The API design pattern catalog is designed to help developers and technical product managers (TPMs) quickly understand what each pattern is for, when it should be used, and how it differs from others. This serves as a map for the rest of the catalog and as a standalone reference for design reviews and governance activities.

3.1. Overview of All API Design Patterns

Below is a concise summary of each pattern. Each description highlights the core intent of the pattern — not implementation details.

Pattern Core Purpose Typical Use Cases
CRUD (Resource-Oriented) Manage simple entities with create/read/update/delete operations. Customer records, product catalogs, configuration records.
Extended CRUD Model lifecycle transitions or workflow steps that go beyond pure data editing. Approvals, submissions, publishing flows, activation/deactivation.
Functional Resource Expose explicit domain actions or intent-based operations. Canceling orders, applying discounts, confirming transactions.
Query/Search Model Provide read-optimized endpoints for searching, sorting, and filtering. Dashboards, reporting, search interfaces, analytics.
Bulk / Batch / Import Operate on multiple resources at once for efficiency and throughput. Imports, migrations, mass updates, multi-item processing.
Long-Running & Asynchronous Operations Handle operations that take time to complete using job/task resources. Report generation, large file processing, background workflows.
Composite / Aggregator Combine data from multiple backend sources into a single consumer-friendly response. UI summaries, dashboards, mobile client APIs, partner overviews.
Event-Driven / Webhooks Notify consumers of changes asynchronously through push-based updates. Order status notifications, webhook integrations, event subscriptions.
Streaming APIs (SSE, WebSockets, gRPC Streaming) Deliver real-time or continuous streams of data to clients. Live updates, chat, IoT feeds, collaboration tools.
Pagination Chunk large datasets into manageable pages to protect server and client resources. Large collections, transaction logs, lists.
Filtering and Sorting Allow clients to narrow and order collection results via query parameters. Search interfaces, custom data views.
Singleton Resource Manage resources with exactly one instance within a context. User profiles, global settings, dashboards.
Polymorphic Schema Dynamically adapt response/request shapes based on underlying types. Heterogeneous collections, varied event payloads.
File Upload Standardize binary data transfers with or without metadata. Profile images, document attachments.
Cache Control Optimize performance and reduce load via HTTP caching directives. High-traffic static or slow-changing data.
Optimistic Locking Prevent lost updates in concurrent scenarios using conditional requests. Collaborative edits, configuration updates.
Pessimistic Locking Exclusively lock resources to prevent modifications during external workflows. Long transactions, strict human-in-the-loop edits.
Upsert Create or update a resource in one call using a client-provided identifier. Syncing external data, idempotent writes.
Draft Workflow Resource Manage resources requiring partial saves and multi-stage validation. Complex forms, CMS publishing flows.
Hypermedia-Driven Workflow Guide clients through state transitions via server-provided links. Self-navigating clients, complex state machines.
Lookup List Offer name + descriptions of common lookup values, rather than enums. Frequently changing lookup/enum lists.
Filter Collection by Identifier Retrieve a specific batch of resources via explicit ID lists. Resolving N+1 problems, shopping carts.
Master Detail Defer high-resolution child records until requested after a summary query. Time-series data, hierarchical dashboards.
Response Shaping and Inclusion Empower clients to dictate the exact shape and nested inclusion of payloads. Mobile data optimization, dynamic UI views.
Nested Resource Lifecycle Scope child resources under a parent instance for strict ownership. Domain composition (e.g., projects/tasks).
Change Request Workflow Replace direct mutations with a formal proposal and approval lifecycle. Maker-checker processes, regulated changes.
Intent-Based API Design Shift design from data models to fulfilling specific goals to reduce cognitive load. AI agents, autonomous LLM execution.
Intent as a Resource Model long-running, multi-step transactions as trackable resources. Asynchronous approvals, paused wizards.
Backend for Frontend (BFF) Provide dedicated backend services optimized for specific client constraints. Mobile vs. Web UI separation.
Backend for Context (BFC) Shape and summarize API data specifically for an AI agent’s context window. AI integration, legacy API bridging.

3.2. Pattern Selection Checklist (Heuristics)

Use these quick decisions to drive pattern choice:

Principle: Choose the pattern that best expresses intent and matches consumer use, domain structure, and operational behavior.

3.3. Pattern Relationships and Differentiators

This overview also helps clarify distinctions that developers often confuse:

3.4 Pattern Comparison Matrix

This matrix helps compare patterns along key dimensions used in design reviews.

Pattern Primary Purpose Typical URI Form Latency Needs Workflow? Computation? Volume Output Shape Best For
CRUD (Resource-Oriented) Manage simple entities /customers/{id} Low No No Low–Medium Full entity Basic data mgmt
Extended CRUD Lifecycle transitions /articles/{id}/submit Low–Medium Yes No Low–Medium Updated entity State machines
Functional Resource Actions / computations /estimate-tax Low–Medium No Yes Low–High Computed result Business actions
Query/Search Model Search & read models /search-orders Low–Medium No No High Summary projections Dashboards
Bulk / Batch / Import Multi-item ingest /customers/bulk-import Medium No No High Per-item results Imports with partial success
Batch Import Transactional ingest /customers/batch-import Medium No No High Per-item validation All-or-nothing imports
Long-Running & Asynchronous Operations Long-running tasks /report-jobs/{id} High No Yes Medium Job resource Reports, analytics
Composite / Aggregator / BFF Aggregated views /customer-overview/{id} Medium No Maybe Medium View model UI-optimized APIs
Event-Driven / Webhooks Async notifications POST callbackUrl N/A No No Low–High Event payload Integrations
Streaming APIs (SSE, WebSockets, gRPC Streaming) Real-time updates /events/* or /ws/* Very Low No No High Event stream Live UIs, telemetry
Pagination Chunk datasets ?page=2&limit=50 Low No No High Paginated List Large collections
Filtering & Sorting Narrow list results ?status=active&sort=-1 Low No No High Filtered List Search interfaces
Singleton Resource Single entity instance /user/profile Low No No Low Single entity Settings, profiles
Polymorphic Schema Handle varying shapes /events Low No No Low–Med Mixed entities Heterogeneous data
File Upload Binary transfer /users/1/avatar Low–Med No No Med–High Binary or status Documents, media
Cache Control Optimize reads (Headers: ETag, etc) Low No No High Cached entity Read-heavy endpoints
Optimistic Locking Concurrency control If-Match: "etag" Low No No Low Updated entity Collaborative edits
Pessimistic Locking Exclusive lock /orders/1/lock Low Yes No Low Status / Lock Strict edits, long workflows
Upsert Create/Update PUT /items/{client_id} Low No No Low–Med Upserted entity Idempotent syncs
Draft Workflow Partial saves /drafts/{id} Low Yes No Low–Med Draft entity Multi-stage forms
Hypermedia Workflow Server-guided flow (JSON with _links) Low Yes No Low–Med Linked entity Self-navigating UIs
Filter by Identifier Batch fetch known IDs /items?ids=1,2,3 Low No No Low–Med Item list Cart loads, N+1 fixes
Master Detail Progressive load /summary, /detail Low No No High Summary / Detail Dashboards, time-series
Response Shaping Client payload shape ?include=details Low No No Med–High Shaped entity Mobile optimizations
Nested Lifecycle Parent/child scope /parents/1/children Low No No Medium Scoped entity Strict composition
Change Request Formal proposals /requests/{id} Low–Med Yes No Low Request entity Regulated workflows
Intent-Based Design Goal execution /reservations/change Low–Med No Yes Low–Med Outcome entity AI/LLM integrations
Workflow Resource Multi-step states /returns/{id} Med–High Yes Maybe Low Workflow entity Paused wizards, async steps
Backend for Context AI payload optimization /ai-context/summary Low–Med No Yes Low–Med AI Context LLM prompt data
Backend for Frontend UI payload optimization /mobile-api/home Low–Med No Maybe Low–Med UI View Model Client-specific APIs