/* tslint:disable */
/**
 * This file was automatically generated by json-schema-to-typescript.
 * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
 * and run json-schema-to-typescript to regenerate this file.
 */

export interface GetCapabilitiesResponse {
  title: string;
  layers: Layer[];
  groups: LayerGroup[];
}
export interface Layer {
  name: string;
  title: string;
  abstract?: string;
  /**
   * Path of the node the layer is attached to
   */
  path?: string[];
  /**
   * Name of the group this layer is part of
   */
  groupName?: string;
  /**
   * Title of the group this layer is part of
   */
  groupTitle?: string;
  keywordList?: Keyword[];
  externalForecastTime?: string;
  /**
   * Task run id of the forecast
   */
  taskRunId?: string;
  ensembles?: Ensemble[];
  timesDefault?: string;
  times?: string[];
  /**
   * Set to true if this layer has only missing values. Null in case it is unknown (from archive).
   */
  completelyMissing?: boolean | null;
  /**
   * First time step from the time array that has a value. Null in case it is unknown (from archive).
   */
  firstValueTime?: string | null;
  /**
   * Last time step from the times array that has a value. Null in case it is unknown (from archive).
   */
  lastValueTime?: string | null;
  /**
   * Set to true if all data layers are of type grid
   */
  onlyGrids?: boolean;
  elevation?: {
    units?: string;
    unitSymbol?: string;
    lowerValue?: number;
    upperValue?: number;
    tickInterval?: number;
    irregularTicks?: number[];
  };
  boundingBox?: BoundingBox;
  styles?: Style[];
  /**
   * Set to true if a a geotiff image is supported for this layer with uv information. Default is valse
   */
  uv?: boolean;
  animatedVectors?: {
    numberOfParticles?: number;
    particleSize?: number;
    fadeAmount?: number;
    particleColor?: string;
    speedFactor?: number;
    speedExponent?: number;
    coloredParticles?: boolean;
    maximumParticleAge?: number;
    growthRate?: number;
    particleType?: "simple" | "wave-crest";
  };
  /**
   * workflow with its properties.
   */
  workflow?: {
    workflowId?: string;
    properties?: WorkflowProperties[];
  };
}
export interface Keyword {
  parameterId?: string;
  locationId?: string;
  moduleInstanceId?: string;
  timeSeriesType?: "EXTERNAL_HISTORICAL" | "EXTERNAL_FORECASTING" | "SIMULATED_HISTORICAL" | "SIMULATED_FORECASTING";
  ensembleId?: string;
  ensembleMemberId?: string;
  forecastTime?: string;
}
export interface Ensemble {
  ensembleId: string;
  ensembleMemberIds: string[];
}
/**
 * Bounding box according to CRS EPSG:3857 Web Mercator format
 */
export interface BoundingBox {
  crs: "EPSG:3857";
  minx: string;
  maxy: string;
  maxx: string;
  miny: string;
}
export interface Style {
  name?: string;
  title: string;
}
export interface WorkflowProperties {
  type: "string" | "float" | "bool" | "double" | "int" | "dateTime";
  key: string;
  value?: string;
  date?: string;
  time?: string;
}
export interface LayerGroup {
  name: string;
  title: string;
  /**
   * Path of the node
   */
  path: string[];
  /**
   * Name of the parent group the group is part of
   */
  groupName?: string;
  /**
   * Title of the parent group the group is part of
   */
  groupTitle?: string;
}
