openfga 1.0.2

Rust SDK for OpenFGA — the open-source authorization system
Documentation
/*
 * OpenFGA
 *
 * A high performance and flexible authorization/permission engine built for developers and inspired by Google Zanzibar.
 *
 * The version of the OpenAPI document: 1.x
 * Contact: community@openfga.dev
 * Generated by: https://openapi-generator.tech
 */

use super::{Error, configuration, parse_empty_response, parse_response};
use crate::models;
use serde::{Deserialize, Serialize};

/// struct for typed errors of method [`create_store`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum CreateStoreError {
    Status400(models::ValidationErrorMessageResponse),
    Status401(models::UnauthenticatedResponse),
    Status403(models::ForbiddenResponse),
    Status404(models::PathUnknownErrorMessageResponse),
    Status409(models::AbortedMessageResponse),
    Status422(models::UnprocessableContentMessageResponse),
    Status500(models::InternalErrorMessageResponse),
}

/// struct for typed errors of method [`delete_store`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum DeleteStoreError {
    Status400(models::ValidationErrorMessageResponse),
    Status401(models::UnauthenticatedResponse),
    Status403(models::ForbiddenResponse),
    Status404(models::PathUnknownErrorMessageResponse),
    Status409(models::AbortedMessageResponse),
    Status422(models::UnprocessableContentMessageResponse),
    Status500(models::InternalErrorMessageResponse),
}

/// struct for typed errors of method [`get_store`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetStoreError {
    Status400(models::ValidationErrorMessageResponse),
    Status401(models::UnauthenticatedResponse),
    Status403(models::ForbiddenResponse),
    Status404(models::PathUnknownErrorMessageResponse),
    Status409(models::AbortedMessageResponse),
    Status422(models::UnprocessableContentMessageResponse),
    Status500(models::InternalErrorMessageResponse),
}

/// struct for typed errors of method [`list_stores`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ListStoresError {
    Status400(models::ValidationErrorMessageResponse),
    Status401(models::UnauthenticatedResponse),
    Status403(models::ForbiddenResponse),
    Status404(models::PathUnknownErrorMessageResponse),
    Status409(models::AbortedMessageResponse),
    Status422(models::UnprocessableContentMessageResponse),
    Status500(models::InternalErrorMessageResponse),
}

/// Create a unique OpenFGA store which will be used to store authorization models and relationship tuples.
pub async fn create_store(
    configuration: &configuration::Configuration,
    body: models::CreateStoreRequest,
) -> Result<models::CreateStoreResponse, Error<CreateStoreError>> {
    let uri_str = format!("{}/stores", configuration.base_path);
    let req_builder = configuration
        .client
        .request(reqwest::Method::POST, &uri_str);
    let req_builder = configuration.apply_to_request(req_builder);
    let req_builder = req_builder.json(&body);
    let resp = req_builder.send().await?;
    parse_response(resp).await
}

/// Delete an OpenFGA store. This does not delete the data associated with the store, like tuples or authorization models.
pub async fn delete_store(
    configuration: &configuration::Configuration,
    store_id: &str,
) -> Result<(), Error<DeleteStoreError>> {
    let uri_str = format!(
        "{}/stores/{store_id}",
        configuration.base_path,
        store_id = crate::apis::urlencode(store_id)
    );
    let req_builder = configuration
        .client
        .request(reqwest::Method::DELETE, &uri_str);
    let req_builder = configuration.apply_to_request(req_builder);
    let resp = req_builder.send().await?;
    parse_empty_response(resp).await
}

/// Returns an OpenFGA store by its identifier
pub async fn get_store(
    configuration: &configuration::Configuration,
    store_id: &str,
) -> Result<models::GetStoreResponse, Error<GetStoreError>> {
    let uri_str = format!(
        "{}/stores/{store_id}",
        configuration.base_path,
        store_id = crate::apis::urlencode(store_id)
    );
    let req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
    let req_builder = configuration.apply_to_request(req_builder);
    let resp = req_builder.send().await?;
    parse_response(resp).await
}

/// Returns a paginated list of OpenFGA stores and a continuation token to get additional stores. The continuation token will be empty if there are no more stores.
pub async fn list_stores(
    configuration: &configuration::Configuration,
    page_size: Option<i32>,
    continuation_token: Option<&str>,
    name: Option<&str>,
) -> Result<models::ListStoresResponse, Error<ListStoresError>> {
    let uri_str = format!("{}/stores", configuration.base_path);
    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
    if let Some(param_value) = page_size {
        req_builder = req_builder.query(&[("page_size", param_value.to_string())]);
    }
    if let Some(param_value) = continuation_token {
        req_builder = req_builder.query(&[("continuation_token", param_value)]);
    }
    if let Some(param_value) = name {
        req_builder = req_builder.query(&[("name", param_value)]);
    }
    let req_builder = configuration.apply_to_request(req_builder);
    let resp = req_builder.send().await?;
    parse_response(resp).await
}