#api-client #rest-client #client #kpn #rest #generated-client #dsh

dsh_rest_api_client

REST API client for KPN Data Services Hub

3 releases (breaking)

0.3.0-rc.1 Nov 4, 2024
0.2.0 Sep 4, 2024
0.1.0 Jul 1, 2024

#88 in HTTP client

28 downloads per month
Used in dsh_sdk

Apache-2.0

450KB
8K SLoC

DSH Rest API Client

An OpenAPI Spec implementation for the DSH REST API.

Description

This crate is part of the DSH_SDK. It provides a Rust client for the DSH REST API. This client is generated from the OpenAPI specification using Progenitor.

Versions

The versions of this crate are tied to the versions of the OpenAPI spec and the Progenitor version used to generate the client.

DSH Rest API Client: 0.3.0-rc.1

Release candidate version as this version is based on to be released OpenAPI spec 1.9.0, which is still under development.

  • OpenAPI spec: 1.9.0
  • Progenitor version: 0.7.0

DSH Rest API Client: 0.2.0

  • OpenAPI spec: 1.8.0
  • Progenitor version: 0.7.0

DSH Rest API Client: 0.1.0

  • OpenAPI spec: 1.7.0
  • Progenitor version: 0.7.0

Goals

This crate provides:

  • A client with all methods to call all DSH API endpoints
  • Pure code generation from the OpenAPI spec

Non-Goals

This crate does not provide:

  • Authentication or authorization to DSH
  • Token management
  • Functionality to select specific platform/base URL

These goals are provided by the DSH_SDK crate.

Recomended usage

It is recommended to use the Rest Token Fetcher from the dsh_sdk crate. To do this, add the following to your Cargo.toml file:

[dependencies]
dsh_rest_api_client = "0.2.0"
dsh_sdk = { version = "0.4", features = ["rest-token-fetcher"], default-features = false }
tokio = { version = "1", features = ["full"] }

To use the client in your project:

use dsh_rest_api_client::Client;
use dsh_sdk::{Platform, RestTokenFetcherBuilder};

const CLIENT_SECRET: &str = "";
const TENANT: &str = "tenant-name";

#[tokio::main]
async fn main() {
    let platform = Platform::NpLz;
    let client = Client::new(platform.endpoint_rest_api());

    let tf = RestTokenFetcherBuilder::new(platform)
        .tenant_name(TENANT.to_string())
        .client_secret(CLIENT_SECRET.to_string())
        .build()
        .unwrap();

    let response = client
        .topic_get_by_tenant_topic(TENANT, &tf.get_token().await.unwrap())
        .await;

    println!("Available topics: {:#?}", response);
}

Changelog

See CHANGELOG.md for all changes per version.

License

See LICENSE for more information on the license for this project.


Copyright (c) Koninklijke KPN N.V.

Dependencies

~8–20MB
~274K SLoC