Expand description

A fully generated, opinionated API client library for Oxide.

docs.rs

API Details

API for interacting with the Oxide control plane

Contact

urlemail
https://oxide.computerapi@oxide.computer

Client Details

This client is generated from the Oxide OpenAPI specs based on API spec version 0.0.1. This way it will remain up to date as features are added. The documentation for the crate is generated along with the code to make this library easy to use.

To install the library, add the following to your Cargo.toml file.

[dependencies]
oxide-api = "0.1.0-rc.38"

Basic example

Typical use will require intializing a Client. This requires a user agent string and set of credentials.

use oxide_api::Client;

let oxide = Client::new(String::from("api-key"), String::from("host"));

Alternatively, the library can search for most of the variables required for the client in the environment:

  • OXIDE_TOKEN
  • OXIDE_HOST

And then you can create a client from the environment.

use oxide_api::Client;

let oxide = Client::new_from_env();

Modules

Virtual disks are used to store instance-local data which includes the operating system.

Firewall operation controls the flow of network data into a VPC.

TODO operations that will not ship to customers.

Images are read-only Virtual Disks that may be used to boot Virtual Machines.

Images are read-only Virtual Disks that may be used to boot Virtual Machines. These images are scoped globally.

Virtual machine instances are the basic unit of computation. These operations are used for provisioning, controlling, and destroying instances.

IP Pools contain external IP addresses that can be assigned to virtual machine Instances.

Authentication endpoints.

Metrics provide insight into the operation of the Oxide deployment. These include telemetry on hardware and software components that can be used to understand the current state as well as to diagnose issues.

Organizations represent a subset of users and projects in an Oxide deployment.

System-wide IAM policy.

Projects are a grouping of associated resources such as instances and disks within an organization for purposes of billing and access control.

These operations pertain to hardware inventory and management. Racks are the unit of expansion of an Oxide deployment. Racks are in turn composed of sleds, switches, power supplies, and a cabled backplane.

Roles are a component of Identity and Access Management (IAM) that allow a user or agent account access to additional permissions.

Routers direct the flow of network traffic into, out of, and within a VPC via routes.

Routes define router policy.

Sagas are the abstraction used to represent multi-step operations within the Oxide deployment. These operations can be used to query saga status and report errors.

Silos represent a logical partition of users and resources.

This tag should be moved into hardware.

Snapshots of Virtual Disks at a particular point in time.

Public SSH keys for an individual user.

This tag should be moved into a generic network tag.

Internal system information.

The data types sent to and returned from the API client.

This tag should be moved into a operations tag.

A Virtual Private Cloud (VPC) is an isolated network environment that should probaby be moved into a more generic networking tag.

Structs

Entrypoint for interacting with the API client.