use super::common::{default_project_information, Attributes, Project};
use crate::control_api::protocol::common::HostnamePort;
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
fn default_usage_count() -> u64 {
1
}
fn default_expires_in() -> u64 {
600
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
#[serde(rename_all = "kebab-case")]
pub struct CreateTicketRequest {
pub attributes: Attributes,
#[schema(examples("Id3b788c6a89de8b1f2fd13743eb3123178cf6ec7c9253be8ddcf7e154abe016a"))]
pub identity: Option<String>,
#[serde(default = "default_project_information")]
#[schema(default = default_project_information)]
pub project: Project,
#[serde(default = "default_usage_count")]
#[schema(default = default_usage_count)]
pub usage_count: u64,
#[serde(default = "default_expires_in")]
#[schema(default = default_expires_in)]
pub expires_in: u64,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
#[serde(rename_all = "kebab-case")]
pub struct Ticket {
pub encoded: String,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct EnrollProjectRequest {
#[schema(examples("Id3b788c6a89de8b1f2fd13743eb3123178cf6ec7c9253be8ddcf7e154abe016a"))]
pub identity: Option<String>,
pub ticket: String,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct AuthorityInformation {
pub route: String,
pub identity: String,
pub address: HostnamePort,
}