Nil METEO IA

Nil METEO IA · Ações GPT

OpenMeteo-Geocoding

Geocoding per obtenir latitud/longitud i timezone via Open-Meteo.

  • GET /v1/searchCerca de localitzacions (geocoding)
Esquema API original
{
  "openapi": "3.1.0",
  "info": {
    "title": "OpenMeteo-Geocoding",
    "version": "1.0.0",
    "description": "Geocoding per obtenir latitud/longitud i timezone via Open-Meteo."
  },
  "servers": [
    {
      "url": "https://geocoding-api.open-meteo.com"
    }
  ],
  "paths": {
    "/v1/search": {
      "get": {
        "operationId": "searchLocations",
        "summary": "Cerca de localitzacions (geocoding)",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Text a cercar (p. ex. Avia, Berga, Barcelona)"
          },
          {
            "name": "count",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 10
            }
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "ca"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "ISO-3166-1 alpha2 (p. ex. ES)"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer"
                          },
                          "name": {
                            "type": "string"
                          },
                          "latitude": {
                            "type": "number"
                          },
                          "longitude": {
                            "type": "number"
                          },
                          "elevation": {
                            "type": "number"
                          },
                          "feature_code": {
                            "type": "string"
                          },
                          "country_code": {
                            "type": "string"
                          },
                          "admin1": {
                            "type": "string"
                          },
                          "admin2": {
                            "type": "string"
                          },
                          "admin3": {
                            "type": "string"
                          },
                          "admin4": {
                            "type": "string"
                          },
                          "timezone": {
                            "type": "string"
                          },
                          "population": {
                            "type": "integer"
                          },
                          "postcodes": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        },
                        "additionalProperties": true
                      }
                    }
                  },
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "boolean"
                    },
                    "reason": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    }
  }
}

OpenMeteo-Forecast

Prediccio meteorologica (current/hourly/daily) i comparacio de models via Open-Meteo.

  • GET /v1/forecastPrediccio meteorologica amb seleccio de models
Esquema API original
{
  "openapi": "3.1.0",
  "info": {
    "title": "OpenMeteo-Forecast",
    "version": "1.0.0",
    "description": "Prediccio meteorologica (current/hourly/daily) i comparacio de models via Open-Meteo."
  },
  "servers": [
    {
      "url": "https://api.open-meteo.com"
    }
  ],
  "paths": {
    "/v1/forecast": {
      "get": {
        "operationId": "getForecast",
        "summary": "Prediccio meteorologica amb seleccio de models",
        "parameters": [
          {
            "name": "latitude",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "longitude",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "timezone",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "auto"
            },
            "description": "auto o IANA (p. ex. Europe/Madrid)"
          },
          {
            "name": "current",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Variables current separades per comes (CSV). Ex: temperature_2m,wind_speed_10m"
          },
          {
            "name": "hourly",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Variables hourly separades per comes (CSV)."
          },
          {
            "name": "daily",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Variables daily separades per comes (CSV)."
          },
          {
            "name": "models",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Models separats per comes (CSV). Si no s'indica, auto."
          },
          {
            "name": "forecast_days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 16,
              "default": 7
            }
          },
          {
            "name": "temperature_unit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "celsius",
                "fahrenheit"
              ],
              "default": "celsius"
            }
          },
          {
            "name": "wind_speed_unit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "kmh",
                "ms",
                "mph",
                "kn"
              ],
              "default": "kmh"
            }
          },
          {
            "name": "precipitation_unit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "mm",
                "inch"
              ],
              "default": "mm"
            }
          },
          {
            "name": "timeformat",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "iso8601",
                "unixtime"
              ],
              "default": "iso8601"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "latitude": {
                      "type": "number"
                    },
                    "longitude": {
                      "type": "number"
                    },
                    "generationtime_ms": {
                      "type": "number"
                    },
                    "utc_offset_seconds": {
                      "type": "integer"
                    },
                    "timezone": {
                      "type": "string"
                    },
                    "timezone_abbreviation": {
                      "type": "string"
                    },
                    "elevation": {
                      "type": "number"
                    },
                    "current_units": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "current": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "hourly_units": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "hourly": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "daily_units": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "daily": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  },
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "boolean"
                    },
                    "reason": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    }
  }
}

ACA - Dades obertes en temps real

Acció per consultar directament les dades obertes en temps real de l'Agència Catalana de l'Aigua (ACA) sobre embassaments i aforaments.

  • GET /catalogObté el catàleg de sensors

    Retorna el catàleg de sensors autoritzats. Es pot filtrar per tipus de component. Per a aquest GPT, els valors més útils són embassament i aforament.

  • GET /data/{provider}/{sensor}Obté dades d'un sensor

    Retorna observacions d'un sensor concret. Sense paràmetres addicionals, normalment retorna la darrera observació. Amb limit, from i to es poden recuperar més observacions o un interval temporal.

Esquema API original
{
  "openapi": "3.1.0",
  "info": {
    "title": "ACA - Dades obertes en temps real",
    "version": "1.0.0",
    "description": "Acció per consultar directament les dades obertes en temps real de l'Agència Catalana de l'Aigua (ACA) sobre embassaments i aforaments.\n"
  },
  "servers": [
    {
      "url": "https://aplicacions.aca.gencat.cat/sdim2/apirest",
      "description": "API pública de dades en temps real de l'ACA"
    }
  ],
  "paths": {
    "/catalog": {
      "get": {
        "operationId": "getCatalog",
        "summary": "Obté el catàleg de sensors",
        "description": "Retorna el catàleg de sensors autoritzats. Es pot filtrar per tipus de component. Per a aquest GPT, els valors més útils són embassament i aforament.\n",
        "parameters": [
          {
            "name": "componentType",
            "in": "query",
            "required": false,
            "description": "Tipus de component.",
            "schema": {
              "type": "string",
              "enum": [
                "embassament",
                "aforament",
                "pluviometre",
                "piezometre"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Catàleg de sensors retornat correctament",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogResponse"
                },
                "example": [
                  {
                    "provider": "EMBASSAMENT-EST",
                    "permission": "READ",
                    "sensors": [
                      {
                        "sensor": "080581-002-ANA006",
                        "description": "Nivell absolut",
                        "dataType": "NUMBER",
                        "location": "41.255617318 1.651034658",
                        "type": "0020",
                        "unit": "msnm",
                        "timeZone": "CET",
                        "publicAccess": true,
                        "state": "online",
                        "component": "080581-002",
                        "componentType": "embassament",
                        "componentDesc": "Foix (Castellet i la Gornal)",
                        "componentPublicAccess": true,
                        "additionalInfo": {
                          "Temps mostreig (min)": "5",
                          "Rang mínim": "90",
                          "Rang màxim": "220"
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/data/{provider}/{sensor}": {
      "get": {
        "operationId": "getSensorData",
        "summary": "Obté dades d'un sensor",
        "description": "Retorna observacions d'un sensor concret. Sense paràmetres addicionals, normalment retorna la darrera observació. Amb limit, from i to es poden recuperar més observacions o un interval temporal.\n",
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "description": "Provider del sensor, per exemple EMBASSAMENT-EST o AFORAMENT-EST.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sensor",
            "in": "path",
            "required": true,
            "description": "Codi del sensor obtingut del catàleg.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Nombre màxim d'observacions a retornar.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Instant inicial en format dd/mm/yyyyThh:mm:ss.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "Instant final en format dd/mm/yyyyThh:mm:ss.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Observacions retornades correctament",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SensorDataResponse"
                },
                "example": {
                  "observations": [
                    {
                      "value": "403.61",
                      "timestamp": "08/07/2024T12:05:00",
                      "location": ""
                    }
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "CatalogResponse": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/CatalogProvider"
        }
      },
      "CatalogProvider": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "provider": {
            "type": "string",
            "description": "Identificador del provider"
          },
          "permission": {
            "type": "string",
            "description": "Permís sobre els sensors"
          },
          "sensors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CatalogSensor"
            }
          }
        },
        "required": [
          "provider",
          "sensors"
        ]
      },
      "CatalogSensor": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "sensor": {
            "type": "string",
            "description": "Codi del sensor o variable"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Descripció de la variable"
          },
          "dataType": {
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "type": [
              "string",
              "null"
            ],
            "description": "Coordenades del sensor o estació"
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Tipus intern de variable"
          },
          "unit": {
            "type": [
              "string",
              "null"
            ],
            "description": "Unitat de mesura"
          },
          "timeZone": {
            "type": [
              "string",
              "null"
            ]
          },
          "publicAccess": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "component": {
            "type": [
              "string",
              "null"
            ],
            "description": "Codi de l'estació"
          },
          "componentType": {
            "type": [
              "string",
              "null"
            ],
            "description": "Tipus de component"
          },
          "componentDesc": {
            "type": [
              "string",
              "null"
            ],
            "description": "Nom o descripció de l'estació"
          },
          "componentPublicAccess": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "additionalInfo": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Informació addicional del sensor"
          }
        },
        "required": [
          "sensor"
        ]
      },
      "SensorDataResponse": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "observations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Observation"
            }
          }
        },
        "required": [
          "observations"
        ]
      },
      "Observation": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "value": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Valor observat"
          },
          "timestamp": {
            "type": [
              "string",
              "null"
            ],
            "description": "Instant de la mesura en format dd/mm/yyyyThh:mm:ss"
          },
          "location": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "value"
        ]
      }
    }
  }
}