IO::Gateway

Integrate IOTA protocol with business workflows, tools, and components that are used everyday. Effortlessly! Everywhere! Non-Devs Friendly!


Public Endpoint {REST} API (Beta)

Status: Online  Offline

https://api.iogateway.cloud:443

API explorer and documentation available.

High-Level Access

Structured set of API calls developed on top of the IOTA protocol provides a high-level abstraction over the IOTA network for everyone to use and leverage. It affords a wide range of commands, keeping needs of non-dev users in mind. You do not have to be a developer to be able to use and leverage it. All implementation details of the IOTA protocol are hidden under the hood.

Standard Protocol

It implements user-friendly and standard API framework based on {REST}, therefore, it is able to interact with a majority of business-related tools that are used nowadays. In other words, it is a glue that integrates disparate components together. In addition to that, Cross-Origin Resource Sharing (CORS) is enabled by default, so you can leverage Gateway from your web sites.

Open Source Full-Stack

It is an open-source and multiplatform project. You do not have to rely on public endpoints and you can easily deploy it on your premises and infrastructure. It can be completely hidden within your private network, if needed. You do not have to deploy any IOTA-specific infrastructure components, since the gateway can leverage IOTA public nodes. No extra SW requirements are needed.


Smart Caching

The gateway implements a multi-level caching system to optimize a number of calls over IOTA network. It pulls only new information from the network, the rest is served from the long-term cache to minimize latency. In addition, the gateway was designed with the IOTA protocol in mind, so it smartly caches only elements for which it is approved to do so.

Extensible

The gateway can be easily used from the DevOps tools (e.g., PowerShell, Linux shell), productivity suites (e.g., Excel), business intelligence tools (e.g., PowerBI) or other integration platforms and business-related platforms, such as Office 365. The system is opened and extensible. New interfaces are being developed to serve some specific requirements of other integration platforms, such as the MS Flow or IFTTT.com. Thus, in the future, it will be even easier to interact with the IOTA network.


Key Components
Documentation
All API calls are documented, using Open API standard (Swagger). It is available as a stand-alone file in the structured JSON definition and as an interactive API explorer.
Interfaces (Entry Points)
An interface provides you with a definition of high-level API calls that encapsulate specific calls over the IOTA network. Those calls are hidden under the hood, so the users do not have to worry about implementation details. The interface layer is decoupled from the application business logic. This design enables us to prepare multiple interfaces targeting different purposes.
Cache Layer
Some responses are automatically cached for a given period of time (e.g., seconds or minutes), so the users do not have to worry much about effectiveness of their use cases. Any subsequent calls are served from the short-term cache to minimize their latency.
API Controllers
They contain application business logic and they are provided in a form of shared services across the application.
Storage Layer
Public API calls usually involve several chained calls over the IOTA network, therefore, they may be quite expensive (in terms of time needs). The application stores some elements (objects) returned from the IOTA network (e.g., confirmed transactions, transaction trytes, etc.) in order to minimize number of calls over the network. It enables to effectively pull only new information from the Tangle (only new transactions, etc.) and merge new objects with old ones.
IOTA Network
The component is designed to leverage a pool of public IOTA nodes and so it is not necessary to deploy any IOTA nodes in order to deploy the gateway. There is a background health-check process that periodically checks all IOTA nodes in the pool to minimize unsuccesfull calls over the IOTA network.
Background Pipeline Worker
Some tasks may be very time-demanding (e.g., sending transactions, monitoring callbacks, etc.), so they are added to a pipeline and are processed via an asynchronous process sequentially. The background worker can also be leveraged for the auto-monitoring balances, auto-promoter, etc.

Use Cases

The Gateway provides additional interface layer on top of the standard IOTA protocol to enable additional use cases. It is provided as a full-stack deployment and it can be easily installed in multiple instances anywhere, even within the virtual private networks, regardless operating system.

The application design keeps in mind high-level business-oriented tools, in which the use of general purpose languages would be difficult or not possible at all.

It enables to use cases such as:

  • Checking IOTA balances in Excel
  • Create business workflow that monitors the IOTA transactions and triggers some follow-up actions based on them
  • Do you need to send a transaction just from a command line? No problem at all
  • No dependencies, no third-party libraries, just the HTTP protocol
  • ...Business Inteligence tools, Productivity Suites, ERPs, CRMs, and all other can now leverage information from the IOTA network

Let's interact with the IOTA network as easily as creating directories!

Our Mission

Shell

curl -X GET "https://api.iogateway.cloud/api/Tangle/address/XKJYSRFYMKGONBKBPWAYNVHQZM9FCRY9EGECGHPITKDXJWCVXRIAFLSRBFGC9CXCS9KMFWLL9MAGCMOUXJOYORXOCY/balance" -H  "accept: application/json" | jq '.addresses[].balance'

Power Shell

$res = Invoke-RestMethod -Uri https://api.iogateway.cloud/api/Tangle/address/XKJYSRFYMKGONBKBPWAYNVHQZM9FCRY9EGECGHPITKDXJWCVXRIAFLSRBFGC9CXCS9KMFWLL9MAGCMOUXJOYORXOCY/balance
$res.addresses | Format-Table -Property balance

R

install.packages("jsonlite")
install.packages("httr")
require("httr")
require("jsonlite")

get_balance <- GET("https://api.iogateway.cloud/api/Tangle/address/XKJYSRFYMKGONBKBPWAYNVHQZM9FCRY9EGECGHPITKDXJWCVXRIAFLSRBFGC9CXCS9KMFWLL9MAGCMOUXJOYORXOCY/balance")
get_balance_text <- content(get_balance, "text" )
get_balance_json <- fromJSON(get_balance_text, flatten=TRUE)
get_balance_json

Power Query / Power BI / Excel

let
    Source = Json.Document(Web.Contents("https://api.iogateway.cloud/api/Tangle/address/XKJYSRFYMKGONBKBPWAYNVHQZM9FCRY9EGECGHPITKDXJWCVXRIAFLSRBFGC9CXCS9KMFWLL9MAGCMOUXJOYORXOCY/balance")),
    addresses = Source[addresses],
    addresses1 = addresses{0},
    #"Converted to Table" = Record.ToTable(addresses1)
in
    #"Converted to Table"

MSFT Flow / Azure Logic Apps

Example of flow/logic task: Getting a balance and sending it via email every day.