use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Bluetooth {
#[serde(
rename = "NSBluetoothAlwaysUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub bluetooth_always_usage_description: Option<String>,
#[deprecated(since = "iOS 6.0-13.0")]
#[serde(
rename = "NSBluetoothPeripheralUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub bluetooth_peripheral_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct CalendarAndReminders {
#[serde(
rename = "NSCalendarsUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub calendars_usage_description: Option<String>,
#[serde(
rename = "NSRemindersUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub reminders_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct CameraAndMicrophone {
#[serde(
rename = "NSCameraUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub camera_usage_description: Option<String>,
#[serde(
rename = "NSMicrophoneUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub microphone_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Contacts {
#[serde(
rename = "NSContactsUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub contacts_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct FaceId {
#[serde(
rename = "NSFaceIDUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub face_id_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct FilesAndFolders {
#[serde(
rename = "NSDesktopFolderUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub desktop_folder_usage_description: Option<String>,
#[serde(
rename = "NSDocumentsFolderUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub documents_folder_usage_description: Option<String>,
#[serde(
rename = "NSDownloadsFolderUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub downloads_folder_usage_description: Option<String>,
#[serde(
rename = "NSNetworkVolumesUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub network_volumes_usage_description: Option<String>,
#[serde(
rename = "NSRemovableVolumesUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub removable_volumes_usage_description: Option<String>,
#[serde(
rename = "NSFileProviderPresenceUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub file_provider_presence_usage_description: Option<String>,
#[serde(
rename = "NSFileProviderDomainUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub file_provider_domain_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct GameCenter {
#[serde(
rename = "NSGKFriendListUsageDescription",
skip_serializing_if = "Option::is_none"
)]
pub friend_list_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Health {
#[serde(
rename = "com.apple.developer.healthkit",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub healthkit: Option<bool>,
#[serde(
rename = "com.apple.developer.healthkit.access",
skip_serializing_if = "Option::is_none",
serialize_with = "crate::serialize_vec_enum_option"
)]
pub healthkit_access: Option<Vec<HealthKitCapabilities>>,
#[serde(
rename = "NSHealthClinicalHealthRecordsShareUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub health_clinical_health_records_share_usage_description: Option<String>,
#[serde(
rename = "NSHealthShareUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub health_share_usage_description: Option<String>,
#[serde(
rename = "NSHealthUpdateUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub health_update_usage_description: Option<String>,
#[serde(
rename = "NSHealthRequiredReadAuthorizationTypeIdentifiers",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub health_required_read_authorization_type_identifiers: Option<Vec<String>>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Home {
#[serde(
rename = "NSHomeKitUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub home_kit_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Location {
#[serde(
rename = "NSLocationAlwaysAndWhenInUseUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub location_always_and_when_in_use_usage_description: Option<String>,
#[deprecated(since = "iOS 6.0-8.0")]
#[serde(
rename = "NSLocationUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub location_usage_description: Option<String>,
#[serde(
rename = "NSLocationWhenInUseUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub location_when_in_use_usage_description: Option<String>,
#[serde(
rename = "NSLocationTemporaryUsageDescriptionDictionary",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub location_temporary_usage_description_dictionary: Option<DefaultDictionary>,
#[deprecated(
since = "iOS 8.0-10.0",
note = "For apps deployed to targets in iOS 11 and later, use NSLocationAlwaysAndWhenInUseUsageDescription instead."
)]
#[serde(
rename = "NSLocationAlwaysUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub location_always_usage_description: Option<String>,
#[serde(
rename = "NSWidgetWantsLocation",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub widget_wants_location: Option<bool>,
#[serde(
rename = "NSLocationDefaultAccuracyReduced",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub location_default_accuracy_reduced: Option<bool>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct DefaultDictionary {
pub default: String,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct MediaPlayer {
#[serde(
rename = "NSAppleMusicUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub apple_music_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Motion {
#[serde(
rename = "NSMotionUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub motion_usage_description: Option<String>,
#[serde(
rename = "NSFallDetectionUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub fall_detection_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Networking {
#[serde(
rename = "NSLocalNetworkUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub local_network_usage_description: Option<String>,
#[serde(
rename = "NSNearbyInteractionAllowOnceUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub nearby_interaction_allow_once_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Nfc {
#[serde(
rename = "NFCReaderUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub nfc_reader_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Photos {
#[serde(
rename = "NSPhotoLibraryAddUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub photo_library_add_usage_description: Option<String>,
#[serde(
rename = "NSPhotoLibraryUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub photo_library_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Scripting {
#[serde(
rename = "NSAppleScriptEnabled",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub apple_script_enabled: Option<bool>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Security {
#[serde(
rename = "NSUserTrackingUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub user_tracking_usage_description: Option<String>,
#[serde(
rename = "NSAppleEventsUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub apple_events_usage_description: Option<String>,
#[serde(
rename = "NSSystemAdministrationUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub system_administration_usage_description: Option<String>,
#[serde(
rename = "ITSAppUsesNonExemptEncryption",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub app_uses_non_exempt_encryption: Option<bool>,
#[serde(
rename = "ITSEncryptionExportComplianceCode",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub encryption_export_compliance_code: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Sensors {
#[serde(
rename = "NSSensorKitUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub sensor_kit_usage_description: Option<String>,
#[serde(
rename = "NSSensorKitUsageDetail",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub sensor_kit_usage_detail: Option<DefaultDictionary>,
#[serde(
rename = "NSSensorKitPrivacyPolicyURL",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub sensor_kit_privacy_policy_url: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Siri {
#[serde(
rename = "NSSiriUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub siri_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct Speech {
#[serde(
rename = "NSSpeechRecognitionUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub speech_recognition_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct TvResource {
#[serde(
rename = "NSVideoSubscriberAccountUsageDescription",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub video_subscriber_account_usage_description: Option<String>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Default)]
pub struct WiFi {
#[serde(
rename = "UIRequiresPersistentWiFi",
serialize_with = "crate::serialize_option",
skip_serializing_if = "Option::is_none"
)]
pub requires_persistent_wifi: Option<bool>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq)]
pub enum HealthKitCapabilities {
#[serde(rename = "health-records")]
HealthRecords,
}