Table of Contents
- Introduction
- Table of Contents
- Design Principles
- General Guidelines
- Security
- Compatibility
- Must: Don’t Break Backward Compatibility
- Should: Prefer Compatible Extensions
- Must: Prepare Clients for Compatible API Extensions (the Robustness Principle)
- Must: Always Return JSON Objects As Top-Level Data Structures To Support Extensibility
- Should: Used Open-Ended List of Values (x-extensible-enum) Instead of Enumerations
- Should: Avoid Versioning
- Must: Use Media Type Versioning
- Must: Do Not Use URI Versioning
- Should: Provide Version Information in OpenAPI Documentation
- JSON Guidelines
- API Naming
- Must: Use lowercase separate words with hyphens for Path Segments
- Must: Use snake_case (never camelCase) for Query Parameters
- Must: Use Hyphenated HTTP Headers
- Should: Prefer Hyphenated-Pascal-Case for HTTP header Fields
- Could: Use Standardized Headers
- Must: Pluralize Resource Names
- Could: Use /api as first Path Segment
- Must: Avoid Trailing Slashes
- Could: Use Conventional Query Strings
- Resources
- Must: Avoid Actions — Think About Resources
- Should: Define useful resources
- Must: Keep URLs Verb-Free
- Must: Use Domain-Specific Resource Names
- Must: Identify resources and Sub-Resources via Path Segments
- Could: Consider Using (Non-) Nested URLs
- Should: Limit number of Resources
- Should: Limit number of Sub-Resource Levels
- HTTP
- Performance
- Pagination
- Hypermedia
- Data Formats
- Common Data Objects
- Common Headers
- Proprietary Headers
- Deprecation
- API Operation
- Events
- Must: Treat Events as part of the service interface
- Must: Ensure that Events define useful business resources
- Must: Ensure that Event Types conform to Nakadi's API
- Must: Events must not provide sensitive customer personal data.
- Must: Use Business Events to signal steps and arrival points in business processes
- Must: Use Data Change Events to signal mutations
- Should: Use the hash partition strategy for Data Change Events
- Should: Ensure that Data Change Events match API representations
- Must: Indicate ownership of Event Types
- Must: Define Event Payloads in accordance with the overall Guidelines
- Must: Maintain backwards compatibility for Events
- Must: Use unique Event identifiers
- Must: Follow conventions for Event Type names
- References
- Tooling