View on GitHub

MDSL

A domain-specific language to specify (micro-)service contracts and data representations (realizing API Description pattern from MAP)

Microservices Domain Specific Language (MDSL)

Note: Work in progress, subject to change at any time!

Design Goals

Design Principles

First Example

This is the Hello World of MDSL:

API description HelloWorldAPI

data type SampleDTO {ID, V} 

endpoint type HelloWorldEndpoint
exposes 
  operation helloWorld 
    expecting payload SampleDTO 
    delivering payload V<string> 
 
IPA

Take a look at Hello World in Swagger in comparison.

Language Features and Elements

Language Reference (Sources)

MSDL and MAP

All MAPs are supported/integrated one way or another:

We also like hexagons (although octogons, as used to denote cells in CBAs, look cool too):

Solution Sketch of API Integration

Copyright: Olaf Zimmermann, 2019. All rights reserved.

  1. The two languages can be used independently of each other; for instance, data contracts for operations in contract types can also be specified in JSON Schema (or XML Schema).