Skip to main content

Arrakis Schema Specification

This repository defines the schema for all data, metadata and API requests for the arrakis LIGO data distribution system.

Schemas are defined in one of two places:

  • endpoints/: Endpoints served from Arrakis server
  • publication/: Data published into Kafka

Endpoints

The Arrakis server responds to API requests corresponding to the four main actions exposed by the client API:

as well as two actions which aid in publication:

All API requests are done in a two-stage approach by first sending an Arrow Flight descriptor to the server, returning back a Flight info object which contains the request and the server to contact, contained within a Flight ticket. This ticket is then sent to receive back the expected payload with a specific Arrow flight schema dependent on the request, serialized in the Arrow streaming format.

The Flight descriptors sent to the server in the first stage are all specified here as JSON packets which are UTF-8-encoded, using the command variant of the Flight descriptor, which can be used to specify any application-specific command.

The Flight descriptor schemas are described within each endpoint in descriptor.json, while the payload schemas are described via schema.txt. In addition, a generic descriptor specification for all endpoints is described in endpoints/descriptor.json.

Versioning

The request schema set is versioned by the package version (arrakis_schema.SCHEMA_VERSION), which follows semver: releases that change the schemas bump the minor version when additive and the major version when breaking (while pre-1.0, the minor position carries breaking changes, per the usual caret convention). Clients stamp this version into the request envelope (the optional top-level version field) so servers can report actionable errors for requests newer than they support.

Publication

Publication is done by first registering a publisher via the publish endpoint with a publisher ID. If authorized to do so, the server will send a response with connection details to connect via Kafka to publish data.

The data is published via Kafka with the schema described in publication/schema.txt.

Packaging

The schema set is packaged twice from this repository, for the two client languages:

  • Python: the arrakis-schema wheel, with the schema documents as package data.
  • Rust: the arrakis-schema crate, embedding the same documents at compile time and mirroring the Python API (SCHEMA_VERSION, load_schema, parse_version, supports).

The version is single-sourced: Cargo.toml holds the one literal (Cargo cannot read an external version) and the Python packaging derives its version from it, so one release tag publishes both. The version-comparison test vectors (arrakis_schema/tests/version_vectors.json) are shared by both test suites so the two implementations are pinned to identical semantics. A nix flake provides a development environment covering both packagings (nix develop).

Usage

Python

The generic Flight descriptor schema is described within each endpoint in {endpoint}.json. In addition, a generic descriptor specification for all endpoints is described in descriptor.json.

from arrakis_schema import load_schema

schema = load_schema("count.json")

Metadata

Release files for arrakis-schema 0.5.0

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

Source distribution (sdist)

Source distribution for arrakis-schema 0.5.0
File Size Uploaded Provenance Actions
arrakis_schema-0.5.0.tar.gz 82.5 kB Without provenance Details for arrakis_schema-0.5.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for arrakis-schema 0.5.0
File Interpreter ABI Platform Actions
arrakis_schema-0.5.0-py3-none-any.whl Python 3 none any Details for arrakis_schema-0.5.0-py3-none-any.whl

Total release size: 95.6 kB

Release files / arrakis_schema-0.5.0.tar.gz

Download URL arrakis_schema-0.5.0.tar.gz
Size 82.5 kB
Tags Source
SHA-256 checksum
How to use checksums
a8170aa4becf964c10c5f75e9f3fdeb492ed18be3892f3bda62b3dbe7c1140be
BLAKE2b-256 checksum
How to use checksums
91812ad9f27ba2bf3dd933c21b0e80c86003d9894b0f2b436345426fd2ee60fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.5 cpython/3.13.12 HTTPX/0.28.1

Release files / arrakis_schema-0.5.0-py3-none-any.whl

Download URL arrakis_schema-0.5.0-py3-none-any.whl
Size 13.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e30660ecae40b049d896831187c48c0fcea98bc8ad4bf5042d8a24681c19245e
BLAKE2b-256 checksum
How to use checksums
0873dfc894155c87609d1cf04ecc3594f0e947629a2132ba15b1f36701a27e30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.5 cpython/3.13.12 HTTPX/0.28.1

Security for arrakis-schema 0.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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