# Data sources A data source is *not* an XML tag — it's declared in a config's `sources:` section (see {doc}`../screen-design/config-format`) and fetched from a template with `source("name")`, which calls `.fetch()` on it and hands the result straight to Jinja: ```yaml sources: weather: source: weather.yr params: lat: 55.64277 lon: 13.20638 altitude: 17 ``` ```xml+jinja {% set forecast = source('weather').nextHour(timestamp, 8) %} {{ forecast.airTemperature }}°C ``` Whatever `.fetch()` returns is whatever that source type says it returns — some are plain dicts/lists, others (calendar, weather) are small model objects with helper methods. Each page below documents both the `params:` a source type accepts and what `.fetch()` gives back. | `source:` name | Returns | Docs | | --- | --- | --- | | `request` | Parsed JSON, or raw text if the response isn't JSON | {doc}`request` | | `calendar.ical` | An `ICalendarModel` wrapping a parsed ICS feed | {doc}`calendar` | | `calendar.google` | A list of raw Google Calendar API event dicts | {doc}`calendar` | | `weather.yr` | A `WeatherForecastModel` | {doc}`weather` | | `transportation.trafiklab.departureBoard` | A list of departure dicts | {doc}`transportation` | ```{toctree} :hidden: request calendar weather transportation ```