API-first design
API-first design is an approach to system design in which the APIs between components of the system, and between the system and the outside world, are designed before the internal code and data structures of the system itself.
For example, in a system with separate front-end and back-end components ([client-server architecture]), each developed by different teams, the teams would collaborate on the client-server API contracts between their two parts of the system before they design the implementation of new features.
In Event-driven architecture, the event schemas are the API contracts.
There are particularly good arguments for using an API-first design approach to microservices. In this approach, the interface definitions for services are designed, ideally in collaboration with client application developers, before the services themselves are implemented. Doing big design up-front on the client-server API contracts increases the chances of building a service that meets the needs of its clients.
API modeling tools, such as RAML (RESTful API Modeling Language), may be used to support API-first design.
See also [interface definition languages (IDL)].