use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Permission {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub actions: Vec<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub not_actions: Vec<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub data_actions: Vec<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub not_data_actions: Vec<String>,
}
impl Permission {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
actions: vec![],
not_actions: vec![],
data_actions: vec![],
not_data_actions: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RoleDefinitionProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub role_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub permissions: Vec<Permission>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub assignable_scopes: Vec<String>,
}
impl RoleDefinitionProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
role_name: Some("test-role_name".into()),
description: Some("test-description".into()),
r#type: Some("test-type".into()),
permissions: vec![],
assignable_scopes: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RoleDefinition {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<RoleDefinitionProperties>,
}
impl RoleDefinition {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
name: Some("test-role_definition".into()),
r#type: Some("test-type".into()),
properties: Some(RoleDefinitionProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RoleDefinitionListResult {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub value: Vec<RoleDefinition>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl RoleDefinitionListResult {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: vec![],
next_link: Some("test-next_link".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RoleAssignmentProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub role_definition_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub principal_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub principal_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scope: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub condition_version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub created_on: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub updated_on: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub created_by: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub updated_by: Option<String>,
}
impl RoleAssignmentProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
role_definition_id: Some("test-role_definition_id".into()),
principal_id: Some("test-principal_id".into()),
principal_type: Some("test-principal_type".into()),
scope: Some("test-scope".into()),
description: Some("test-description".into()),
condition: Some("test-condition".into()),
condition_version: Some("test-condition_version".into()),
created_on: Some("test-created_on".into()),
updated_on: Some("test-updated_on".into()),
created_by: Some("test-created_by".into()),
updated_by: Some("test-updated_by".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RoleAssignment {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<RoleAssignmentProperties>,
}
impl RoleAssignment {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
name: Some("test-role_assignment".into()),
r#type: Some("test-type".into()),
properties: Some(RoleAssignmentProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RoleAssignmentListResult {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub value: Vec<RoleAssignment>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl RoleAssignmentListResult {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: vec![],
next_link: Some("test-next_link".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RoleAssignmentRequestProperties {
pub role_definition_id: String,
pub principal_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub principal_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub condition_version: Option<String>,
}
impl RoleAssignmentRequestProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
role_definition_id: "test-role_definition_id".into(),
principal_id: "test-principal_id".into(),
principal_type: Some("test-principal_type".into()),
description: Some("test-description".into()),
condition: Some("test-condition".into()),
condition_version: Some("test-condition_version".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RoleAssignmentCreateRequest {
pub properties: RoleAssignmentRequestProperties,
}
impl RoleAssignmentCreateRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
properties: RoleAssignmentRequestProperties::fixture(),
}
}
}