use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize, Debug)]
pub struct CreateAuthorization {
pub description: String,
pub permissions: Vec<AuthPermissions>,
#[serde(rename = "orgID")]
pub org_id: String,
pub status: String,
pub user_id: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct AuthPermissions {
pub action: String,
pub resource: AuthResource,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct AuthResource {
pub r#type: String,
pub org_id: Option<String>,
pub bucket_id: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
pub enum AuthResourceType {
Bucket,
Organization,
Dashboards,
Orgs,
Tasks,
Telegrafs,
Users,
Variables,
Secrets,
Labels,
Views,
Documents,
NotificationsRules,
NotificationEndpoints,
Checks,
DBRP,
Annotations,
Sources,
Scrapers,
Notebooks,
Remotes,
Replications,
Instance,
Flows,
Functions,
Subscriptions,
}
impl std::fmt::Display for AuthResourceType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
AuthResourceType::Bucket => write!(f, "buckets"),
AuthResourceType::Organization => write!(f, "orgs"),
AuthResourceType::Dashboards => write!(f, "dashboards"),
AuthResourceType::Orgs => write!(f, "orgs"),
AuthResourceType::Tasks => write!(f, "tasks"),
AuthResourceType::Telegrafs => write!(f, "telegrafs"),
AuthResourceType::Users => write!(f, "users"),
AuthResourceType::Variables => write!(f, "variables"),
AuthResourceType::Secrets => write!(f, "secrets"),
AuthResourceType::Labels => write!(f, "labels"),
AuthResourceType::Views => write!(f, "views"),
AuthResourceType::Documents => write!(f, "documents"),
AuthResourceType::NotificationsRules => write!(f, "notificationRules"),
AuthResourceType::NotificationEndpoints => write!(f, "notificationEndpoints"),
AuthResourceType::Checks => write!(f, "checks"),
AuthResourceType::DBRP => write!(f, "dbrps"),
AuthResourceType::Annotations => write!(f, "annotations"),
AuthResourceType::Sources => write!(f, "sources"),
AuthResourceType::Scrapers => write!(f, "scrapers"),
AuthResourceType::Notebooks => write!(f, "notebooks"),
AuthResourceType::Remotes => write!(f, "remotes"),
AuthResourceType::Replications => write!(f, "replications"),
AuthResourceType::Instance => write!(f, "instance"),
AuthResourceType::Flows => write!(f, "flows"),
AuthResourceType::Functions => write!(f, "functions"),
AuthResourceType::Subscriptions => write!(f, "subscriptions"),
}
}
}
#[derive(Serialize, Deserialize, Debug)]
pub struct AuthorizationResponse {
pub description: String,
pub status: String,
#[serde(rename = "createdAt")]
pub created_at: String,
pub id: String,
pub links: AuthorizationLinks,
pub org: String,
#[serde(rename = "orgID")]
pub org_id: String,
pub permissions: Vec<AuthPermissions>,
pub token: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
pub user: String,
#[serde(rename = "userID")]
pub user_id: String,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct AuthorizationLinks {
#[serde(rename = "self")]
pub authorization_self: String,
pub user: String,
}