Crate schema_registry_api

Source
Expand description

§Schema registry API

Crates.io Documentation Codecov Dependency status

Provide a REST API to call with a schema registry.

§Examples

List subjects

use reqwest::Url;
use schema_registry_api::SchemaRegistry;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Create a `SchemaRegistry`
    let base_url = Url::parse("http://localhost:8081")?;
    let sr = SchemaRegistry::build_default(base_url)?;

    // List subjects
    let subjects = sr.subject().list(None, None).await?;

    if subjects.is_empty() {
        println!("No subject found");
    }
    for subject in &subjects {
        println!("Found subject '{subject}'");
    }
    Ok(())
}

Register a schema

use reqwest::Url;
use schema_registry_api::{RegisterSchema, SchemaRegistry};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Create a `SchemaRegistry`
    let base_url = Url::parse("http://localhost:8081")?;
    let sr = SchemaRegistry::build_default(base_url)?;

    // Create a subject
    let subject = "a-topic-value".parse()?;
    // Create the `RegisterSchema`
    let schema = RegisterSchema {
        schema: include_str!("../tests/assets/a_record.avsc").to_string(),
        ..Default::default()
    };

    // Register the schema for the subject
    let registered_schema = sr.subject().new_version(&subject, &schema, None).await?;
    // Get the schema id
    let schema_id = registered_schema.id;

    println!("The schema #{schema_id} is registered for subject '{subject}'");
    Ok(())
}

§License

Licensed under either of

at your option.

§Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Structs§

ApiError
An API error
Compatibility
The compatibility
CompatibilityClient
The compatibility client
CompatibilityResult
Compatibility result
ConfigClient
The configuration client
GetCompatibility
The compatibility get result
Mode
The mode wrapper
ModeClient
The subject client
RegisterSchema
Register a schema
RegisteredSchema
Registered schema result
Schema
A Schema payload
SchemaClient
The subject client
SchemaId
The schema id
SchemaIdError
An Schema id error
SchemaReference
A schema reference
SchemaRegistry
A schema registry client
SchemaVersionError
An Schema version error
Subject
A subject
SubjectClient
The subject client
SubjectName
A subject name
SubjectVersion
A subject an associated version

Enums§

CompatibilityLevel
Compatibility level
ResourceMode
The resource mode
SchemaRegistryError
A schema registry error
SchemaType
A Schema type
SchemaVersion
The schema version
SubjectNameError
An subject error