# Example 5 - Full Transactional Data Flow (HTTP)

This example demonstrates a complete FlowSync implementation that creates a bridge between an external DNS service and a local endpoint. The configuration establishes a transaction flow where requests to resolve DNS entries are processed through dns.google. This request requires a `name` as the request parameter and returns dns details. The service exposes a south-side HTTP endpoint at `../dns/resolve` that accepts DNS requests, forwards them to dns.google, and returns the results through the FlowSync mechanism.

* To call the HttpNode in the example below, run the following command:

{% code lineNumbers="true" %}

```yaml
curl --insecure \
--location 'https://127.0.0.1/data/flowsync/example5?entry=cybus.io' \
--header 'Authorization: Bearer <replace with your token>'
```

{% endcode %}

For more information on the FlowSync configuration properties, see [Cybus:Node](/1-10-0/documentation/services/service-commissioning-files/structure-of-service-commissioning-files/resources/cybus-node.md#operation).

<figure><img src="/files/RiQdtkZ47TacOskUdOVC" alt=""><figcaption></figcaption></figure>

{% file src="/files/EfxkvUXPJs7Aw2c3AGrT" %}

{% code lineNumbers="true" %}

```yaml
description: FlowSync - Example 5
metadata:
    name: example 5
    version: 1.0.0
resources:
    # ------------------------------------------------
    # Our Endpoints for dns.google (north side)
    # ------------------------------------------------

    googleDnsConnection:
        type: Cybus::Connection
        properties:
            protocol: Http
            connection:
                scheme: https
                host: dns.google

    dnsEndpoint:
        type: Cybus::Endpoint
        properties:
            topic: dns
            protocol: Http
            connection: !ref googleDnsConnection
            publishError: true
            read:
                path: /resolve

    # ---------------------------------------
    # Our HTTP Server and Nodes  (south side)
    # ---------------------------------------

    server:
        type: Cybus::Server::Http
        properties:
            basePath: /flowsync

    dnsNode:
        type: Cybus::Node::Http
        properties:
            parent: !ref server
            method: GET
            route: /example5
            operation: transaction

    # ------------------------------------------------
    # The mappings forwarding requests and responses
    # ------------------------------------------------

    Mapping:
        type: Cybus::Mapping
        properties:
            mappings:
                - subscribe:
                      endpoint: !ref dnsNode
                  publish:
                      endpoint: !ref dnsEndpoint
                  rules:
                      - transform:
                            expression: >-
                                (
                                  {
                                    "id": $.id,
                                    "query": {
                                       "name": $.value.query.entry
                                    }
                                  }
                                )
                - subscribe:
                      endpoint: !ref dnsEndpoint
                  publish:
                      endpoint: !ref dnsNode
                  rules:
                      - transform:
                            expression: >-
                                (
                                  {
                                    "id": $.id,
                                    "timestamp": $.timestamp,
                                    "value" : $.value
                                  }
                                )
```

{% endcode %}


---

# 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.cybus.io/1-10-0/documentation/services/flowsync/flowsync-example-5.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.
