use super::common::{FieldLanguageMap, LangID, RefID, RichText, Title};
use crate::reference::WorkRelation;
use crate::reference::contributor::Contributor;
use crate::reference::date::EdtfString;
#[cfg(feature = "schema")]
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[cfg(feature = "bindings")]
use specta::Type;
use std::collections::HashMap;
use url::Url;
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
#[cfg_attr(feature = "schema", derive(JsonSchema))]
#[cfg_attr(feature = "bindings", derive(Type))]
#[serde(rename_all = "kebab-case")]
pub struct LegalCase {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<RefID>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<Title>,
#[serde(skip_serializing_if = "Option::is_none")]
pub original: Option<WorkRelation>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authority: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub volume: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reporter: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<String>,
#[cfg_attr(feature = "bindings", specta(type = String))]
#[serde(default, skip_serializing_if = "EdtfString::is_empty")]
pub created: EdtfString,
#[cfg_attr(feature = "bindings", specta(type = String))]
#[serde(default, skip_serializing_if = "EdtfString::is_empty")]
pub issued: EdtfString,
#[serde(alias = "URL", skip_serializing_if = "Option::is_none")]
pub url: Option<Url>,
#[cfg_attr(feature = "bindings", specta(type = Option<String>))]
#[serde(skip_serializing_if = "Option::is_none")]
pub accessed: Option<EdtfString>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<LangID>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub field_languages: FieldLanguageMap,
#[serde(skip_serializing_if = "Option::is_none")]
pub note: Option<RichText>,
#[serde(alias = "DOI", skip_serializing_if = "Option::is_none")]
pub doi: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub keywords: Option<Vec<String>>,
#[serde(
flatten,
default,
skip_serializing_if = "std::collections::BTreeMap::is_empty"
)]
#[cfg_attr(feature = "schema", schemars(skip))]
pub unknown_fields: std::collections::BTreeMap<String, serde_json::Value>,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
#[cfg_attr(feature = "schema", derive(JsonSchema))]
#[cfg_attr(feature = "bindings", derive(Type))]
#[serde(rename_all = "kebab-case")]
pub struct Statute {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<RefID>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<Title>,
#[serde(skip_serializing_if = "Option::is_none")]
pub original: Option<WorkRelation>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authority: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub volume: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<String>,
#[cfg_attr(feature = "bindings", specta(type = String))]
#[serde(default, skip_serializing_if = "EdtfString::is_empty")]
pub created: EdtfString,
#[serde(skip_serializing_if = "Option::is_none")]
pub section: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub chapter_number: Option<String>,
#[cfg_attr(feature = "bindings", specta(type = String))]
#[serde(default, skip_serializing_if = "EdtfString::is_empty")]
pub issued: EdtfString,
#[serde(alias = "URL", skip_serializing_if = "Option::is_none")]
pub url: Option<Url>,
#[cfg_attr(feature = "bindings", specta(type = Option<String>))]
#[serde(skip_serializing_if = "Option::is_none")]
pub accessed: Option<EdtfString>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<LangID>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub field_languages: FieldLanguageMap,
#[serde(skip_serializing_if = "Option::is_none")]
pub note: Option<RichText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub keywords: Option<Vec<String>>,
#[serde(
flatten,
default,
skip_serializing_if = "std::collections::BTreeMap::is_empty"
)]
#[cfg_attr(feature = "schema", schemars(skip))]
pub unknown_fields: std::collections::BTreeMap<String, serde_json::Value>,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
#[cfg_attr(feature = "schema", derive(JsonSchema))]
#[cfg_attr(feature = "bindings", derive(Type))]
#[serde(deny_unknown_fields, rename_all = "kebab-case")]
pub struct Treaty {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<RefID>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<Title>,
#[serde(skip_serializing_if = "Option::is_none")]
pub original: Option<WorkRelation>,
#[serde(skip_serializing_if = "Option::is_none")]
pub author: Option<Contributor>,
#[serde(skip_serializing_if = "Option::is_none")]
pub volume: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reporter: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<String>,
#[cfg_attr(feature = "bindings", specta(type = String))]
#[serde(default, skip_serializing_if = "EdtfString::is_empty")]
pub created: EdtfString,
#[cfg_attr(feature = "bindings", specta(type = String))]
#[serde(default, skip_serializing_if = "EdtfString::is_empty")]
pub issued: EdtfString,
#[serde(alias = "URL", skip_serializing_if = "Option::is_none")]
pub url: Option<Url>,
#[cfg_attr(feature = "bindings", specta(type = Option<String>))]
#[serde(skip_serializing_if = "Option::is_none")]
pub accessed: Option<EdtfString>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<LangID>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub field_languages: FieldLanguageMap,
#[serde(skip_serializing_if = "Option::is_none")]
pub note: Option<RichText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub keywords: Option<Vec<String>>,
#[serde(
flatten,
default,
skip_serializing_if = "std::collections::BTreeMap::is_empty"
)]
#[cfg_attr(feature = "schema", schemars(skip))]
pub unknown_fields: std::collections::BTreeMap<String, serde_json::Value>,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
#[cfg_attr(feature = "schema", derive(JsonSchema))]
#[cfg_attr(feature = "bindings", derive(Type))]
#[serde(rename_all = "kebab-case")]
pub struct Hearing {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<RefID>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<Title>,
#[serde(skip_serializing_if = "Option::is_none")]
pub original: Option<WorkRelation>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authority: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub session_number: Option<String>,
#[cfg_attr(feature = "bindings", specta(type = String))]
#[serde(default, skip_serializing_if = "EdtfString::is_empty")]
pub created: EdtfString,
#[cfg_attr(feature = "bindings", specta(type = String))]
#[serde(default, skip_serializing_if = "EdtfString::is_empty")]
pub issued: EdtfString,
#[serde(alias = "URL", skip_serializing_if = "Option::is_none")]
pub url: Option<Url>,
#[cfg_attr(feature = "bindings", specta(type = Option<String>))]
#[serde(skip_serializing_if = "Option::is_none")]
pub accessed: Option<EdtfString>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<LangID>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub field_languages: FieldLanguageMap,
#[serde(skip_serializing_if = "Option::is_none")]
pub note: Option<RichText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub keywords: Option<Vec<String>>,
#[serde(
flatten,
default,
skip_serializing_if = "std::collections::BTreeMap::is_empty"
)]
#[cfg_attr(feature = "schema", schemars(skip))]
pub unknown_fields: std::collections::BTreeMap<String, serde_json::Value>,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
#[cfg_attr(feature = "schema", derive(JsonSchema))]
#[cfg_attr(feature = "bindings", derive(Type))]
#[serde(rename_all = "kebab-case")]
pub struct Regulation {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<RefID>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<Title>,
#[serde(skip_serializing_if = "Option::is_none")]
pub original: Option<WorkRelation>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authority: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub volume: Option<String>,
#[cfg_attr(feature = "bindings", specta(type = String))]
#[serde(default, skip_serializing_if = "EdtfString::is_empty")]
pub created: EdtfString,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub section: Option<String>,
#[cfg_attr(feature = "bindings", specta(type = String))]
#[serde(default, skip_serializing_if = "EdtfString::is_empty")]
pub issued: EdtfString,
#[serde(alias = "URL", skip_serializing_if = "Option::is_none")]
pub url: Option<Url>,
#[cfg_attr(feature = "bindings", specta(type = Option<String>))]
#[serde(skip_serializing_if = "Option::is_none")]
pub accessed: Option<EdtfString>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<LangID>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub field_languages: FieldLanguageMap,
#[serde(skip_serializing_if = "Option::is_none")]
pub note: Option<RichText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub keywords: Option<Vec<String>>,
#[serde(
flatten,
default,
skip_serializing_if = "std::collections::BTreeMap::is_empty"
)]
#[cfg_attr(feature = "schema", schemars(skip))]
pub unknown_fields: std::collections::BTreeMap<String, serde_json::Value>,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
#[cfg_attr(feature = "schema", derive(JsonSchema))]
#[cfg_attr(feature = "bindings", derive(Type))]
#[serde(rename_all = "kebab-case")]
pub struct Brief {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<RefID>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<Title>,
#[serde(skip_serializing_if = "Option::is_none")]
pub original: Option<WorkRelation>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authority: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub author: Option<Contributor>,
#[serde(skip_serializing_if = "Option::is_none")]
pub docket_number: Option<String>,
#[cfg_attr(feature = "bindings", specta(type = String))]
#[serde(default, skip_serializing_if = "EdtfString::is_empty")]
pub created: EdtfString,
#[cfg_attr(feature = "bindings", specta(type = String))]
#[serde(default, skip_serializing_if = "EdtfString::is_empty")]
pub issued: EdtfString,
#[serde(alias = "URL", skip_serializing_if = "Option::is_none")]
pub url: Option<Url>,
#[cfg_attr(feature = "bindings", specta(type = Option<String>))]
#[serde(skip_serializing_if = "Option::is_none")]
pub accessed: Option<EdtfString>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<LangID>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub field_languages: FieldLanguageMap,
#[serde(skip_serializing_if = "Option::is_none")]
pub note: Option<RichText>,
#[serde(skip_serializing_if = "Option::is_none")]
pub keywords: Option<Vec<String>>,
#[serde(
flatten,
default,
skip_serializing_if = "std::collections::BTreeMap::is_empty"
)]
#[cfg_attr(feature = "schema", schemars(skip))]
pub unknown_fields: std::collections::BTreeMap<String, serde_json::Value>,
}