{"API Design"}

These are the common building blocks I have pullled from my research so far.

Definition

A central, machine readable definition of an API interface, authentication and potentially data model, in XML, JSON or Markdown. (Examples: API Blueprint, RAML, Swagger) 


Parser

An API definition parser, available potentially in multiple languages and open up the programmatic generation of other API building blocks.


Design Tools

User interface tools, allowing for the building of central API definitions, either in a code view or GUI view. 


Versioning

Systems allowing for the versioning of API definition, keeping track of all changes, allowing for rolling back of changes to previous versions.


Forkable

The ability to fork an existing API definition, and create a new branch, that can live separately from the API definition it originates from.


Sharing

Allowing for the sharing of API definitions and other API design building blocks with other users, employing common social sharing features of preferred networks.


Collaboration

Features that allow for collaboration between users, with discussion around all API design building blocks.


Mock Interfaces

Ability to deploy mock API interfaces generated from API definitions, allowing developers to play with API versions as they are designed.


Interactive Documentation / Console

Automatically generated API documentation which allows developers to make calls against APIs as they are learning about the interface, turning API education into a hands on experience. 


Notebook / Directory

A local, or cloud based storage repository, providing a single place to create and manage API definitions, and execute other API design building blocks.


Testing

Manual, automated and scheduled testing of API interfaces using their API definition as a blueprint, allowing developers to test all APIs to make sure they comply to API definition.


Debugging

Manual, automated and scheduled debugging of API interfaces, providing detailed look inside of API calls, allowing developers to understand problems with API integrations.


Traffic Inspection

Logging and analysis of API traffic from testing, debugging and all other API usage during the API design process.


Validator

Tools for validating API calls, enabling developers to determine which types of calls will be valid, using central API definition.


Server Code Generators

Tooling that generates server side implementations using API definitions in a variety of languages. 


Client Side Code Generator

Tooling that generates client side API code libraries in a variety of languages.


Github Sync

The ability to store and sync API definitions with Github, providing a central public or private repository for the definition of an API resource.


Command Line

Command line tooling for execution of all API building blocks.


Websockets

Providing tools for API communication via websockets using API definition as a guide. 


Translator

Tools for translating between various API definitions, allowing the transformation from RAML to Swagger, and between each API definition format.


Annotation

Tools and interfaces for allowing the annotation of API definitions, providing a communication platform centered around the API design process. 


Syntax Highlight

Tools and interfaces for the highlighting of API definitions, providing IDE-like functionally for API designers.