upcloud-api 0.1.4

The UpCloud API 1.3 surface the nordisk estates use, as ONE trait (`UpCloudApi`) with ONE wire implementation. Which cloud a run talks to (the account, or a mock-upcloud on loopback) is an `Endpoint` decided once at the edge, and a mock endpoint cannot be pointed off this machine. The fake that answers the trait in-process lives beside mock-upcloud's state machine.
Documentation
[package]
name = "upcloud-api"
version = "0.1.4"
edition = "2021"
description = "The UpCloud API 1.3 surface the nordisk estates use, as ONE trait (`UpCloudApi`) with ONE wire implementation. Which cloud a run talks to (the account, or a mock-upcloud on loopback) is an `Endpoint` decided once at the edge, and a mock endpoint cannot be pointed off this machine. The fake that answers the trait in-process lives beside mock-upcloud's state machine."
license = "MIT OR Apache-2.0"
repository = "https://codeberg.org/nordisk/edda"
keywords = ["upcloud", "cloud", "api", "mock"]
categories = ["api-bindings", "development-tools::testing"]
exclude = ["/.nornir/"]

[features]
# The wire — the ONE HTTP implementation, its retry policy, and the mock-run
# guard. ON by default. A crate that only ANSWERS the trait (mock-upcloud's
# in-process face) turns it off and carries no HTTP client at all.
default = ["wire"]
wire = ["dep:ureq", "dep:nornir-hash"]

[dependencies]
# The constellation's blocking HTTP client, at the major version and feature set
# private-gunnar-ops, private-holger-ops and gunnar-loadbench already resolve: pure Rust
# over rustls, no OpenSSL, no async runtime.
ureq = { version = "3", default-features = false, features = ["rustls"], optional = true }
# sha256 of a mock run's token, for `/mock/heard` (behaviour 63) — the ONE shared
# primitive, not a local copy.
nornir-hash = { version = "0.1.0", path = "../nornir-hash", optional = true }
serde_json = "1"

[lints.rust]
unsafe_code = "forbid"