[package]
name = "attune-api"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true

[lib]
name = "attune_api"
path = "src/lib.rs"

[[bin]]
name = "attune-api"
path = "src/main.rs"

[dependencies]
# Internal dependencies
attune-common = { path = "../common" }

# Async runtime
tokio = { workspace = true }
tokio-util = { workspace = true }
tokio-stream = { workspace = true }
async-trait = { workspace = true }
futures = { workspace = true }

# Web framework
axum = { workspace = true, features = ["multipart"] }
axum-extra = { version = "0.10", features = ["cookie"] }
cookie = "0.18"
tower = { workspace = true }
tower-http = { workspace = true }

# Database
sqlx = { workspace = true }

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

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

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

# Configuration
config = { workspace = true }

# Date/Time
chrono = { workspace = true }

# UUID
uuid = { workspace = true }

# Validation
validator = { workspace = true }

# CLI
clap = { workspace = true }

# JSON Schema
schemars = { workspace = true }
jsonschema = { workspace = true }

# HTTP client
reqwest = { workspace = true }
openidconnect = "4.0"
ldap3 = "0.12"
url = { workspace = true }

# Archive/compression
tar = { workspace = true }
flate2 = { workspace = true }

# Temp files (used for pack upload extraction)
tempfile = { workspace = true }

# Authentication
argon2 = { workspace = true }
rand = "0.10"

# HMAC and cryptography
hmac = "0.12"
sha1 = "0.10"
sha2 = { workspace = true }
hex = "0.4"
subtle = "2.6"

# OpenAPI/Swagger
utoipa = { workspace = true, features = ["axum_extras"] }
utoipa-swagger-ui = { version = "9.0", features = ["axum"] }
jsonwebtoken = { workspace = true, features = ["rust_crypto"] }

[dev-dependencies]
mockall = { workspace = true }
tower = { workspace = true }
tempfile = { workspace = true }
reqwest-eventsource = { workspace = true }
