use serde::Serialize;
use serde_json::Number;
#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum CardMembershipKind {
Member,
Assignee,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardMemberCollectionSuccess {
pub board_id: String,
pub list_id: String,
pub card_id: String,
pub members: Vec<String>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardAssigneeCollectionSuccess {
pub board_id: String,
pub list_id: String,
pub card_id: String,
pub assignees: Vec<String>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardMembershipMutationSuccess {
pub board_id: String,
pub list_id: String,
pub card_id: String,
pub user_id: String,
pub kind: CardMembershipKind,
pub action: super::MembershipAction,
pub members: Vec<String>,
pub assignees: Vec<String>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardSummary {
pub card_id: String,
pub title: Option<String>,
pub description: Option<String>,
pub swimlane_id: Option<String>,
pub received_at: Option<String>,
pub start_at: Option<String>,
pub due_at: Option<String>,
pub end_at: Option<String>,
pub assignees: Vec<String>,
pub sort: Option<Number>,
}
#[derive(Debug, Eq, PartialEq, Serialize)]
pub struct CardCollectionSuccess {
pub board_id: String,
pub list_id: String,
pub cards: Vec<CardSummary>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
#[serde(untagged)]
pub enum CardDetailCustomFieldValue {
String(String),
Number(Number),
Boolean(bool),
Strings(Vec<Option<String>>),
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardDetailCustomField {
pub custom_field_id: Option<String>,
pub value: Option<CardDetailCustomFieldValue>,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
#[serde(rename_all = "lowercase")]
pub enum CardDetailStickerHighlight {
Underline,
Round,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardDetailSticker {
pub icon: Option<String>,
pub name: Option<String>,
pub highlight: Option<CardDetailStickerHighlight>,
pub position: Option<Number>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardDetailLocation {
pub location_id: String,
pub name: Option<String>,
pub address: Option<String>,
pub latitude: Option<Number>,
pub longitude: Option<Number>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardDetailDependency {
pub card_id: String,
pub dependency_type: Option<String>,
pub color: Option<String>,
pub icon: Option<String>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardDetailVote {
pub question: String,
pub positive: Vec<String>,
pub negative: Vec<String>,
pub end: Option<String>,
pub public: bool,
pub allow_non_board_members: bool,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardDetailPoker {
pub question: Option<bool>,
pub one: Vec<String>,
pub two: Vec<String>,
pub three: Vec<String>,
pub five: Vec<String>,
pub eight: Vec<String>,
pub thirteen: Vec<String>,
pub twenty: Vec<String>,
pub forty: Vec<String>,
pub one_hundred: Vec<String>,
pub unsure: Vec<String>,
pub end: Option<String>,
pub allow_non_board_members: Option<bool>,
pub estimation: Option<Number>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardDetail {
pub card_id: String,
pub title: Option<String>,
pub archived: bool,
pub archived_at: Option<String>,
pub deleted_at: Option<String>,
pub deleted_by: Option<String>,
pub delete_batch_id: Option<String>,
pub parent_id: Option<String>,
pub list_id: Option<String>,
pub swimlane_id: String,
pub board_id: Option<String>,
pub cover_id: Option<String>,
pub color: Option<String>,
pub created_at: String,
pub modified_at: String,
pub custom_fields: Vec<CardDetailCustomField>,
pub date_last_activity: String,
pub description: Option<String>,
pub requested_by: Option<String>,
pub assigned_by: Option<String>,
pub label_ids: Vec<Option<String>>,
pub members: Vec<String>,
pub assignees: Vec<String>,
pub requesters: Vec<String>,
pub assigners: Vec<String>,
pub received_at: Option<String>,
pub start_at: Option<String>,
pub due_at: Option<String>,
pub end_at: Option<String>,
pub due_complete: Option<bool>,
pub stickers: Vec<CardDetailSticker>,
pub location_name: Option<String>,
pub location_address: Option<String>,
pub location_latitude: Option<Number>,
pub location_longitude: Option<Number>,
pub locations: Vec<CardDetailLocation>,
pub spent_time: Option<Number>,
pub is_overtime: Option<bool>,
pub user_id: String,
pub sort: Option<Number>,
pub subtask_sort: Option<Number>,
pub card_type: String,
pub linked_id: Option<String>,
pub card_dependencies: Vec<CardDetailDependency>,
pub vote: Option<CardDetailVote>,
pub poker: Option<CardDetailPoker>,
pub target_id_gantt: Vec<String>,
pub link_type_gantt: Vec<Number>,
pub link_id_gantt: Vec<String>,
pub card_number: Option<Number>,
pub show_activities: bool,
pub show_list_on_minicard: Option<bool>,
pub show_checklist_at_minicard: Option<bool>,
pub hide_finished_checklist_if_items_are_hidden: Option<bool>,
}
#[derive(Debug, Eq, PartialEq, Serialize)]
pub struct CardCreateSuccess {
pub board_id: String,
pub list_id: String,
pub card_id: String,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum CardSubmittedField {
Title,
Sort,
ParentId,
Description,
Color,
LabelIds,
RequestedBy,
AssignedBy,
ReceivedAt,
StartAt,
DueAt,
EndAt,
SpentTime,
IsOverTime,
Members,
Assignees,
DueComplete,
SwimlaneId,
ListId,
NewBoardId,
NewSwimlaneId,
NewListId,
Archive,
Vote,
Poker,
CustomFields,
Stickers,
Locations,
}
#[derive(Debug, Eq, PartialEq, Serialize)]
pub struct CardUpdateSuccess {
pub board_id: String,
pub list_id: String,
pub card_id: String,
pub submitted_fields: Vec<CardSubmittedField>,
}
#[derive(Debug, Eq, PartialEq, Serialize)]
pub struct CardArchiveSuccess {
pub board_id: String,
pub list_id: String,
pub card_id: String,
pub archived: bool,
pub archived_at: String,
}
#[derive(Debug, Eq, PartialEq, Serialize)]
pub struct CardRestoreSuccess {
pub board_id: String,
pub list_id: String,
pub card_id: String,
pub archived: bool,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum CardDeleteMode {
Hard,
}
#[derive(Debug, Eq, PartialEq, Serialize)]
pub struct CardDeleteSuccess {
pub board_id: String,
pub list_id: String,
pub card_id: String,
pub deleted: bool,
pub delete_mode: CardDeleteMode,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardCustomFieldSetSuccess {
pub board_id: String,
pub list_id: String,
pub card_id: String,
pub custom_field_id: String,
pub custom_fields: Vec<CardDetailCustomField>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardCustomFieldQuerySuccess {
pub board_id: String,
pub custom_field_id: String,
pub value: String,
pub cards: Vec<CardDetail>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CardLabelCollection {
pub board_id: String,
pub list_id: String,
pub card_id: String,
pub label_ids: Vec<Option<String>>,
}
#[derive(Debug, Eq, PartialEq, Serialize)]
pub struct CardCopySuccess {
pub source_board_id: String,
pub source_list_id: String,
pub source_card_id: String,
pub target_board_id: String,
pub target_list_id: String,
pub target_swimlane_id: String,
pub card_id: String,
pub mutation_confirmed: bool,
}
#[derive(Debug, Eq, PartialEq, Serialize)]
pub struct CardCountSuccess {
pub board_id: String,
pub list_id: Option<String>,
pub count: u64,
}
#[derive(Debug, Eq, PartialEq, Serialize)]
pub struct SwimlaneCardCollectionSuccess {
pub board_id: String,
pub swimlane_id: String,
pub cards: Vec<SwimlaneCardSummary>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct SwimlaneCardSummary {
pub card_id: String,
pub title: Option<String>,
pub description: Option<String>,
pub list_id: Option<String>,
pub received_at: Option<String>,
pub start_at: Option<String>,
pub due_at: Option<String>,
pub end_at: Option<String>,
pub assignees: Option<Vec<Option<String>>>,
pub sort: Option<Number>,
}