use serde::{Deserialize, Serialize};
use crate::model::{Action, Context, Resource, Subject};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Page {
#[serde(skip_serializing_if = "Option::is_none")]
pub token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct PageResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub next_token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub count: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct SubjectSearchRequest {
pub subject: Subject,
pub action: Action,
pub resource: Resource,
#[serde(skip_serializing_if = "Option::is_none")]
pub context: Option<Context>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<Page>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct SubjectSearchResponse {
pub results: Vec<Subject>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<PageResponse>,
#[serde(skip_serializing_if = "Option::is_none")]
pub context: Option<serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ResourceSearchRequest {
pub subject: Subject,
pub action: Action,
pub resource: Resource,
#[serde(skip_serializing_if = "Option::is_none")]
pub context: Option<Context>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<Page>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ResourceSearchResponse {
pub results: Vec<Resource>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<PageResponse>,
#[serde(skip_serializing_if = "Option::is_none")]
pub context: Option<serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ActionSearchRequest {
pub subject: Subject,
pub resource: Resource,
#[serde(skip_serializing_if = "Option::is_none")]
pub context: Option<Context>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<Page>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ActionSearchResponse {
pub results: Vec<Action>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<PageResponse>,
#[serde(skip_serializing_if = "Option::is_none")]
pub context: Option<serde_json::Value>,
}