# Default types

param:      Param;
step:       Step;
date:       Date;
hdate:      Date;
refdate:    Date;
latitude:   Double;
longitude:  Double;
levelist:   Double;
grid:       Grid;
expver:     Expver;

time:       Time;
fcmonth:    Integer;

number:     Integer;
frequency:  Integer;
direction:  Integer;
channel:    Integer;

instrument: Integer;
ident:      Integer;

diagnostic: Integer;
iteration:  Integer;
system:     Integer;
method:     Integer;

# this schema looks odd because we need to ensure the 3rd level key is too large to fit in 32 bytes
[ class, domain?
       [ type
               [ step, levelist, param, stream, expver, date, time, levtype ]]
]