Overview

About ql.io

Language Overview

Runtime Overview

Usage Overview

Getting Started

Prerequisites

Quick Start

Build an App

Examples

Build and Develop ql.io!

Writing Scripts

create table

select

insert into

update

delete

URI Templates

Data Formats

Variable References

Configuration

Script Routes

Monkey Patching

OAuth

Executing Scripts

HTTP Interface

WebSocket Interface

Engine API

Monitoring

Runtime Monitoring

References

Language Reference

URI Template Syntax Reference

About ql.io

A SQL and JSON inspired Language for Working with HTTP APIs

SQL is a powerful language used to retrieve, filter, project, and join relational data — see efforts like A co-Relational Model of Data for Large Shared Data Banks, LINQ, YQL, or unQL for examples. JSON is a widely-used, simple and standardized data format to interchange structured data.

ql.io re-uses concepts and syntax from SQL and JSON to create an imperative style language. Scripts written in this language can make HTTP requests to retrieve data, perform joins between API responses, project responses, or even make requests in a loop. But note that ql.io's scripting language is not SQL — it is SQL-inspired.

Orchestration

Most real-world client apps need to mashup data from multiple APIs in one go. Data mashup is often complicated as client apps need to worry about order of requests, inter-dependencies, error handling, and parallelization to reduce overall latency.

ql.io's scripts seem procedural in appearance, but are executed out of order based on dependencies. Some statements may be scheduled in parallel and some in series based on a dependency analysis done at script compile time. The compilation is an on-the-fly process.

Consumer Centric Interfaces

APIs are designed for reuse, and hence they cater to the common denominator. Getting new fields added, optimizing responses, or combining multiple requests into one involve drawn out negotiations between API producing teams and API consuming teams within an organization, and may be outright impossible for public APIs outside of the client's influence.

ql.io lets API consuming teams move fast by creating consumer-centric interfaces that are optimized for the client. Such optimized interfaces can reduce both bandwidth usage and the number of HTTP requests.

APIs created using ql.io can be consumed via HTTP or embedded in a Node.js process.

Who is Behind ql.io

ql.io is being built by eBay's platform engineering group, and is actively managed on github. See AUTHORS.md for the list of contributors. ql.io is released under Apache License, Version 2.0. See eBay Open Source for other project contributed by eBay.