[package]
name = "ironflow-api"
version = "2.19.0"
edition = "2024"
rust-version = "1.94"
authors = ["Thomas Tartrau"]
license = "MIT"
description = "REST API for ironflow run management and observability"
repository = "https://gitlab.com/ThomasTartrau/ironflow"
keywords = ["workflow", "api", "rest", "runs"]
categories = ["web-programming::http-server"]
include = ["src/**", "Cargo.toml", "build.rs", "dashboard/**"]

[features]
default = []
sign-up = []
dashboard = ["rust-embed", "rust-embed/interpolate-folder-path"]
prometheus = ["metrics", "metrics-exporter-prometheus", "ironflow-engine/prometheus"]
openapi = ["utoipa", "ironflow-store/openapi", "ironflow-engine/openapi"]

[dependencies]
ironflow-store = { version = "2.14.1", path = "../ironflow-store" }
utoipa = { version = "5", features = ["uuid", "chrono", "decimal_float", "axum_extras"], optional = true }
ironflow-engine = { version = "2.16.0", path = "../ironflow-engine" }
ironflow-core = { version = "2.20.2", path = "../ironflow-core" }
ironflow-auth = { version = "2.3.8", path = "../ironflow-auth" }

axum = { version = "0.8", features = ["json"] }
rust-embed = { version = "8", optional = true }
tokio = { version = "1", features = ["macros"] }
tokio-stream = { version = "0.1", features = ["sync"] }
futures-util = "0.3"
tower = { version = "0.5", features = ["util"] }
tower-http = { version = "0.6", features = ["fs", "limit"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
uuid = { version = "1", features = ["v7", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
rust_decimal = { version = "1", features = ["serde-float"] }
subtle = "2"
governor = { version = "0.10", features = ["std"] }
rand = "0.9"
hex = "0.4"
tracing = "0.1"
thiserror = "2"
validator = { version = "0.20", features = ["derive"] }
metrics = { version = "0.24", optional = true }
metrics-exporter-prometheus = { version = "0.18", optional = true, default-features = false }

[dev-dependencies]
tokio = { version = "1", features = ["full"] }
tower = { version = "0.5", features = ["util"] }
http-body-util = "0.1"
ironflow-store = { version = "2.14.1", path = "../ironflow-store", features = ["store-memory", "secret-store"] }
metrics = "0.24"
metrics-exporter-prometheus = { version = "0.18", default-features = false }
