interface WaffleItem {
  id: ID
  name: String
  active: Boolean
  note: String
}

type WaffleFlag implements WaffleItem {
  id: ID
  name: String
  active: Boolean
  note: String
}

type WaffleSwitch implements WaffleItem {
  id: ID
  name: String
  active: Boolean
  note: String
}

type WaffleSample implements WaffleItem {
  id: ID
  name: String
  active: Boolean
  note: String
}

type Waffle {
  flags: [WaffleFlag]
  switches: [WaffleSwitch]
  samples: [WaffleSample]
  all: [WaffleItem]
  "Retrieve a flag"
  flag(name: String): WaffleFlag
  "Retrieve a switch"
  switch(name: String): WaffleSwitch
  "Retrieve a sample"
  sample(name: String): WaffleSample
  "The default flag value as specified in the settings"
  flagDefault: Boolean
  "The default switch value as specified in the settings"
  switchDefault: Boolean
  "The default sample value as specified in the settings"
  sampleDefault: Boolean
}

extend type Query {
  waffle: Waffle
}
