> For the complete documentation index, see [llms.txt](https://jexia.gitbook.io/semaphore/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jexia.gitbook.io/semaphore/master.md).

# 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.

![](/files/-MBhbZZmGihDkhzcYMr0)

{% 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="/files/-M2JaAO1On2isWgN5uuw" 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.
