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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://jexia.gitbook.io/semaphore/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
