use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
pub struct DeveloperProfile {
pub id: i32,
pub email: String,
#[serde(default)]
pub created_at: Option<String>,
#[serde(default)]
pub updated_at: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
pub struct Organization {
pub id: String,
pub name: String,
#[serde(default)]
pub owner_id: Option<i32>,
#[serde(default, alias = "owner_developer_id")]
pub owner_developer_id: Option<i32>,
#[serde(default)]
pub role: Option<String>,
#[serde(default)]
pub joined: Option<bool>,
}
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
pub struct Application {
pub id: String,
pub name: String,
#[serde(default)]
pub description: Option<String>,
#[serde(default, alias = "organizationId")]
pub organization_id: Option<String>,
#[serde(default)]
pub origins: Vec<String>,
#[serde(default)]
pub plan_id: Option<i32>,
}
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
pub struct ApiKeyRecord {
#[serde(default)]
pub key: Option<String>,
#[serde(default, alias = "alias")]
pub name: Option<String>,
pub id: Option<String>,
#[serde(default, alias = "applicationId")]
pub application_id: Option<String>,
#[serde(default)]
pub product: Option<String>,
#[serde(default)]
pub permissions: Option<String>,
#[serde(default)]
pub status: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Default)]
pub struct MeshSdkSettings {
#[serde(default, alias = "meshTelemetry")]
pub mesh_telemetry: bool,
#[serde(default, alias = "hostedRelay")]
pub hosted_relay: bool,
}
#[derive(Debug, Clone, Deserialize, PartialEq)]
pub struct CliMeProductSettings {
#[serde(default)]
pub mesh_sdk: MeshSdkSettings,
}
#[derive(Debug, Clone, Deserialize, PartialEq)]
pub struct CliMe {
#[serde(default, alias = "keyName")]
pub key_name: Option<String>,
#[serde(
default,
alias = "applicationId",
alias = "projectId",
alias = "project_id"
)]
pub app_id: Option<String>,
#[serde(default)]
pub product: Option<String>,
#[serde(default)]
pub permissions: Option<String>,
#[serde(default)]
pub email: Option<String>,
#[serde(default)]
pub product_settings: Option<CliMeProductSettings>,
}
#[derive(Debug, Clone, Deserialize, PartialEq)]
pub struct AuthSessionResult {
pub developer: DeveloperProfile,
pub token: String,
#[serde(default)]
pub deletion_cancelled: bool,
}
#[derive(Debug, Clone, Deserialize, PartialEq)]
pub struct SessionRefresh {
pub renewed: bool,
pub token: String,
}
#[derive(Serialize)]
pub struct CreateOrganizationBody<'a> {
pub name: &'a str,
}
#[derive(Serialize)]
pub struct CreateApplicationBody<'a> {
pub name: &'a str,
#[serde(rename = "organizationId", alias = "organization_id")]
pub organization_id: &'a str,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<&'a str>,
}
#[derive(Serialize)]
pub struct CreateApiKeyBody<'a> {
pub alias: &'a str,
pub product: &'a str,
pub permissions: &'a str,
}