openfga 1.0.1

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_response};
use crate::models;
use serde::{Deserialize, Serialize};

/// struct for typed errors of method [`read_authorization_model`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ReadAuthorizationModelError {
    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 [`read_authorization_models`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ReadAuthorizationModelsError {
    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 [`write_authorization_model`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum WriteAuthorizationModelError {
    Status400(models::ValidationErrorMessageResponse),
    Status401(models::UnauthenticatedResponse),
    Status403(models::ForbiddenResponse),
    Status404(models::PathUnknownErrorMessageResponse),
    Status409(models::AbortedMessageResponse),
    Status422(models::UnprocessableContentMessageResponse),
    Status500(models::InternalErrorMessageResponse),
}

/// The ReadAuthorizationModel API returns an authorization model by its identifier. The response will return the authorization model for the particular version.
pub async fn read_authorization_model(
    configuration: &configuration::Configuration,
    store_id: &str,
    id: &str,
) -> Result<models::ReadAuthorizationModelResponse, Error<ReadAuthorizationModelError>> {
    let uri_str = format!(
        "{}/stores/{store_id}/authorization-models/{id}",
        configuration.base_path,
        store_id = crate::apis::urlencode(store_id),
        id = crate::apis::urlencode(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
}

/// The ReadAuthorizationModels API will return all the authorization models for a certain store.
pub async fn read_authorization_models(
    configuration: &configuration::Configuration,
    store_id: &str,
    page_size: Option<i32>,
    continuation_token: Option<&str>,
) -> Result<models::ReadAuthorizationModelsResponse, Error<ReadAuthorizationModelsError>> {
    let uri_str = format!(
        "{}/stores/{store_id}/authorization-models",
        configuration.base_path,
        store_id = crate::apis::urlencode(store_id)
    );
    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)]);
    }
    let req_builder = configuration.apply_to_request(req_builder);
    let resp = req_builder.send().await?;
    parse_response(resp).await
}

/// The WriteAuthorizationModel API will add a new authorization model to a store.
pub async fn write_authorization_model(
    configuration: &configuration::Configuration,
    store_id: &str,
    body: models::WriteAuthorizationModelRequest,
) -> Result<models::WriteAuthorizationModelResponse, Error<WriteAuthorizationModelError>> {
    let uri_str = format!(
        "{}/stores/{store_id}/authorization-models",
        configuration.base_path,
        store_id = crate::apis::urlencode(store_id)
    );
    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
}