Skip to main content

SiaQL

A GraphQL interface for Sia network components: walletd, renterd, hostd.

Python Poetry License Documentation

Overview

SiaQL provides a unified GraphQL API layer for interacting with various Sia network components. It simplifies the process of querying and managing Sia nodes by providing:

📚 See GraphQL documentation: siaql-docs.netlify.app

Features

  • Unified API: Access walletd, renterd, and hostd through a single GraphQL endpoint
  • Type Safety: Fully typed schema with TypeScript/Python type definitions
  • Flexible Queries: Built-in support for filtering, sorting, and pagination
  • Interactive Documentation and Playground: GraphiQL interface with schema exploration
  • CLI Tool: Easy setup and management through command-line interface

Installation

Install SiaQL using pip:

pip install siaql

Quick Start

  1. Start the SiaQL server:
siaql
  1. Access the GraphiQL interface at http://localhost:9090/graphql by default.

  2. Start querying your Sia components!

Configuration

SiaQL can be configured through environment variables (.env file), command-line arguments:

Environment Variables

Variable Default Description
HOST 127.0.0.1 Server host address
PORT 9090 Server port
ENABLE_RENTERD true Enable/disable renterd integration
RENTERD_URL http://localhost:9981 Renterd API URL
RENTERD_PASSWORD None Renterd API password
ENABLE_WALLETD true Enable/disable walletd integration
WALLETD_URL http://localhost:9982 Walletd API URL
WALLETD_PASSWORD None Walletd API password
ENABLE_HOSTD true Enable/disable hostd integration
HOSTD_URL http://localhost:9983 Hostd API URL
HOSTD_PASSWORD None Hostd API password

Command Line Arguments

The same configuration options are available as command-line arguments:

siaql --host 127.0.0.1 --port 9090

Note: SiaQL can be started without any configuration, in which case it will ask for the API URLs and passwords interactively.

Compatibility

SiaQL is compatible with following versions of Sia components:

Component Version
Walletd v0.8.0
Renterd v1.1.1
Hostd v2.0.2

Example Queries

All queries are written as its respective Sia component. For example renterd_Contracts for Renterd contracts endpoint.

  1. Get Sorted Contracts
query GetSortedContracts {
  renterdContracts(
    sort: {
      field: "size"
      direction: DESC
    }
  ) {
    id
    size
    hostKey
    state
    totalCost
    spending {
      uploads
      downloads
      fundAccount
      deletions
      sectorRoots
    }
  }
}
  1. Get Reliable Hosts
query GetReliableHosts {
  renterdGetHosts(
    filter: {
      field: "interactions.successfulInteractions"
      operator: GT
      value: "100"
    }
    sort: {
      field: "interactions.uptime"
      direction: DESC
    }
    pagination: {
      offset: 0
      limit: 20
    }
  ) {
    publicKey
    netAddress
    interactions {
      successfulInteractions
      uptime
      lastScan
    }
  }
}

Development

Setup Development Environment

# Create a virtual environment if needed
# python3.9 -m venv venv

# Clone the repository
git clone https://github.com/justmert/siaql.git && cd siaql

# Tested with poetry 2.0.1
# pip install --upgrade poetry==2.0.1

# Install dependencies
poetry install

# Run tests
poetry run pytest

Acknowledgments

Disclaimer

This repository is a community effort and is not officially supported by the Sia Network.

Metadata

Release files for siaql 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for siaql 0.1.1
File Size Uploaded
siaql-0.1.1.tar.gz 59.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for siaql 0.1.1
File Interpreter ABI Platform
siaql-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 138.9 kB

Release files / siaql-0.1.1.tar.gz

Download URL siaql-0.1.1.tar.gz
Size 59.3 kB
Tags Source
SHA-256 checksum
How to use checksums
2caca3341457ad1cb64fca476ecfbd674212401905e1fe9f566491f03e058f52
BLAKE2b-256 checksum
How to use checksums
a54912defd31e5c31d69709b2c10174fb813cf6695d0a63b6cbd5d6bea0668a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.1 CPython/3.9.21 Darwin/24.1.0

Release files / siaql-0.1.1-py3-none-any.whl

Download URL siaql-0.1.1-py3-none-any.whl
Size 79.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
17d0f82a25b3b04ce7364c5e9f742f7f76e6e8e996847332e593ad2c1ea49ec9
BLAKE2b-256 checksum
How to use checksums
830f16cc1bbb4a92f64ada57fdfe0807bc9379f596f939f5c8979c90607d36ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.1 CPython/3.9.21 Darwin/24.1.0

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page