module FamilySearch module Gedcomx class ExtensibleData < SuperDash include SuperCoercion property :id end class Link < SuperDash property :hreflang property :template property :title property :allow property :accept property :rel property :type property :href end class HypermediaEnabledData < ExtensibleData property :links coerce_key :links, {'key' => Link} end class ResourceReference < SuperDash property :resourceId property :resource end class Address < ExtensibleData property :city property :country property :postalCode property :stateOrProvince property :street property :street2 property :street3 property :value end class OnlineAccount < ExtensibleData property :accountName property :serviceHomepage coerce_key :serviceHomepage, [ResourceReference] end class Identifier < SuperDash property :type property :value end class TextValue < SuperDash property :lang property :value end class Agent < HypermediaEnabledData property :accounts property :addresses property :emails property :homepage property :identifiers property :names property :openid property :phones coerce_key :accounts, [OnlineAccount] coerce_key :addresses, [Address] coerce_key :emails, [ResourceReference] coerce_key :homepage, [ResourceReference] coerce_key :identifiers, [Identifier] coerce_key :names, [TextValue] coerce_key :openid, ResourceReference coerce_key :phones, [ResourceReference] end class Attribution < ExtensibleData property :contributor property :modified property :changeMessage coerce_key :contributor, ResourceReference end class ChangeInfo < SuperDash property :objectModifier property :operation property :reason property :parent property :objectType end class Qualifier < SuperDash property :value end class SourceReference < HypermediaEnabledData property :description property :resource property :attribution property :qualifiers coerce_key :attribution, Attribution coerce_key :qualifiers, [Qualifier] end class Note < HypermediaEnabledData property :lang property :subject property :text property :attribution coerce_key :attribution, Attribution end class Conclusion < HypermediaEnabledData property :confidence property :lang property :attribution property :sources property :analysis property :notes coerce_key :attribution, Attribution coerce_key :sources, [SourceReference] coerce_key :analysis, [ResourceReference] coerce_key :notes, [Note] end class EvidenceReference < HypermediaEnabledData property :resourceId property :resource property :analysis property :attribution coerce_key :analysis, ResourceReference coerce_key :attribution, Attribution end class PlaceReference < ExtensibleData property :description property :field property :original coerce_key :field, EvidenceReference # Not part of the GedcomX spec, but used for convenience. property :normalized end class Date < ExtensibleData property :original property :formal property :normalized property :field coerce_key :normalized, [TextValue] coerce_key :field, EvidenceReference end class Fact < Conclusion property :type property :date property :place property :value property :qualifiers property :field coerce_key :date, FamilySearch::Gedcomx::Date coerce_key :place, PlaceReference coerce_key :qualifiers, [Qualifier] coerce_key :field, EvidenceReference end class ChildAndParentsRelationship < Conclusion property :father property :mother property :child property :fatherFacts property :motherFacts coerce_key :father, ResourceReference coerce_key :mother, ResourceReference coerce_key :child, ResourceReference coerce_key :fatherFacts, [Fact] coerce_key :motherFacts, [Fact] end class CitationField