Skip to main content

Crate energy_api

Crate energy_api 

Source
Expand description

§energy-api

Rust client and server bindings for the German energy market API-Webdienste (MaKo — Marktkommunikation).

§Module layout

energy_api
├── models/       OpenAPI/AsyncAPI types shared by all APIs
├── transport/    HTTP + mTLS builder, JWS sign/verify
├── directory/    Verzeichnisdienst — REST client, WebSocket client, server
├── client/       Electricity API clients  (feature = "client")
│   └── malo_ident         LF and NB callback calls
└── server/       Electricity API servers  (feature = "server")
    ├── control_measures   MSB and NB/LF receive handlers + axum router
    ├── malo_ident         NB and LF receive handlers + axum router
    └── wim_order          MSB receive handler (iMS Anmeldung) + NB callbacks

§Feature flags

FeatureEnables
clientMaLo-Ident and directory HTTP clients (reqwest + rustls)
serverAxum router factories for server implementations
websocketWebSocket subscription client (tokio-tungstenite)

Content signing (transport::content_security) and the directory JWS (transport::jws) are always compiled.

§Quick start

§Look up an endpoint via the directory

use energy_api::directory::DirectoryServiceClient;
use url::Url;

let base = Url::parse("https://verzeichnisdienst.example.de/")?;
let client = DirectoryServiceClient::new_insecure(base)?;
let (record, _cert, _sig) = client
    .get_record("1234567890723", "controlMeasuresV1", 1)
    .await?;
println!("{}", record.url);

Re-exports§

pub use error::Error;

Modules§

directory
EDI-Energy Directory Service v1 (Verzeichnisdienst).
error
Unified error type for the energy-api crate.
models
Shared OpenAPI / AsyncAPI wire-format types for all EDI-Energy API-Webdienste.
spec_version
Specification versions implemented by this crate.
transport
Transport layer — HTTP client factory and cryptography.