base: str(required=False)
doc: str(required=False)
keywords: str(required=False)
module: str(required=False)
realm: str(required=False)
references: str(required=False)
indicators: map(include('indicator'), key=regex(r'^[-\w]+$'))
variables: map(include('variable'), key=regex(r'^[\w]+$'), required=False)
---
indicator:
  abstract: str(required=False)
  allowed_periods: list(enum('A', 'Y', 'Q', 'M', 'W'), required=False)
  src_freq: any(str(), list(str()), required=False)
  base: str(required=False)
  compute: str(required=False)
  input: map(str(), key=str(), required=False)
  keywords: str(required=False)
  measure: str(required=False)
  missing: str(required=False)
  missing_options: map(key=str(), required=False)
  notes: str(required=False)
  cf_attrs: any(list(include('cf_attrs')), include('cf_attrs'), required=False)
  parameters: map(str(), num(), bool(), null(), include('parameter'), include('indexer'), key=str(), required=False)
  realm: str(required=False)
  references: str(required=False)
  title: str(required=False)
  context: str(required=False)

cf_attrs: map(str(), key=str(), required=False)

parameter:
  description: str(required=False)
  default: any(str(), num(), bool(), null(), include('indexer'), required=False)
  choices: list(str(), required=False)
  units: str(required=False)
  kind: int(required=False)

indexer:
  drop: bool(required=False)
  month: any(int(), list(int()), required=False)
  season: any(str(), list(str()), required=False)
  doy_bounds: list(int(), required=False, maxItems=2)
  date_bounds: list(str(), required=False, maxItems=2)
  include_bounds: any(bool(), list(bool(), bool()), required=False, maxItems=2)

variable:
  canonical_units: str(required=True)
  cell_methods: str(required=False)
  description: str(required=True)
  standard_name: str(required=False)
  data_flags: list(str(), any(), required=False)
