use crate::*;
use serde_with::{serde_as, OneOrMany};
pub type HyperTocEntryDateModifiedFieldEnum = String;
pub type HyperTocEntryEncodingFormatFieldEnum = String;
pub type HyperTocEntryEditEIDRFieldEnum = String;
pub type HyperTocEntryDatePublishedFieldEnum = String;
pub type HyperTocEntryTemporalFieldEnum = String;
pub type HyperTocEntryDateCreatedFieldEnum = String;
pub type HyperTocEntryFileFormatFieldEnum = String;
pub type HyperTocEntryExpiresFieldEnum = String;
pub type HyperTocEntryTemporalCoverageFieldEnum = String;
pub type HyperTocEntrySchemaVersionFieldEnum = String;
pub type HyperTocEntryGenreFieldEnum = String;
pub type HyperTocEntryAdditionalTypeFieldEnum = String;
#[serde_as]
#[derive(Debug, serde::Deserialize)]
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
pub struct HyperTocEntry {
#[serde(rename = "@context")]
pub context: String,
#[serde(rename = "tocContinuation")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub toc_continuation: Vec<HyperTocEntry>,
#[serde(rename = "utterances")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub utterances: Vec<String>,
#[serde(rename = "associatedMedia")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub associated_media: Vec<MediaObject>,
#[serde(rename = "provider")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub provider: Vec<HyperTocEntryProviderFieldEnum>,
#[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<HyperTocEntryCitationFieldEnum>,
#[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<HyperTocEntrySdPublisherFieldEnum>,
#[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<HyperTocEntryPublishingPrinciplesFieldEnum>,
#[serde(rename = "inLanguage")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub in_language: Vec<HyperTocEntryInLanguageFieldEnum>,
#[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<HyperTocEntryDateModifiedFieldEnum>,
#[serde(rename = "usageInfo")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub usage_info: Vec<HyperTocEntryUsageInfoFieldEnum>,
#[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<HyperTocEntryArchivedAtFieldEnum>,
#[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<HyperTocEntrySdLicenseFieldEnum>,
#[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<HyperTocEntryLicenseFieldEnum>,
#[serde(rename = "maintainer")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub maintainer: Vec<HyperTocEntryMaintainerFieldEnum>,
#[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<HyperTocEntryPatternFieldEnum>,
#[serde(rename = "offers")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub offers: Vec<HyperTocEntryOffersFieldEnum>,
#[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<HyperTocEntryKeywordsFieldEnum>,
#[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<HyperTocEntryEncodingFormatFieldEnum>,
#[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<HyperTocEntryEditEIDRFieldEnum>,
#[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<HyperTocEntryDatePublishedFieldEnum>,
#[serde(rename = "educationalLevel")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub educational_level: Vec<HyperTocEntryEducationalLevelFieldEnum>,
#[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<HyperTocEntryMaterialExtentFieldEnum>,
#[serde(rename = "video")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub video: Vec<HyperTocEntryVideoFieldEnum>,
#[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<HyperTocEntryLearningResourceTypeFieldEnum>,
#[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<HyperTocEntryTemporalFieldEnum>,
#[serde(rename = "isBasedOnUrl")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_based_on_url: Vec<HyperTocEntryIsBasedOnUrlFieldEnum>,
#[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<HyperTocEntryDateCreatedFieldEnum>,
#[serde(rename = "fileFormat")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub file_format: Vec<HyperTocEntryFileFormatFieldEnum>,
#[serde(rename = "teaches")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub teaches: Vec<HyperTocEntryTeachesFieldEnum>,
#[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<HyperTocEntryIsPartOfFieldEnum>,
#[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<HyperTocEntryIsBasedOnFieldEnum>,
#[serde(rename = "creativeWorkStatus")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub creative_work_status: Vec<HyperTocEntryCreativeWorkStatusFieldEnum>,
#[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<HyperTocEntryEducationalUseFieldEnum>,
#[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<HyperTocEntryVersionFieldEnum>,
#[serde(rename = "expires")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub expires: Vec<HyperTocEntryExpiresFieldEnum>,
#[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<HyperTocEntryProducerFieldEnum>,
#[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<HyperTocEntryCopyrightHolderFieldEnum>,
#[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<HyperTocEntryMaterialFieldEnum>,
#[serde(rename = "translator")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub translator: Vec<HyperTocEntryTranslatorFieldEnum>,
#[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<HyperTocEntryFunderFieldEnum>,
#[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<HyperTocEntryContributorFieldEnum>,
#[serde(rename = "position")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub position: Vec<HyperTocEntryPositionFieldEnum>,
#[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<HyperTocEntryTemporalCoverageFieldEnum>,
#[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<HyperTocEntrySchemaVersionFieldEnum>,
#[serde(rename = "acquireLicensePage")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub acquire_license_page: Vec<HyperTocEntryAcquireLicensePageFieldEnum>,
#[serde(rename = "sponsor")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub sponsor: Vec<HyperTocEntrySponsorFieldEnum>,
#[serde(rename = "publisher")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub publisher: Vec<HyperTocEntryPublisherFieldEnum>,
#[serde(rename = "assesses")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub assesses: Vec<HyperTocEntryAssessesFieldEnum>,
#[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<HyperTocEntrySizeFieldEnum>,
#[serde(rename = "contentRating")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub content_rating: Vec<HyperTocEntryContentRatingFieldEnum>,
#[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<HyperTocEntryCreatorFieldEnum>,
#[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<HyperTocEntryAudioFieldEnum>,
#[serde(rename = "correction")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub correction: Vec<HyperTocEntryCorrectionFieldEnum>,
#[serde(rename = "author")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub author: Vec<HyperTocEntryAuthorFieldEnum>,
#[serde(rename = "genre")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub genre: Vec<HyperTocEntryGenreFieldEnum>,
#[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<HyperTocEntryMainEntityOfPageFieldEnum>,
#[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<HyperTocEntryIdentifierFieldEnum>,
#[serde(rename = "description")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub description: Vec<HyperTocEntryDescriptionFieldEnum>,
#[serde(rename = "subjectOf")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub subject_of: Vec<HyperTocEntrySubjectOfFieldEnum>,
#[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<HyperTocEntryAdditionalTypeFieldEnum>,
#[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<HyperTocEntryImageFieldEnum>,
}