Data API

Platform API

The resources of a data record can be accessed via the following interface commands of the platform API. Additional information in the central platform API documentation.

Daten abfragen

Query data of this resource »

The first 100 data points of this resource (sorted by insertion order, oldest first).

Method Query
GET https://datenhub.ulm.de/api/v1/datasets/kluga-klimawandelanpassung-in-ulm-durch-sensorgestutzte-internet-of-things-iot-anwendungen/resources/bodenfeuchtesensor-mit-2-sonden

If many data points are queried, this can be done in individual steps using pagination.
Example: 100 data points after the first 500 of this resource (sorted by insertion order, oldest first).

Method Query
GET https://datenhub.ulm.de/api/v1/datasets/kluga-klimawandelanpassung-in-ulm-durch-sensorgestutzte-internet-of-things-iot-anwendungen/resources/bodenfeuchtesensor-mit-2-sonden?offset=500&limit=100

A SQL condition can be specified to filter the data points.
Example: All data points of this resource that contain the string "42" in the "answer" field, sorted according to the "planet" field.

Method Query
GET https://datenhub.ulm.de/api/v1/datasets/kluga-klimawandelanpassung-in-ulm-durch-sensorgestutzte-internet-of-things-iot-anwendungen/resources/bodenfeuchtesensor-mit-2-sonden?where=answer LIKE '42' order by planet

Beispiel: Alle Datenpunkte dieser Ressource, absteigend sortiert nach dem Feld "timestamp".

Method Query
GET https://datenhub.ulm.de/api/v1/datasets/kluga-klimawandelanpassung-in-ulm-durch-sensorgestutzte-internet-of-things-iot-anwendungen/resources/bodenfeuchtesensor-mit-2-sonden?where=1=1 order by timestamp desc

Daten abonnieren

Ressourcen eines Datensatzes können über WebSocket oder Webhook abonniert werden. Neue Datenpunkte von abonnierten Ressourcen werden sofort nach Bereitstellung an ein externes System geschickt.

Daten dieser Ressource über WebSocket abonnieren »

Mit einem WebSocket kann man über einen WebSocket-Client kontinuierlich über neue Daten in einer Ressource informiert werden. Sobald ein neuer Datenpunkt zu der Ressource hinzukommt, wird er über den WebSocket verschickt. Zur Benutzung des WebSockets reicht es, sich zur entsprechenden WebSocket-URL der Ressource in einem passenden WebSocket-Client zu verbinden.

WebSocket URL
wss://datenhub.ulm.de/api/v1/stream/kluga-klimawandelanpassung-in-ulm-durch-sensorgestutzte-internet-of-things-iot-anwendungen/bodenfeuchtesensor-mit-2-sonden

Beispiel zur Benutzung des WebSocket mit JavaScript

const WebSocket = require('ws');

const ws = new WebSocket(
  wss://datenhub.ulm.de/api/v1/stream/kluga-klimawandelanpassung-in-ulm-durch-sensorgestutzte-internet-of-things-iot-anwendungen/bodenfeuchtesensor-mit-2-sonden, {
    rejectUnauthorized: false
});

ws.on('message', function incoming(data) {
  console.log(data);
});
                  
Daten dieser Ressource über Webhook abonnieren »

Mit einem Webhook kann ein externes System aufgerufen werden, sobald ein neuer Datenpunkt zu der Ressource hinzukommt. Dieser Aufruf enthält immer nur diesen neuen Datenpunkt. Werden mehrere gleichzeitig zur Ressource hinzugefügt, so wird das Zielsystem mehrfach hintereinander mit den einzelnen Datenpunkten aufgerufen.


Zur Erstellung eines Webhooks muss man angemeldet sein. Jede:r Nutzer:in kann nur einen Webhook pro Ressource erstellen. Beim Testen des Webhooks wird ein Datenpunkt der Ressource an das Zielsystem geschickt.


Bei Auftreten von Fehlern beim Aufruf des externen Systems, versucht die Datenplattform mindestens neun weitere Datenpunkte für mindestens eine Stunde zuzustellen. Können diese Datenpunkte hintereinander ebenfalls nicht zugestellt werden, wird das Abonnement automatisch pausiert.

Webhook erstellen

Daten hinzufügen

Nutzer:innen mit Schreibberechtigung auf den Datensatz können neue Ressourcen und neue Daten zu Ressourcen hinzufügen. Dabei kann ein externes System neue Datenpunkte an die Plattform schicken, die dann an der Ressource gespeichert werden.

Add new data points to this resource »

The following queries are only possible with write authorization:

Add new data points to this resource

The data points are transferred in JSON format. Please refer to Platform API documentation for more details.

Method Query
POST https://datenhub.ulm.de/api/v1/datasets/kluga-klimawandelanpassung-in-ulm-durch-sensorgestutzte-internet-of-things-iot-anwendungen/resources/bodenfeuchtesensor-mit-2-sonden

Add new data points to this resource or overwrite existing data points

Existing data points will be overwritten if they have the same ID. Please refer to Platform API documentation for more details.

Method Query
PUT https://datenhub.ulm.de/api/v1/datasets/kluga-klimawandelanpassung-in-ulm-durch-sensorgestutzte-internet-of-things-iot-anwendungen/resources/bodenfeuchtesensor-mit-2-sonden
Create a new resource in this data set and add data points »

The following queries are only possible with write authorization:

Add new data points to this resource or overwrite existing data points

When creating a new resource, the first data point defines the schema of the resource. Please refer to Platform API documentation for more details.
Example: A new resource with the name "antares" is created.

Method Query
POST/PUT https://datenhub.ulm.de/api/v1/datasets/kluga-klimawandelanpassung-in-ulm-durch-sensorgestutzte-internet-of-things-iot-anwendungen/resources/antares

CKAN API

Access resource data via a web API with powerful query support. Further information in the main CKAN Data API and DataStore documentation.

Endpoints »

The Data API can be accessed via the following actions of the CKAN action API.

Create https://datenhub.ulm.de/ckan/en/api/3/action/datastore_create
Update / Insert https://datenhub.ulm.de/ckan/en/api/3/action/datastore_upsert
Query https://datenhub.ulm.de/ckan/en/api/3/action/datastore_search
Query (via SQL) https://datenhub.ulm.de/ckan/en/api/3/action/datastore_search_sql
Querying »
Query example (first 5 results)

https://datenhub.ulm.de/ckan/en/api/3/action/datastore_search?resource_id=ee5b5161-2499-46db-9c30-4e74a2434ef0&limit=5

Query example (results containing 'jones')

https://datenhub.ulm.de/ckan/en/api/3/action/datastore_search?q=jones&resource_id=ee5b5161-2499-46db-9c30-4e74a2434ef0

Query example (via SQL statement)

https://datenhub.ulm.de/ckan/en/api/3/action/datastore_search_sql?sql=SELECT * from "ee5b5161-2499-46db-9c30-4e74a2434ef0" WHERE title LIKE 'jones'

Abfragebeispiel (mit SQL Befehl, sortierend)

https://datenhub.ulm.de/ckan/en/api/3/action/datastore_search_sql?sql=SELECT * from "ee5b5161-2499-46db-9c30-4e74a2434ef0" WHERE title LIKE 'jones' ORDER BY timestamp DESC

Example: Javascript »

A simple ajax (JSONP) request to the data API using jQuery.

        var data = {
          resource_id: 'ee5b5161-2499-46db-9c30-4e74a2434ef0', // the resource id
          limit: 5, // get 5 results
          q: 'jones' // query for 'jones'
        };
        $.ajax({
          url: 'https://datenhub.ulm.de/ckan/en/api/3/action/datastore_search',
          data: data,
          dataType: 'jsonp',
          success: function(data) {
            alert('Total results found: ' + data.result.total)
          }
        });
Example: Python »
      import urllib
      url = 'https://datenhub.ulm.de/ckan/en/api/3/action/datastore_search?resource_id=ee5b5161-2499-46db-9c30-4e74a2434ef0&limit=5&q=title:jones'  
      fileobj = urllib.urlopen(url)
      print fileobj.read()