use derive_setters::Setters;
use serde::{Deserialize, Serialize};
#[derive(Debug, Setters, Serialize, Deserialize, Clone, Default, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
#[setters(strip_option, into)]
pub struct Permissions {
#[serde(skip_serializing_if = "Option::is_none")]
pub actions: Option<Level>,
#[serde(skip_serializing_if = "Option::is_none")]
pub contents: Option<Level>,
#[serde(skip_serializing_if = "Option::is_none")]
pub issues: Option<Level>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pull_requests: Option<Level>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deployments: Option<Level>,
#[serde(skip_serializing_if = "Option::is_none")]
pub checks: Option<Level>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statuses: Option<Level>,
#[serde(skip_serializing_if = "Option::is_none")]
pub packages: Option<Level>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pages: Option<Level>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id_token: Option<Level>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
pub enum Level {
Read,
Write,
#[default]
None,
}