Concept

Méthode PUT permettant d'éditer une vue météo, à l'instar du mode édition JSON de l'Interface de Visualisation ( voir la page Édition JSON - Météo ).

Les paramètres

Le paramètre ID reçu dans l'URL identifie la vue météo à modifier.

Le corps de la requête

Le corps de la requête doit contenir le nouveau contenu de la vue météo ( voir la page JSON d'exemple pour commencer - Édition JSON - Météo ).

La requête réécrit toute la vue. Il faut envoyer le JSON avec tous les widgets voulus.

Réponse

Codes de retour

Codes de retourExplications
200

OK

400

Le JSON est invalide ou contient des erreurs. 

401

L'accès nécessite une authentification ou un Token valide.

403

Authentification de l'utilisateur OK, mais droits non suffisants.

404

La vue météo n'existe pas.

500

L'appel est valide, mais un problème d'exécution est rencontré.

Retour du code 200

Exemple de commande curl avec le contenu du JSON de la vue dans un fichier "weather_view.json"

curl -s -S -U 'username:password' -X PUT \
-H 'Content-Type: application/json' -d '@-' \
"http://webui:7767/external-api/service-weather/v1/update/WEATHER_UUID" < ./weather_view.json 

L'option -d '@-' demande à curl de lire le corps de la requête dans l'entrée standard, permettant d'y injecter le contenu du fichier "weather_view.json". 


Exemple de sortie attendue :

{
  "critical": [],
  "errors": [],
  "warnings": [],
  "output": {
    "view_info": {
      "name": "Bordeaux",
      "state": "draft",
      "type": "service_weather",
      "weather_uuid": "ab512c70e84a4c7a9b0e23b46eec5355",
      "weather_version": 2,
      "weather_format_version": 5,
      "weather_shared_group": "service_weather",
      "weather_creation_time": 1787666586.1508853
    },
    "view_json": {
       ...
    }
  }
}

Dans view_json se trouve le contenu de la vue météo sauvegardée. 

S'il y a eu une erreur de validation ( les champs errors et critical contiennent des messages ), le JSON fournit n'a pas été sauvegardé et la route retourne le contenue de la vue actuelle. 

Messages de validation

Les messages d'erreurs et d'attention liées à la vue seront dans les champs criticalerrors et warnings respectivement ( voir la page Gestion des problèmes de configuration - Édition - Météo ).

Exemple avec un widget météo non configuré :

{
  "critical": [],
  "errors": [],
  "warnings": [
    {
      "text": "La valeur pour la clé [ item_type ] est obligatoire. Les valeurs possibles sont [ host, cluster ]",
      "property": "grids.0.grid_elements.2.content.item",
      "fields_with_errors": [
        "item_type"
      ]
    },
    {
      "text": "Au moins une des deux clés suivantes doit être renseignée : [ item_uuid ] ou [ item_name ]",
      "property": "grids.0.grid_elements.2.content.item",
      "fields_with_errors": [
        "item_uuid",
        "item_name"
      ]
    }
  ],
  "output": {
    "view_info": {
      "name": "Bordeaux",
      "state": "draft",
      "type": "service_weather",
      "weather_uuid": "ab512c70e84a4c7a9b0e23b46eec5355",
      "weather_version": 2,
      "weather_format_version": 5,
      "weather_shared_group": "service_weather",
      "weather_creation_time": 1787666586.1508853
    },
    "view_json": {
       ...
    }
  }
}

Le champ property permet de savoir à quel endroit dans le JSON se trouve l'erreur afin de la corriger. 

Retour du code 400

  • Mêmes erreurs que dans l'interface ( dans la langue de l'interface )
  • Même comportement que l'interface : On peut sauvegarder la vue si l'interface l'aurait autorisé.
  • Code d'erreur HTTP cohérent

Paramètres POST incorrects

Paramètre inconnu

Messages d'erreurs des filtres 

Retour du code 404

curl -s -S -U 'username:password' -X PUT \
-H 'Content-Type: application/json' -d '@-' \
"http://webui:7767/external-api/service-weather/v1/update/unknown_uuid" < ./weather_view.json 
{
  "output": "Weather with uuid [ unknown_uuid ] was not found"
}