Custom `input_type` for Custom Structs

16 and 17 are integer keys.

changeset code for outerstruct :

%MyOuterStruct{ key: :value,
inner_key: 
%{16=> %InnerStruct{key2: :value2}, 
  17=> %InnerStruct{key2: :value3} 
}

we have typed structs and not using ecto schemas.
So, changesets for OuterStruct is written in a way that it invokes changeset for nested structs.