[package]
publish = true
name = "stormchaser-api"
version.workspace = true
edition.workspace = true
description.workspace = true
repository.workspace = true
license.workspace = true
[features]
default = ["mcp"]
mcp = ["dep:rmcp", "dep:rmcp-openapi", "dep:url"]
[lib]
name = "stormchaser_api"
path = "src/lib.rs"
[dependencies]
stormchaser-model = { workspace = true }
stormchaser-tls = { workspace = true }
stormchaser-opa = { version = "1.3.2", path = "../stormchaser-opa" }
tokio = { workspace = true }
rustls = { version = "0.23", features = ["ring"] }
axum = { workspace = true }
kube = { version = "3", features = ["runtime", "derive", "config"] }
k8s-openapi = { version = "0.27", features = ["v1_31", "schemars"] }
bollard = "0.18"
reqwest = { workspace = true }
reqwest-middleware = { workspace = true }
reqwest-retry = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
sqlx = { workspace = true }
log = { workspace = true }
async-trait = { workspace = true }
async-nats = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
tower-http = { workspace = true }
uuid = { workspace = true, features = ["v4"] }
chrono = { workspace = true }
anyhow = { workspace = true }
hmac = { workspace = true }
sha2 = { workspace = true }
hex = { workspace = true }
hcl-rs = { workspace = true }
regex = { workspace = true }
base64 = { workspace = true }
aes-gcm = { workspace = true }
aead = { workspace = true }
jsonwebtoken = { workspace = true }
axum-extra = { version = "0.9", features = ["typed-header"] }
tower = { workspace = true }
tower_governor = "0.4"
once_cell = { workspace = true }
opentelemetry = { workspace = true }
opentelemetry_sdk = { workspace = true }
opentelemetry-otlp = { workspace = true, features = ["grpc-tonic"] }
tracing-opentelemetry = { workspace = true }
opentelemetry-semantic-conventions = { workspace = true }
urlencoding = "2.1"
tokio-stream = "0.1.18"
futures.workspace = true
utoipa = { version = "5.4.0", features = ["axum_extras", "uuid", "chrono"] }
utoipa-swagger-ui = { version = "8.0", features = ["axum", "vendored"] }
bytes = "1.11.1"
cloudevents-sdk = "0.9.0"
rmcp = { version = "1.6.0", features = ["server", "macros", "transport-streamable-http-server", "schemars"], optional = true }
rmcp-openapi = { version = "0.26.6", optional = true }
url = { version = "2.5.8", optional = true }
[dev-dependencies]
rand = "0.8"
wiremock = "0.6"
tower = { version = "0.5", features = ["util"] }
mime = "0.3"
chrono = { workspace = true }
serde_json = { workspace = true }
dotenvy = "0.15.7"
stormchaser-engine = { path = "../stormchaser-engine" }
tempfile = "3.27.0"
walkdir = "2.5.0"
rsa = { version = "0.9.10", features = ["getrandom", "pem"] }
base64.workspace = true
[build-dependencies]
vergen = { workspace = true }