Project Title: 
Behavioural Application Program Interfaces

APIs are typically flat structures, i.e. sets of service/method signatures specifying the expected service parameters and the kind of results one should expect in return. However, correct API usage also requires the individual services to be invoked in a specific order. Despite its importance, the latter information is either often omitted, or stated informally via textual descriptions. Behavioural Types are a suite of technologies that formalise of this information, elevating flat API descriptions to a graph structure of services. This permits automated analyses for correct API compositions so as to provide guarantees such as service compliance, deadlock freedom, dynamic adaptation in the presence of failure, load balancing etc. The proposed project aims to bring the existing prototype tools based on these technologies to mainstream programming languages and development frameworks used in industry.