[package]
name = "llm-shield-api"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
description = "Production-grade REST API for LLM Shield"
[dependencies]
axum = { version = "0.7", features = ["macros"] }
tower = { version = "0.5", features = ["full"] }
tower-http = { version = "0.5", features = ["trace", "timeout", "limit", "compression-gzip", "cors"] }
tokio = { workspace = true, features = ["signal"] }
serde = { workspace = true }
serde_json = { workspace = true }
validator = { version = "0.18", features = ["derive"] }
config = { version = "0.14", features = ["toml"] }
tracing = { workspace = true }
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
metrics = "0.23"
metrics-exporter-prometheus = "0.15"
utoipa = { version = "4.2", features = ["axum_extras"] }
utoipa-swagger-ui = { version = "7.1", features = ["axum"] }
governor = "0.6"
argon2 = { version = "0.5", features = ["std"] }
base62 = "2.0"
rand = "0.8"
async-trait = "0.1"
thiserror = { workspace = true }
anyhow = "1.0"
uuid = { version = "1.11", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
num_cpus = "1.16"
llm-shield-core = { version = "0.1.0", path = "../llm-shield-core" }
llm-shield-scanners = { version = "0.1.0", path = "../llm-shield-scanners" }
llm-shield-models = { version = "0.1.0", path = "../llm-shield-models" }
llm-shield-anonymize = { version = "0.1.0", path = "../llm-shield-anonymize" }
[dev-dependencies]
tokio-test = "0.4"
tower = { version = "0.5", features = ["util"] }
http-body-util = "0.1"
mime = "0.3"
futures = { workspace = true }
criterion = { workspace = true }
[[bench]]
name = "api_bench"
harness = false
[features]
default = []
redis = ["dep:redis"]
[dependencies.redis]
version = "0.26"
optional = true
features = ["tokio-comp", "connection-manager"]