package Ġexamples . external References . models Ċ Ċ import Ġcom . fasterxml . jackson . annotation . Json Any Getter Ċ import Ġcom . fasterxml . jackson . annotation . Json Any Setter Ċ import Ġcom . fasterxml . jackson . annotation . JsonIgnore Ċ import Ġcom . fasterxml . jackson . annotation . JsonProperty Ċ import Ġcom . fasterxml . jackson . annotation . Json Sub Types Ċ import Ġcom . fasterxml . jackson . annotation . Json TypeInfo Ċ import Ġcom . fasterxml . jackson . annotation . JsonValue Ċ import Ġjavax . validation . Valid Ċ import Ġjavax . validation . constraints . NotNull Ċ import Ġkotlin . String Ċ import Ġkotlin . collections . List Ċ import Ġkotlin . collections . Map Ċ import Ġkotlin . collections . Mutable Map Ċ Ċ data Ġclass ĠCont aining External Reference ( ĊĠĠĠ Ġ@ param : JsonProperty (" some - external - reference ") ĊĠĠĠ Ġ@ get : JsonProperty (" some - external - reference ") ĊĠĠĠ Ġ@ get : Valid ĊĠĠĠ Ġval Ġsome External Reference : ĠExternal Object ? Ġ= Ġnull Ċ ) Ċ Ċ data Ġclass ĠExternal Object ( ĊĠĠĠ Ġ@ param : JsonProperty (" another ") ĊĠĠĠ Ġ@ get : JsonProperty (" another ") ĊĠĠĠ Ġ@ get : Valid ĊĠĠĠ Ġval Ġanother : ĠExternal Object Two ? Ġ= Ġnull , ĊĠĠĠ Ġ@ param : JsonProperty (" one _ of ") ĊĠĠĠ Ġ@ get : JsonProperty (" one _ of ") ĊĠĠĠ Ġ@ get : Valid ĊĠĠĠ Ġval Ġone Of : ĠParent OneOf ? Ġ= Ġnull Ċ ) Ċ Ċ enum Ġclass ĠExternal Object Three Enum ( ĊĠĠĠ Ġ@ JsonValue ĊĠĠĠ Ġval Ġvalue : ĠString Ċ ) Ġ{ ĊĠĠĠ ĠONE (" one "), ĊĊĠĠĠ ĠTWO (" two "), ĊĊĠĠĠ ĠTHREE (" three "); ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmapping : ĠMap < String , ĠExternal Object Three Enum > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues (). associate By ( External Object Three Enum :: value ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom Value ( value : ĠString ): ĠExternal Object Three Enum ? Ġ= Ġmapping [ value ] ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠExternal Object Three ( ĊĠĠĠ Ġ@ param : JsonProperty (" enum ") ĊĠĠĠ Ġ@ get : JsonProperty (" enum ") ĊĠĠĠ Ġ@ get : NotNull ĊĠĠĠ Ġval Ġenum : ĠExternal Object Three Enum , ĊĠĠĠ Ġ@ param : JsonProperty (" description ") ĊĠĠĠ Ġ@ get : JsonProperty (" description ") ĊĠĠĠ Ġ@ get : NotNull ĊĠĠĠ Ġval Ġdescription : ĠString Ċ ) Ċ Ċ data Ġclass ĠExternal Object Two ( ĊĠĠĠ Ġ@ param : JsonProperty (" list - others ") ĊĠĠĠ Ġ@ get : JsonProperty (" list - others ") ĊĠĠĠ Ġ@ get : Valid ĊĠĠĠ Ġval Ġlist Others : ĠList < External Object Three >? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġ@ get : JsonIgnore ĊĠĠĠ Ġval Ġproperties : ĠMutable Map < String , ĠMap < String , ĠExternal Object Four >> Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġ@ Json Any Getter ĊĠĠĠ Ġfun Ġget (): ĠMap < String , ĠMap < String , ĠExternal Object Four >> Ġ= Ġproperties ĊĊĠĠĠ Ġ@ Json Any Setter ĊĠĠĠ Ġfun Ġset ( name : ĠString , Ġvalue : ĠMap < String , ĠExternal Object Four >) Ġ{ ĊĠĠĠĠĠĠĠ Ġproperties [ name ] Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠExternal Object Four ( ĊĠĠĠ Ġ@ param : JsonProperty (" blah ") ĊĠĠĠ Ġ@ get : JsonProperty (" blah ") ĊĠĠĠ Ġval Ġbl ah : ĠString ? Ġ= Ġnull Ċ ) Ċ Ċ @ Json TypeInfo ( ĊĠĠĠ Ġuse Ġ= ĠJson TypeInfo . Id . NAME , ĊĠĠĠ Ġinclude Ġ= ĠJson TypeInfo . As . EXIST ING _ PROPERTY , ĊĠĠĠ Ġproperty Ġ= Ġ" dis criminator ", ĊĠĠĠ Ġvisible Ġ= Ġtrue Ċ ) Ċ @ Json Sub Types ( ĊĠĠĠ ĠJson Sub Types . Type ( value Ġ= ĠOne Of One :: class , Ġname Ġ= Ġ" OneOf One "), ĊĠĠĠ ĠJson Sub Types . Type ( ĊĠĠĠĠĠĠĠ Ġvalue Ġ= ĊĠĠĠĠĠĠĠ ĠOne Of Two :: class , ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" OneOf Two " ĊĠĠĠ Ġ) Ċ ) Ċ sealed Ġclass ĠParent OneOf () Ġ{ ĊĠĠĠ Ġabstract Ġval Ġdiscriminator : ĠString Ċ } Ċ Ċ data Ġclass ĠOne Of One ( ĊĠĠĠ Ġ@ param : JsonProperty (" one Of One ") ĊĠĠĠ Ġ@ get : JsonProperty (" one Of One ") ĊĠĠĠ Ġval Ġone Of One : ĠString ? Ġ= Ġnull Ċ ) Ġ: ĠParent OneOf () Ġ{ ĊĠĠĠ Ġ@ get : JsonProperty (" dis criminator ") ĊĠĠĠ Ġ@ get : NotNull ĊĠĠĠ Ġoverride Ġval Ġdiscriminator : ĠString Ġ= Ġ" OneOf One " Ċ } Ċ Ċ data Ġclass ĠOne Of Two ( ĊĠĠĠ Ġ@ param : JsonProperty (" one Of Two ") ĊĠĠĠ Ġ@ get : JsonProperty (" one Of Two ") ĊĠĠĠ Ġval Ġone Of Two : ĠString ? Ġ= Ġnull Ċ ) Ġ: ĠParent OneOf () Ġ{ ĊĠĠĠ Ġ@ get : JsonProperty (" dis criminator ") ĊĠĠĠ Ġ@ get : NotNull ĊĠĠĠ Ġoverride Ġval Ġdiscriminator : ĠString Ġ= Ġ" OneOf Two " Ċ } Ċ