[package]
name = "energy-api"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
rust-version.workspace = true
description = "Rust client and server implementation for German energy market API-Webdienste (MaKo)"
keywords = ["edifact", "edi-energy", "bdew", "api", "ims"]
categories = ["encoding"]
[features]
default = []
client = ["dep:reqwest"]
server = ["dep:axum", "dep:tower", "dep:http"]
websocket = ["dep:tokio-tungstenite", "dep:futures-util", "dep:tokio"]
crypto = ["dep:p256", "dep:sha2", "dep:base64ct", "dep:serde_jcs"]
[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = { workspace = true }
thiserror = { workspace = true }
time = { workspace = true, features = ["serde", "formatting", "parsing"] }
uuid = { version = "1", features = ["v4", "serde"] }
url = { version = "2", features = ["serde"] }
reqwest = { version = "0.13", features = ["json", "rustls", "query"], default-features = false, optional = true }
axum = { version = "0.8", optional = true }
tower = { version = "0.5", features = ["util"], optional = true }
http = { version = "1", optional = true }
tokio-tungstenite = { version = "0.29", features = ["rustls-tls-webpki-roots"], optional = true }
futures-util = { version = "0.3", optional = true }
tokio = { version = "1", features = ["rt", "sync"], optional = true }
p256 = { version = "0.13", features = ["ecdsa", "pem"], optional = true }
sha2 = { version = "0.10", optional = true }
base64ct = { version = "1", features = ["alloc"], optional = true }
serde_jcs = { version = "0.1", optional = true }
[dev-dependencies]
serde_json = { workspace = true }
tokio = { version = "1", features = ["full"] }