# Introduction

Semaphore is a tool to orchestrate your micro-service architecture. Requests could be manipulated passed branched to different services to be returned as a single output.

You could define request flows on top of your currently existing schema definitions.

Please check out the [examples directory](https://github.com/jexia/maestro/tree/master/examples) for more examples.

![](https://2037905333-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2DsGLcoxYyMrm5HF6D%2F-MBhbHgJ2EDHiprXiGOR%2F-MBhbZZmGihDkhzcYMr0%2FAsset%205%401500x-100.jpg?alt=media\&token=a3728dd8-da2a-44de-abcb-02ee958d95e2)

{% hint style="success" %}
In many of the available examples are protobuffers used. Semaphore currently supports protobuffers more official schema definitions such as Avro and XML will be added in the future
{% endhint %}

{% tabs %}
{% tab title="Flows" %}

```
endpoint "GetUser" "http" {
    endpoint = "/user/:id"
    method = "GET"
}

flow "GetUser" {
    input "proto.Query" {}
    
    resource "user" {
        request "proto.Users" "Get" {
            id = "{{ input:id }}"
        }
    }
    
    output "proto.User" {
        name = "{{ user:name }}"
    }
}
```

{% endtab %}

{% tab title="Protobuffers" %}

```
package proto;

service Users {
    option (maestro.service) = {
        host: "https://service.user/"
        protocol: "http"
        codec: "json"
    };

    rpc Get(Query) returns (User) {
        option (maestro.http) = {
            endpoint: "/user/:id"
            method: "GET"
        };
    };
}
```

{% endtab %}
{% endtabs %}

<div align="left"><img src="https://2037905333-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2DsGLcoxYyMrm5HF6D%2F-M2JZC6TxVtVuQ-gc91G%2F-M2JaAO1On2isWgN5uuw%2Flogo.png?alt=media&#x26;token=c6cedf94-3f56-4949-bc95-d40a9427acfb" alt=""></div>

> Maestro is an open-source product developed with ❤️ by Jexia\
> [Jexia](https://jexia.com) is a developer platform that provides services to help you build web and mobile applications in a fast and simple way.
