datasynth-server 2.2.0

gRPC and REST server for synthetic data generation
Documentation
[package]
name = "datasynth-server"
version.workspace = true
edition.workspace = true
license.workspace = true
rust-version.workspace = true
repository.workspace = true
homepage.workspace = true
description = "gRPC and REST server for synthetic data generation"
keywords.workspace = true
categories.workspace = true

[features]
default = []
tls = ["dep:axum-server"]
jwt = ["dep:jsonwebtoken"]
redis = ["dep:redis"]
otel = [
    "dep:opentelemetry",
    "dep:opentelemetry_sdk",
    "dep:opentelemetry-otlp",
    "dep:opentelemetry-prometheus",
    "dep:prometheus",
    "dep:tracing-opentelemetry",
]

[dependencies]
datasynth-core = { workspace = true }
datasynth-config = { workspace = true }
datasynth-generators = { workspace = true }
datasynth-runtime = { workspace = true }
datasynth-output = { workspace = true }

# gRPC
tonic = { workspace = true }
prost = { workspace = true }
prost-types = { workspace = true }

# HTTP/REST
axum = { workspace = true }
tower = { workspace = true }
tower-http = { workspace = true }
axum-server = { workspace = true, optional = true }

# Async
tokio = { workspace = true }
tokio-stream = "0.1"
futures = { workspace = true }
async-trait = { workspace = true }

# Serialization
serde = { workspace = true }
serde_json = { workspace = true }
serde_yaml = { workspace = true }

# Error handling
thiserror = { workspace = true }
anyhow = { workspace = true }

# Logging
tracing = { workspace = true }
tracing-subscriber = { workspace = true }

# CLI
clap = { workspace = true }

# Date/Time
chrono = { workspace = true }

# UUID
uuid = { workspace = true }

# Decimal
rust_decimal = { workspace = true }

# Security
argon2 = { workspace = true }
subtle = { workspace = true }

# JWT (optional - OIDC token validation)
jsonwebtoken = { workspace = true, optional = true }

# Redis (optional - distributed rate limiting)
redis = { workspace = true, optional = true }

# OpenTelemetry (optional, behind `otel` feature)
opentelemetry = { workspace = true, optional = true }
opentelemetry_sdk = { workspace = true, optional = true }
opentelemetry-otlp = { workspace = true, optional = true }
opentelemetry-prometheus = { workspace = true, optional = true }
prometheus = { workspace = true, optional = true }
tracing-opentelemetry = { workspace = true, optional = true }
tonic-prost = "0.14"

[build-dependencies]
tonic-build = { workspace = true }
tonic-prost-build = "0.14"

[[bin]]
name = "datasynth-server"
path = "src/main.rs"

[dev-dependencies]
tempfile = { workspace = true }
tokio-test = "0.4"
tower = { workspace = true, features = ["util"] }
hyper = { version = "1.0", features = ["full"] }
http-body-util = "0.1"