This repo contains the definitions of the Aruna API. It is written in the protocol-buffers interface definition language (IDL). This can be used to automatically generate clients in many different programming languages using the gRPC framework.
The official grpc documentation provides Quick start sections for many programming languages. A good starting point is the python section. You can either use the official protoc compiler or tools like buf to generate stubs for the Aruna API.
We also automatically generate packages for the most common programming languages for each release:
- Python: PyPI
- Rust: Crates.io
- Go: Go package
- Java: Java Package
The API contains three main sections:
-
Storage section: This is the main section for external use. It contains a basic set of services and models that describe the interfaces with the storage system.
-
Notification section: This section contains a set of services and models that describe the interfaces with the notification system.
-
Hooks section: This section contains the service that can be used to extend Aruna with external functionality or automate internal processes.
The storage section is divided in two subsections:
-
Models: This section contains the models that are used by the storage system.
-
Storage services: This section contains all services that are used to interact with the storage system. Services are defined as RPCs and are grouped by object type.
The Notification section provides a set of RPCs that are used to interact with the notification system. The notification system uses nats.io as its underlying service. The service definition can be found here.
Hooks are the way to automate internal processes in Aruna and/or to integrate external services to extend functionality. Once created, they're available globally in Aruna, and Projects must be associated with them to be included in their trigger cycle. The action that triggers the specific hook is defined by its trigger type. The service definition can be found here.
The API is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option. Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.