View on GitHub

Microservice DSL (MDSL)

A Domain-Specific Language (DSL) to specify (micro-)service contracts, their data representations and API endpoints.

PrimerEndpoint TypesAPI Provider and ClientTutorialToolsTransformations


Microservice Domain-Specific Language (MDSL) abstracts from technology-specific interface description languages such as OpenAPI/Swagger, WSDL, and Protocol Buffers.

If the URI of this page is, you are looking at the GitHub pages of the next version (technology preview)! Please refer to for the latest public open source version.

A First Example

An API with a single endpoint HelloWorldEndpoint that exposes a single operation called sayHello can be modelled as this:

API description HelloMDSLWorld

data type SampleDTO {ID, D<string>} 

endpoint type HelloWorldEndpoint
  operation sayHello 
    expecting payload "in": D<int>  
    delivering payload SampleDTO

API provider HelloWorldAPIProvider
  offers HelloWorldEndpoint 
  at endpoint location "http://localhost:8000" 
  via protocol HTTP 
    binding resource HomeResource at "/"
      operation sayHello to POST 
API client HelloWorldAPIClient
  consumes HelloWorldEndpoint 
  from HelloWorldAPIProvider
  via protocol HTTP 

These language elements and their motivation are explained in the MDSL Primer.

MDSL Tools

The following tools already support MDSL:

See MDSL Tools page for more information.

More Information

MDSL Web Pages (this site)

Copyright: Olaf Zimmermann, 2018-2021. All rights reserved. See license information.