# Introduction

Welcome to the documentation for Middle! Use these docs as a reference for all things Middle. Using Middle's app connectors and visual workflows, you can automate and integrate data accross your disparate applications.

## Key resources

{% embed url="<https://apps.middle.app/search>" %}

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="app-development">Apps</a></td><td>Build custom apps directly an in-browser developer portal—or accelerate setup with pre-built connectors—and seamlessly integrate them with workflows.</td><td><a href="https://932524191-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mks_UuU2atghAuA9bQz%2Fuploads%2FHkQAqwIL3oekQlKJL2EA%2F1.svg?alt=media&#x26;token=5f061508-4a15-4eec-9930-022bd6b9ee94">1.svg</a></td><td><a href="app-development">app-development</a></td></tr><tr><td><a href="building-workflows">Workflows</a></td><td>Low-code workflows empower you to create integrations between apps. This accelerates automation and reduces reliance on engineering.</td><td><a href="https://932524191-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mks_UuU2atghAuA9bQz%2Fuploads%2F0RtEWDyYHHRwfZEsypAX%2F2.svg?alt=media&#x26;token=19ef4361-d63a-474d-a226-1ea51ab0d541">2.svg</a></td><td><a href="building-workflows">building-workflows</a></td></tr><tr><td><a href="introduction/data">Data</a></td><td>Synced data is stored in a searchable persistent layer, allowing you to relate records through foreign keys and easily  troubleshoot issues.</td><td><a href="https://932524191-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mks_UuU2atghAuA9bQz%2Fuploads%2FfpcT8uNWGZqXNjS7NvcR%2F3.svg?alt=media&#x26;token=86b017de-5c93-46dc-bb60-b75d62df6f66">3.svg</a></td><td><a href="introduction/data">data</a></td></tr></tbody></table>

## Summary

Middle enables data synchronization between web applications through a structured process involving apps, functions, and workflows:

{% stepper %}
{% step %}

### Sync Function

A [**sync function**](https://docs.middle.app/middle-docs/app-development/sync-records), defined within a Middle App, initiates the data retrieval process. It calls an external **API endpoint** to access data from a connected web application.

<figure><img src="https://932524191-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mks_UuU2atghAuA9bQz%2Fuploads%2FHVhSlV6JvV9gZhbgv2kx%2Fapp_portal_1.gif?alt=media&#x26;token=cbb4ae08-817a-47e6-9b4b-ad29165b2017" alt=""><figcaption><p>Configuring a record type in a Middle app</p></figcaption></figure>
{% endstep %}

{% step %}

### App Connection & Account

An **App Connection** within a specific **Account** provides the necessary **credentials**, manages the **sync job**, and stores the resulting **records**. This connection acts as the secure bridge between Middle and the external application.
{% endstep %}

{% step %}

### Workflow Execution

**Workflows** are triggered either on a **schedule** or in response to **record creation or update** events. These workflows retrieve the stored data using **relational foreign keys**, enabling access to previously synced records.

<figure><img src="https://932524191-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mks_UuU2atghAuA9bQz%2Fuploads%2FAjbWjzaOZug9MNl5my1Q%2Fworkflow_1.gif?alt=media&#x26;token=1dd409b1-f3c5-426f-abec-46279e80bfc0" alt=""><figcaption><p>Constructing a workflow</p></figcaption></figure>
{% endstep %}

{% step %}

### Action Steps and Action Functions

Each workflow contains **action steps**, which are powered by an **action function** defined in the App. These steps typically execute **scripts or API calls** to other web applications, completing the data sync or transfer process.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
All workflow, sync, and action invocations are stored in searchable execution history tables
{% endhint %}


---

# Agent Instructions: 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://docs.middle.app/middle-docs/introduction.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.
