use crate::*;
use serde_with::{serde_as, OneOrMany};
pub type MusicReleaseDateModifiedFieldEnum = String;
pub type MusicReleaseEncodingFormatFieldEnum = String;
pub type MusicReleaseEditEIDRFieldEnum = String;
pub type MusicReleaseDatePublishedFieldEnum = String;
pub type MusicReleaseTemporalFieldEnum = String;
pub type MusicReleaseDateCreatedFieldEnum = String;
pub type MusicReleaseFileFormatFieldEnum = String;
pub type MusicReleaseExpiresFieldEnum = String;
pub type MusicReleaseTemporalCoverageFieldEnum = String;
pub type MusicReleaseSchemaVersionFieldEnum = String;
pub type MusicReleaseGenreFieldEnum = String;
pub type MusicReleaseAdditionalTypeFieldEnum = String;
#[serde_as]
#[derive(Debug, serde::Deserialize)]
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
pub struct MusicRelease {
#[serde(rename = "@context")]
pub context: String,
#[serde(rename = "releaseOf")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub release_of: Vec<MusicAlbum>,
#[serde(rename = "musicReleaseFormat")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub music_release_format: Vec<MusicReleaseFormatTypeEnum>,
#[serde(rename = "recordLabel")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub record_label: Vec<Organization>,
#[serde(rename = "duration")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub duration: Vec<MusicReleaseDurationFieldEnum>,
#[serde(rename = "catalogNumber")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub catalog_number: Vec<String>,
#[serde(rename = "creditedTo")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub credited_to: Vec<MusicReleaseCreditedToFieldEnum>,
#[serde(rename = "numTracks")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub num_tracks: Vec<i32>,
#[serde(rename = "track")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub track: Vec<MusicReleaseTrackFieldEnum>,
#[serde(rename = "tracks")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub tracks: Vec<MusicRecording>,
#[serde(rename = "provider")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub provider: Vec<MusicReleaseProviderFieldEnum>,
#[serde(rename = "aggregateRating")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub aggregate_rating: Vec<AggregateRating>,
#[serde(rename = "citation")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub citation: Vec<MusicReleaseCitationFieldEnum>,
#[serde(rename = "locationCreated")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub location_created: Vec<Place>,
#[serde(rename = "sdPublisher")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub sd_publisher: Vec<MusicReleaseSdPublisherFieldEnum>,
#[serde(rename = "thumbnail")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub thumbnail: Vec<ImageObject>,
#[serde(rename = "accessModeSufficient")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub access_mode_sufficient: Vec<ItemList>,
#[serde(rename = "publishingPrinciples")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub publishing_principles: Vec<MusicReleasePublishingPrinciplesFieldEnum>,
#[serde(rename = "inLanguage")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub in_language: Vec<MusicReleaseInLanguageFieldEnum>,
#[serde(rename = "abstract")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub _abstract: Vec<String>,
#[serde(rename = "countryOfOrigin")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub country_of_origin: Vec<Country>,
#[serde(rename = "contentLocation")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub content_location: Vec<Place>,
#[serde(rename = "dateModified")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub date_modified: Vec<MusicReleaseDateModifiedFieldEnum>,
#[serde(rename = "usageInfo")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub usage_info: Vec<MusicReleaseUsageInfoFieldEnum>,
#[serde(rename = "sdDatePublished")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub sd_date_published: Vec<String>,
#[serde(rename = "archivedAt")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub archived_at: Vec<MusicReleaseArchivedAtFieldEnum>,
#[serde(rename = "workTranslation")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub work_translation: Vec<CreativeWork>,
#[serde(rename = "sdLicense")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub sd_license: Vec<MusicReleaseSdLicenseFieldEnum>,
#[serde(rename = "educationalAlignment")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub educational_alignment: Vec<AlignmentObject>,
#[serde(rename = "editor")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub editor: Vec<Person>,
#[serde(rename = "license")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub license: Vec<MusicReleaseLicenseFieldEnum>,
#[serde(rename = "maintainer")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub maintainer: Vec<MusicReleaseMaintainerFieldEnum>,
#[serde(rename = "sourceOrganization")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub source_organization: Vec<Organization>,
#[serde(rename = "reviews")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub reviews: Vec<Review>,
#[serde(rename = "accessibilityHazard")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub accessibility_hazard: Vec<String>,
#[serde(rename = "workExample")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub work_example: Vec<CreativeWork>,
#[serde(rename = "pattern")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub pattern: Vec<MusicReleasePatternFieldEnum>,
#[serde(rename = "offers")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub offers: Vec<MusicReleaseOffersFieldEnum>,
#[serde(rename = "hasPart")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_part: Vec<CreativeWork>,
#[serde(rename = "keywords")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub keywords: Vec<MusicReleaseKeywordsFieldEnum>,
#[serde(rename = "exampleOfWork")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub example_of_work: Vec<CreativeWork>,
#[serde(rename = "copyrightNotice")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub copyright_notice: Vec<String>,
#[serde(rename = "encodingFormat")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub encoding_format: Vec<MusicReleaseEncodingFormatFieldEnum>,
#[serde(rename = "mainEntity")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub main_entity: Vec<Thing>,
#[serde(rename = "editEIDR")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub edit_eidr: Vec<MusicReleaseEditEIDRFieldEnum>,
#[serde(rename = "copyrightYear")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub copyright_year: Vec<f32>,
#[serde(rename = "about")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub about: Vec<Thing>,
#[serde(rename = "datePublished")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub date_published: Vec<MusicReleaseDatePublishedFieldEnum>,
#[serde(rename = "educationalLevel")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub educational_level: Vec<MusicReleaseEducationalLevelFieldEnum>,
#[serde(rename = "accessibilityFeature")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub accessibility_feature: Vec<String>,
#[serde(rename = "materialExtent")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub material_extent: Vec<MusicReleaseMaterialExtentFieldEnum>,
#[serde(rename = "video")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub video: Vec<MusicReleaseVideoFieldEnum>,
#[serde(rename = "funding")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub funding: Vec<Grant>,
#[serde(rename = "headline")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub headline: Vec<String>,
#[serde(rename = "digitalSourceType")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub digital_source_type: Vec<IPTCDigitalSourceEnumerationEnum>,
#[serde(rename = "learningResourceType")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub learning_resource_type: Vec<MusicReleaseLearningResourceTypeFieldEnum>,
#[serde(rename = "alternativeHeadline")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub alternative_headline: Vec<String>,
#[serde(rename = "temporal")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub temporal: Vec<MusicReleaseTemporalFieldEnum>,
#[serde(rename = "isBasedOnUrl")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_based_on_url: Vec<MusicReleaseIsBasedOnUrlFieldEnum>,
#[serde(rename = "associatedMedia")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub associated_media: Vec<MediaObject>,
#[serde(rename = "commentCount")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub comment_count: Vec<i32>,
#[serde(rename = "dateCreated")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub date_created: Vec<MusicReleaseDateCreatedFieldEnum>,
#[serde(rename = "fileFormat")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub file_format: Vec<MusicReleaseFileFormatFieldEnum>,
#[serde(rename = "teaches")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub teaches: Vec<MusicReleaseTeachesFieldEnum>,
#[serde(rename = "accessibilityControl")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub accessibility_control: Vec<String>,
#[serde(rename = "isPartOf")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_part_of: Vec<MusicReleaseIsPartOfFieldEnum>,
#[serde(rename = "accessibilityAPI")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub accessibility_api: Vec<String>,
#[serde(rename = "contentReferenceTime")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub content_reference_time: Vec<String>,
#[serde(rename = "isBasedOn")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_based_on: Vec<MusicReleaseIsBasedOnFieldEnum>,
#[serde(rename = "creativeWorkStatus")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub creative_work_status: Vec<MusicReleaseCreativeWorkStatusFieldEnum>,
#[serde(rename = "award")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub award: Vec<String>,
#[serde(rename = "educationalUse")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub educational_use: Vec<MusicReleaseEducationalUseFieldEnum>,
#[serde(rename = "isFamilyFriendly")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_family_friendly: Vec<String>,
#[serde(rename = "interactivityType")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub interactivity_type: Vec<String>,
#[serde(rename = "publication")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub publication: Vec<PublicationEvent>,
#[serde(rename = "accountablePerson")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub accountable_person: Vec<Person>,
#[serde(rename = "version")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub version: Vec<MusicReleaseVersionFieldEnum>,
#[serde(rename = "expires")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub expires: Vec<MusicReleaseExpiresFieldEnum>,
#[serde(rename = "awards")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub awards: Vec<String>,
#[serde(rename = "text")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub text: Vec<String>,
#[serde(rename = "producer")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub producer: Vec<MusicReleaseProducerFieldEnum>,
#[serde(rename = "thumbnailUrl")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub thumbnail_url: Vec<String>,
#[serde(rename = "copyrightHolder")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub copyright_holder: Vec<MusicReleaseCopyrightHolderFieldEnum>,
#[serde(rename = "wordCount")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub word_count: Vec<i32>,
#[serde(rename = "recordedAt")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub recorded_at: Vec<Event>,
#[serde(rename = "audience")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub audience: Vec<Audience>,
#[serde(rename = "spatial")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub spatial: Vec<Place>,
#[serde(rename = "interpretedAsClaim")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub interpreted_as_claim: Vec<Claim>,
#[serde(rename = "creditText")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub credit_text: Vec<String>,
#[serde(rename = "material")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub material: Vec<MusicReleaseMaterialFieldEnum>,
#[serde(rename = "translator")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub translator: Vec<MusicReleaseTranslatorFieldEnum>,
#[serde(rename = "character")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub character: Vec<Person>,
#[serde(rename = "funder")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub funder: Vec<MusicReleaseFunderFieldEnum>,
#[serde(rename = "encodings")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub encodings: Vec<MediaObject>,
#[serde(rename = "contributor")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub contributor: Vec<MusicReleaseContributorFieldEnum>,
#[serde(rename = "position")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub position: Vec<MusicReleasePositionFieldEnum>,
#[serde(rename = "conditionsOfAccess")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub conditions_of_access: Vec<String>,
#[serde(rename = "review")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub review: Vec<Review>,
#[serde(rename = "temporalCoverage")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub temporal_coverage: Vec<MusicReleaseTemporalCoverageFieldEnum>,
#[serde(rename = "mentions")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub mentions: Vec<Thing>,
#[serde(rename = "interactionStatistic")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub interaction_statistic: Vec<InteractionCounter>,
#[serde(rename = "schemaVersion")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub schema_version: Vec<MusicReleaseSchemaVersionFieldEnum>,
#[serde(rename = "acquireLicensePage")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub acquire_license_page: Vec<MusicReleaseAcquireLicensePageFieldEnum>,
#[serde(rename = "sponsor")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub sponsor: Vec<MusicReleaseSponsorFieldEnum>,
#[serde(rename = "publisher")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub publisher: Vec<MusicReleasePublisherFieldEnum>,
#[serde(rename = "assesses")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub assesses: Vec<MusicReleaseAssessesFieldEnum>,
#[serde(rename = "spatialCoverage")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub spatial_coverage: Vec<Place>,
#[serde(rename = "size")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub size: Vec<MusicReleaseSizeFieldEnum>,
#[serde(rename = "contentRating")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub content_rating: Vec<MusicReleaseContentRatingFieldEnum>,
#[serde(rename = "accessMode")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub access_mode: Vec<String>,
#[serde(rename = "creator")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub creator: Vec<MusicReleaseCreatorFieldEnum>,
#[serde(rename = "releasedEvent")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub released_event: Vec<PublicationEvent>,
#[serde(rename = "accessibilitySummary")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub accessibility_summary: Vec<String>,
#[serde(rename = "translationOfWork")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub translation_of_work: Vec<CreativeWork>,
#[serde(rename = "publisherImprint")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub publisher_imprint: Vec<Organization>,
#[serde(rename = "typicalAgeRange")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub typical_age_range: Vec<String>,
#[serde(rename = "comment")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub comment: Vec<Comment>,
#[serde(rename = "encoding")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub encoding: Vec<MediaObject>,
#[serde(rename = "discussionUrl")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub discussion_url: Vec<String>,
#[serde(rename = "timeRequired")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub time_required: Vec<Duration>,
#[serde(rename = "isAccessibleForFree")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_accessible_for_free: Vec<String>,
#[serde(rename = "audio")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub audio: Vec<MusicReleaseAudioFieldEnum>,
#[serde(rename = "correction")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub correction: Vec<MusicReleaseCorrectionFieldEnum>,
#[serde(rename = "author")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub author: Vec<MusicReleaseAuthorFieldEnum>,
#[serde(rename = "genre")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub genre: Vec<MusicReleaseGenreFieldEnum>,
#[serde(rename = "name")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub name: Vec<String>,
#[serde(rename = "mainEntityOfPage")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub main_entity_of_page: Vec<MusicReleaseMainEntityOfPageFieldEnum>,
#[serde(rename = "url")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub url: Vec<String>,
#[serde(rename = "disambiguatingDescription")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub disambiguating_description: Vec<String>,
#[serde(rename = "identifier")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub identifier: Vec<MusicReleaseIdentifierFieldEnum>,
#[serde(rename = "description")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub description: Vec<MusicReleaseDescriptionFieldEnum>,
#[serde(rename = "subjectOf")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub subject_of: Vec<MusicReleaseSubjectOfFieldEnum>,
#[serde(rename = "alternateName")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub alternate_name: Vec<String>,
#[serde(rename = "additionalType")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub additional_type: Vec<MusicReleaseAdditionalTypeFieldEnum>,
#[serde(rename = "potentialAction")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub potential_action: Vec<Action>,
#[serde(rename = "sameAs")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub same_as: Vec<String>,
#[serde(rename = "image")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub image: Vec<MusicReleaseImageFieldEnum>,
}