# Template du YAML de configuration du service Aeris (aeris)
# -----------------------------------------------------------------------------------------------
#
# Il est composé de 5 blocs, à savoir :
# - service    : la configuration du service lui-même, son titre, son id, ses caractéristiques...
# - infos      : la configuration du mash-up pour les informations sur le lieu de la météo
# - conditions : la configuration du mash-up pour les conditions temps réel
# - previsions : la configuration du mash-up pour les prévisions
# - erreurs    : la configuration du mash-up pour les erreurs fournies par le service
#
# Si un champ vaut la valeur par défaut il est possible de l'omettre.
# -----------------------------------------------------------------------------------------------

# Bloc service : caractéristiques du service
# ------------------------------------------
service:
  # -- Identification: saisir le nom complet du service
  nom: 'AerisWeather'
  # -- Version de la configuration du service
  version:
    numero: '2'
    date: '2023-11-18'
  # -- URL de base des requêtes et des icones (éventuellement)
  endpoint_requete: 'https://api.aerisapi.com/'
  endpoint_icone: ''
  lieu_formats: [ 'latitude_longitude', 'ville_pays', 'pws_id' ]
  # -- Activité: par défaut à true, donc à laisser en commentaire. A mettre à false si on veut déprécier le service
  actif: true
  # -- Liens vers les crédits et titre de la page (pour les affichages / modèles)
  #    Le logo, si il existe, est chargé automatiquement à partir du chemin /services/images/<id>.png
  credits:
    titre: 'Attribution Guide'
    lien: 'https://www.aerisweather.com/attribution/'
  # -- Liens vers les termes d'utilisation (pour la page de configuration)
  termes:
    titre: 'Application License Agreement'
    lien: 'https://www.aerisweather.com/support/docs/license/'
  # -- Liens la page d'enregistrement (pour la page de configuration)
  enregistrement:
    titre: 'Sign up'
    lien: 'https://account.aerisweather.com/auth/signup'
    # -- Taille de la clé d'enregistrement en général de 32 caractères (valeur par défaut)
    #    Pour indiquer qu'aucune clé n'est utile attribuer la valeur 0 explicitement à la taille
    taille_cle: 64
    # -- Taille du secret en général de 0 caractères car peu utilisé (valeur par défaut)
    #    Pour indiquer qu'aucun secret n'est utile attribuer la valeur 0 explicitement à la taille (la plupart des cas)
    taille_secret: 40
  # -- Liens vers les offres de service (pour la page de configuration et les rafraichissements)
  offres:
    titre: 'Pricing Plans'
    lien: 'https://signup.aerisweather.com/'
    # -- Indique si il existe une offre gratuite (défaut true).
    #gratuite: true
    # -- Les limites sont exprimées via les périodes year, month, day, hour, minute et second dans cet ordre.
    #    Seules les périodes utilisées sont à fournir.
    limites: { day: 5000, minute: 100 }
  # -- Liste des langues fournies par le service
  langues:
    # -- langues dont le code est identique à celui de SPIP: par défaut initialisé au singleton 'en' qui est aussi la
    #    valeur par défaut
    codes_spip: [ 'en' ]
    # -- langues dont le code est différent de celui de SPIP.
    #    Le champ est rempli par la liste des couples (code service, code spip)
    codes_non_spip: {  }
    # -- langage par défaut est 'en'.
    #defaut: 'en'
  # Configuration des jeux d'icones utilisables
  icones:
    origines: [ 'local' ]
    themes_api: [ ]
    transcodages:
      blizzard: { local: [ 'blizzard', 'blizzardn' ], weather: [ ], wmo: [ ] }
      blowingsnow: { local: [ 'blowingsnow', 'blowingsnown' ], weather: [ ], wmo: [ ] }
      clear: { local: [ 'clear', 'clearn' ], weather: [ ], wmo: [ ] }
      cloudy: { local: [ 'cloudy', 'cloudyn' ], weather: [ ], wmo: [ ] }
      cloudyw: { local: [ 'cloudyw', 'cloudywn' ], weather: [ ], wmo: [ ] }
      cold: { local: [ 'cold', 'coldn' ], weather: [ ], wmo: [ ] }
      drizzle: { local: [ 'drizzle', 'drizzlen' ], weather: [ ], wmo: [ ] }
      dust: { local: [ 'dust', 'dustn' ], weather: [ ], wmo: [ ] }
      fair: { local: [ 'fair', 'fairn' ], weather: [ ], wmo: [ ] }
      drizzlef: { local: [ 'drizzlef', 'fdrizzlen' ], weather: [ ], wmo: [ ] }
      flurries: { local: [ 'flurries', 'flurriesn' ], weather: [ ], wmo: [ ] }
      flurriesw: { local: [ 'flurriesw', 'flurrieswn' ], weather: [ ], wmo: [ ] }
      fog: { local: [ 'fog', 'fogn' ], weather: [ ], wmo: [ ] }
      freezingrain: { local: [ 'freezingrain', 'freezingrainn' ], weather: [ ], wmo: [ ] }
      hazy: { local: [ 'hazy', 'hazyn' ], weather: [ ], wmo: [ ] }
      hot: { local: [ 'hot', '' ], weather: [ ], wmo: [ ] }
      mcloudy: { local: [ 'mcloudy', 'mcloudyn' ], weather: [ ], wmo: [ ] }
      mcloudyr: { local: [ 'mcloudyr', 'mcloudyrn' ], weather: [ ], wmo: [ ] }
      mcloudyrw: { local: [ 'mcloudyrw', 'mcloudyrwn' ], weather: [ ], wmo: [ ] }
      mcloudys: { local: [ 'mcloudys', 'mcloudysn' ], weather: [ ], wmo: [ ] }
      mcloudysf: { local: [ 'mcloudysf', 'mcloudysfn' ], weather: [ ], wmo: [ ] }
      mcloudysfw: { local: [ 'mcloudysfw', 'mcloudysfwn' ], weather: [ ], wmo: [ ] }
      mcloudysw: { local: [ 'mcloudysw', 'mcloudyswn' ], weather: [ ], wmo: [ ] }
      mcloudyt: { local: [ 'mcloudyt', 'mcloudytn' ], weather: [ ], wmo: [ ] }
      mcloudytw: { local: [ 'mcloudytw', 'mcloudytwn' ], weather: [ ], wmo: [ ] }
      mcloudyw: { local: [ 'mcloudyw', 'mcloudywn' ], weather: [ ], wmo: [ ] }
      na: { local: [ 'na', 'na' ], weather: [ ], wmo: [ ] }
      pcloudy: { local: [ 'pcloudy', 'pcloudyn' ], weather: [ ], wmo: [ ] }
      pcloudyr: { local: [ 'pcloudyr', 'pcloudyrn' ], weather: [ ], wmo: [ ] }
      pcloudyrw: { local: [ 'pcloudyrw', 'pcloudyrwn' ], weather: [ ], wmo: [ ] }
      pcloudys: { local: [ 'pcloudys', 'pcloudysn' ], weather: [ ], wmo: [ ] }
      pcloudysf: { local: [ 'pcloudysf', 'pcloudysfn' ], weather: [ ], wmo: [ ] }
      pcloudysfw: { local: [ 'pcloudysfw', 'pcloudysfwn' ], weather: [ ], wmo: [ ] }
      pcloudysw: { local: [ 'pcloudysw', 'pcloudyswn' ], weather: [ ], wmo: [ ] }
      pcloudyt: { local: [ 'pcloudyt', 'pcloudytn' ], weather: [ ], wmo: [ ] }
      pcloudytw: { local: [ 'pcloudytw', 'pcloudytwn' ], weather: [ ], wmo: [ ] }
      pcloudyw: { local: [ 'pcloudyw', 'pcloudywn' ], weather: [ ], wmo: [ ] }
      rain: { local: [ 'rain', 'rainn' ], weather: [ ], wmo: [ ] }
      rainandsnow: { local: [ 'rainandsnow', 'rainandsnown' ], weather: [ ], wmo: [ ] }
      raintosnow: { local: [ 'raintosnow', 'raintosnown' ], weather: [ ], wmo: [ ] }
      rainw: { local: [ 'rainw', 'rainwn' ], weather: [ ], wmo: [ ] }
      showers: { local: [ 'showers', 'showersn' ], weather: [ ], wmo: [ ] }
      showersw: { local: [ 'showersw', 'showerswn' ], weather: [ ], wmo: [ ] }
      sleet: { local: [ 'sleet', 'sleetn' ], weather: [ ], wmo: [ ] }
      sleetsnow: { local: [ 'sleetsnow', 'sleetsnown' ], weather: [ ], wmo: [ ] }
      smoke: { local: [ 'smoke', 'smoken' ], weather: [ ], wmo: [ ] }
      snow: { local: [ 'snow', 'snown' ], weather: [ ], wmo: [ ] }
      snoww: { local: [ 'snoww', 'snowwn' ], weather: [ ], wmo: [ ] }
      snowshowers: { local: [ 'snowshowers', 'snowshowersn' ], weather: [ ], wmo: [ ] }
      snowshowersw: { local: [ 'snowshowersw', 'snowshowerswn' ], weather: [ ], wmo: [ ] }
      snowtorain: { local: [ 'snowtorain', 'snowtorainn' ], weather: [ ], wmo: [ ] }
      sunny: { local: [ 'sunny', 'sunnyn' ], weather: [ ], wmo: [ ] }
      sunnyw: { local: [ 'sunnyw', 'sunnywn' ], weather: [ ], wmo: [ ] }
      tstorm: { local: [ 'tstorm', 'tstormn' ], weather: [ ], wmo: [ ] }
      tstorms: { local: [ 'tstorms', 'tstormsn' ], weather: [ ], wmo: [ ] }
      tstormsw: { local: [ 'tstormsw', 'tstormswn' ], weather: [ ], wmo: [ ] }
      wind: { local: [ 'wind', 'windn' ], weather: [ ], wmo: [ ] }
      wintrymix: { local: [ 'wintrymix', 'wintrymixn' ], weather: [ ], wmo: [ ] }
  # -- Valeurs par défauts des paramètres modifiables du service (page de configuration)
  #    En général, seuls les champs theme et theme_local sont à remplir, les autres sont initialisés avec le défaut
  defauts:
    # -- Clé d'enregistrement fournie par le service. A remplir avec la valeur dans le formulaire.
    #inscription: ''
    # -- Secret d'authentification parfois nécessaire quand la clé est de type user id. A remplir avec la valeur dans le formulaire.
    #secret: ''
    # -- Système métrique par défaut
    #unite: 'm'
    # -- Mode d'affichage des icones méteo. On privilégie par défaut les icones du service si il existent
    #condition: '<id>'
    theme: ''
    theme_local: 'wxicons_2x'
    # -- Thème Sticker de weather qui est toujours disponible dans Rainette
    #theme_weather: 'sticker'

# Bloc infos : mash-up des informations géographiques
# ---------------------------------------------------
infos:
  # -- Période de rafraichissement: par défaut à un mois, inutile de le modifier pour chaque service
  #periode_maj: 2592000
  # -- Format des réponse: par défaut le JSON, inutile de le modifier pour chaque service sauf si pas supporté
  #format_flux: 'json'
  # -- Index de base dans le tableau de réponse: peut-être une liste d'index éventuellement vide
  cle_base: [ 'response', 0 ]
  donnees:
    ville:
      cle: [ 'place', 'name' ]
    pays:
      cle: [ 'place', 'countryFull' ]
    pays_iso2:
      cle: [ 'place', 'country' ]
    region:
      cle: [ ]
    longitude:
      cle: [ 'loc', 'long' ]
    latitude:
      cle: [ 'loc', 'lat' ]

# Bloc conditions : mash-up des conditions temps réel
# ---------------------------------------------------
conditions:
  # -- Période de rafraichissement: par défaut à 2 heures, inutile de le modifier pour chaque service
  #periode_maj: 7200
  # -- Format des réponse: par défaut le JSON, inutile de le modifier pour chaque service sauf si pas supporté
  #format_flux: 'json'
  # -- Index de base dans le tableau de réponse: peut-être une liste d'index éventuellement vide
  cle_base: [ 'response', 0, 'periods', 0 ]
  donnees:
    derniere_maj:
      cle: [ 'timestamp' ]
    station:
      cle: [ ]
    temperature_reelle:
      cle: [ 'temp' ]
      suffixe_unite: { id_cle: 0, m: 'C', s: 'F' }
    temperature_ressentie:
      cle: [ 'feelslike' ]
      suffixe_unite: { id_cle: 0, m: 'C', s: 'F' }
    vitesse_vent:
      cle: [ 'windSpeed' ]
      suffixe_unite: { id_cle: 0, m: 'KPH', s: 'MPH' }
    rafale_vent:
      cle: [ 'windGust' ]
      suffixe_unite: { id_cle: 0, m: 'KPH', s: 'MPH' }
    angle_vent:
      cle: [ 'windDirDEG' ]
    direction_vent:
      cle: [ 'windDir' ]
    precipitation:
      cle: [ 'precip' ]
      suffixe_unite: { id_cle: 0, m: 'MM', s: 'IN' }
    humidite:
      cle: [ 'humidity' ]
    point_rosee:
      cle: [ 'dewpoint' ]
      suffixe_unite: { id_cle: 0, m: 'C', s: 'F' }
    pression:
      cle: [ 'pressure' ]
      suffixe_unite: { id_cle: 0, m: 'MB', s: 'IN' }
    tendance_pression:
      cle: [ ]
    visibilite:
      cle: [ 'visibility' ]
      suffixe_unite: { id_cle: 0, m: 'KM', s: 'MI' }
    nebulosite:
      cle: [ 'sky' ]
    indice_uv:
      cle: [ 'uvi' ]
    risque_uv:
      cle: [ ]
      calcul: true
    code_meteo:
      cle: [ 'weatherPrimaryCoded' ]
    icon_meteo:
      cle: [ 'icon' ]
    desc_meteo:
      cle: [ 'weatherPrimary' ]
    trad_meteo:
      cle: [ ]
    jour_meteo:
      cle: [ 'isDay' ]
    code:
      cle: [ ]
      calcul: true
    icone:
      cle: [ ]
      calcul: true
    resume:
      cle: [ ]
      calcul: true
    periode:
      cle: [ ]
      calcul: true

# Bloc previsions : mash-up des prévisions
# ----------------------------------------
previsions:
  # -- Période de rafraichissement: par défaut à 4 heures, inutile de le modifier pour chaque service
  #periode_maj: 14400
  # -- Format des réponse: par défaut le JSON, inutile de le modifier pour chaque service sauf si pas supporté
  #format_flux: 'json'
  # -- Périodicités disponibles pour les prévisions: peut prendre les valeurs 1, 3, 6, 12, 24. Pour chacune
  #    il faut préciser le nombre de jours de prévisions miximum disponibles
  periodicites:
    24: { max_jours: 14 }
    12: { max_jours: 7 }
  # -- Périodicité par défaut à 24h. A conserver ainsi sauf si le service ne propose par cette périodicité
  #periodicite_defaut: 24
  # -- Index de base dans le tableau de réponse: peut-être une liste d'index éventuellement vide
  cle_base: [ 'response', 0, 'periods' ]
  # -- Index des données heure si le service possède une structure par heure
  cle_heure: [ 'hourly' ]
  structure_heure: true
  donnees:
    date:
      cle: [ 'dateTimeISO' ]
    heure:
      cle: [ 'timestamp' ]
    lever_soleil:
      cle: [ 'sunrise' ]
    coucher_soleil:
      cle: [ 'sunset' ]
    temperature:
      cle: [ 'avgTemp' ]
      suffixe_unite: { id_cle: 0, m: 'C', s: 'F' }
    temperature_max:
      cle: [ 'maxTemp' ]
      suffixe_unite: { id_cle: 0, m: 'C', s: 'F' }
    temperature_min:
      cle: [ 'minTemp' ]
      suffixe_unite: { id_cle: 0, m: 'C', s: 'F' }
    vitesse_vent:
      cle: [ 'windSpeed' ]
      suffixe_unite: { id_cle: 0, m: 'KPH', s: 'MPH' }
    rafale_vent:
      cle: [ 'windGust' ]
      suffixe_unite: { id_cle: 0, m: 'KPH', s: 'MPH' }
    angle_vent:
      cle: [ 'windDirDEG' ]
    direction_vent:
      cle: [ 'windDir' ]
    risque_precipitation:
      cle: [ 'pop' ]
    precipitation:
      cle: [ 'precip' ]
      suffixe_unite: { id_cle: 0, m: 'MM', s: 'IN' }
    humidite:
      cle: [ 'humidity' ]
    point_rosee:
      cle: [ 'dewpoint' ]
      suffixe_unite: { id_cle: 0, m: 'C', s: 'F' }
    pression:
      cle: [ 'pressure' ]
      suffixe_unite: { id_cle: 0, m: 'MM', s: 'IN' }
    visibilite:
      cle: [ 'visibility' ]
      suffixe_unite: { id_cle: 0, m: 'KM', s: 'MI' }
    nebulosite:
      cle: [ 'sky' ]
    indice_uv:
      cle: [ 'uvi' ]
    risque_uv:
      cle: [ ]
      calcul: true
    code_meteo:
      cle: [ 'weatherPrimaryCoded' ]
    icon_meteo:
      cle: [ 'icon' ]
    desc_meteo:
      cle: [ 'weatherPrimary' ]
    trad_meteo:
      cle: [ ]
    jour_meteo:
      cle: [ 'isDay' ]
    code:
      cle: [ ]
      calcul: true
    icone:
      cle: [ ]
      calcul: true
    resume:
      cle: [ ]
      calcul: true
    periode:
      cle: [ ]
      calcul: true

# Bloc erreurs : mash-up des erreurs remontées par le service
# -----------------------------------------------------------
erreurs:
  cle_base: [ 'error' ]
  donnees:
    code:
      cle: [ 'code' ]
    message:
      cle: [ 'description' ]

