Define your pipelines as queries and push to Git. Orbital instantly creates production-ready services.
Whether REST APIs, Kafka topics, websockets, or batch workflows. No infrastructure code required.
Learn moreBeautiful dashboards capture and visualize your endpoint metrics, latency and usage patterns out-of-the-box.
Learn moreCreate bespoke data streams, tailored for each consumer - from stream processing to event-driven architectures
Define ETL pipelines and data transformations as code, deployed as endpoints
Endpoints and pipelines automatically adapt as your upstream schemas and APIs change
Simple, declarative orchestration
Design and deploy APIs, event streams and data pipelines with a simple query language.
From BFF endpoints to ETL workflows, Orbital handles the infrastructure
@HttpOperation(url='/api/q/customers/{customerId}, method = 'GET')
query CombineCustomerData(@PathVariable customerId: CustomerId) {
given { customerId }
find {
// Customer data comes from our CRM
firstName : FirstName
lastName : LastName
balances : {
// Account balances come from the accounts API
accountBalance: AccountBalance
}
// Points come from the RewardsPoints API
pointsStatus: RewardsPointStatus
}
}
@HttpOperation(url='/api/q/customers/{customerId}, method = 'GET')
query CombineCustomerData(@PathVariable customerId: CustomerId) {
given { customerId }
find {
// Customer data comes from our CRM
firstName : FirstName
lastName : LastName
balances : {
// Account balances come from the accounts API
accountBalance: AccountBalance
}
// Points come from the RewardsPoints API
pointsStatus: RewardsPointStatus
}
}
@WebsocketOperation(url='/api/q/customers/{customerId}')
query CustomerPurchaseEventStream {
stream { CustomerPurchaseEvent }
as {
// Customer data comes from our CRM
firstName : FirstName
lastName : LastName
purchases: OrderId[] as {
orderId: OrderId
// Fetch the product name from the product db
productName : ProductName
// Fetch the stock levels from the stock API
stockLevels : StockLevels
// Calculate if we have sufficient in stock
hasSufficient: Boolean = StockLevels <= PurchasedQty
}[]
}
}
// This snippet shows two vendors - VendorA and VendorB providing stock
// reports in different CSV formats.
// Read them from S3, and enrich the data
// The full working example is available in the playground
query CustomerPurchaseEventStream {
find { VendorAStockReport[] | VendorBStockReport[]
as {
}[]
}
}