Push-Abonnements für den EODATA-Katalog auf CODE-DE-Lab

Mit Push- und Pull-Abonnements erhalten Sie Benachrichtigungen, wenn Produkte im EODATA-Katalog oder in einer Teilmenge davon hinzugefügt, geändert oder gelöscht werden.

Dieser Artikel behandelt Push-Abonnements, die Benachrichtigungen direkt an einen vom Benutzer verwalteten Endpunkt senden.

Es gibt außerdem Pull-Abonnements. Dabei werden Benachrichtigungen aus dem EODATA-Katalog regelmäßig aus einer eigenen Warteschlange in der Cloud abgerufen. Sie sind in Pull-Abonnements für den EODATA-Katalog auf CODE-DE-Lab beschrieben.

Inhalt dieser Anleitung

Voraussetzungen

Nr. 1 Konto

Sie benötigen ein aktives Konto auf CODE-DE-Lab: https://tenant-manager.code-de.org.

Nr. 2 HTTP-Anfragen senden können

Für diese Anleitung benötigen Sie eine Möglichkeit, GET-, POST-, PATCH- und DELETE-Anfragen einschließlich Headern und gegebenenfalls eines JSON-Anfragetexts zu senden. Außerdem müssen Sie die Antworten auf diese Anfragen lesen können.

Für die Beispiele in diesem Artikel können Sie unter anderem folgende Methoden verwenden:

  • HTTP-Anfragen über einen Browser senden

    Die einfachste Möglichkeit, eine HTTP-Anfrage zu senden, ist das Aufrufen einer Internetadresse im Browser. Die meisten Browser können die Ausgabe einer Website verarbeiten und lesbar darstellen. Siehe Mit Firefox Anfragen an die EODATA-Katalog-API von CODE-DE-Lab senden

  • HTTP-Anfragen mit curl oder wget senden

    Mit den eigenständigen Programmen curl und wget können Sie HTTP-Anfragen über die Befehlszeile senden. Weitere Informationen finden Sie unter Verwenden von curl und wget zum Herunterladen von EO-Daten-Produkten von CODE-DE-Lab

  • HTTP-Anfragen mit Python-Code senden

    Mit einer Programmiersprache wie Python können Sie Code schreiben, der HTTP-Anfragen an den Server sendet. Siehe Mit Python Anfragen an den EODATA-Katalog auf CODE-DE-Lab senden. Auch andere Programmiersprachen sollten HTTP-Anfragen senden können.

    Sie sollten bereits Erfahrung mit Python haben, bevor Sie den Python-Code in diesem Artikel ausführen. Python und das Modul requests müssen installiert sein.

    Unter Ubuntu 24.04 führen Sie

    sudo apt install python3-requests
    

    aus, um das benötigte Modul requests zu installieren. Dabei sollte auch der Python-Interpreter installiert werden, falls er noch nicht vorhanden ist.

    Andere Betriebssysteme können ebenfalls funktionieren, erfordern aber möglicherweise Anpassungen.

Nr. 3 Produkte filtern können

Wenn Sie nur über Änderungen an einer Teilmenge der Produkte benachrichtigt werden möchten, verwenden Sie einen passenden Filter.

Die Filter in diesem Artikel sind in Anleitung zur EODATA-Katalog-API auf CODE-DE-Lab beschrieben. Es sind dieselben Filter wie für den OData-Parameter $filter.

  • Für Filter zu created- und/oder modified-Produkten lesen Sie den Abschnitt zum OData-Endpunkt Products in der Anleitung zur EODATA-Katalog-API.

  • Für Filter zu deleted-Produkten lesen Sie den Abschnitt zum OData-Endpunkt DeletedProducts in der Anleitung zur EODATA-Katalog-API.

Die Endpunkte Products und DeletedProducts bieten unterschiedliche Optionen. Mit DeletedProducts können Sie beispielsweise nach dem Löschgrund von EODATA-Produkten suchen. Für Products gibt es keine entsprechende Option.

Nr. 4 Erstelltes Keycloak-Token

Zum Nachweis Ihrer Identität bei Push-Abonnements benötigen Sie ein Keycloak-Token. Die Erstellung ist hier beschrieben: Verwenden von curl und wget zum Herunterladen von EO-Daten-Produkten von CODE-DE-Lab

Ein Keycloak-Token ist nur begrenzt gültig. Wenn das aktuelle Token abläuft und Sie die Abonnement-API weiter verwenden möchten, erstellen Sie ein neues Token.

Wenn Sie Python oder Bash verwenden und die Zwei-Faktor-Authentifizierung für Ihr Konto aktiviert ist, können Sie das Keycloak-Token auch automatisch erstellen, ohne einen sechsstelligen TOTP-Code einzugeben. Weitere Informationen:

Nr. 5 Endpunkt zum Empfang von Benachrichtigungen

Sie benötigen eine physische oder virtuelle Maschine als Endpunkt. Sie muss eine öffentliche IP-Adresse und eine zugeordnete Domain haben. Außerdem benötigen Sie einen offenen Port, an den die Benachrichtigungen gesendet werden.

Zum Lesen eingehender Benachrichtigungen benötigen Sie HTTP-Serversoftware mit Unterstützung für Basic Authentication. Der Server muss über HTTPS mit einem Zertifikat einer vertrauenswürdigen Stelle abgesichert sein. Dafür kommen beispielsweise kommerzielle Anbieter oder Let’s Encrypt infrage, das kostenlose Zertifikate bereitstellt.

Sie können einen solchen Server beispielsweise auf einer virtuellen Linux-Maschine in der CODE-DE-Lab-Cloud mit zugeordneter Floating IP einrichten.

Warnung

Das Zertifikat muss öffentlich vertrauenswürdig sein und darf nicht selbstsigniert sein.

Der Port muss aus dem Internet erreichbar sein.

Die Basic-Auth-Anmeldedaten müssen genau übereinstimmen.

Prüfen Sie vor dem Erstellen eines Abonnements, ob Ihr Endpunkt auf eine Testanfrage 200 OK zurückgibt, zum Beispiel

GET https://example.com:8000/

mit derselben HTTPS-URL und denselben Basic-Auth-Anmeldedaten.

Einführung

Was muss eine HTTP-Anfrage enthalten?

Sie können Push-Abonnements durch HTTP-Anfragen erstellen und verwalten.

Verwenden Sie für die in diesem Artikel beschriebenen HTTP-Anfragen immer:

  • Anfragetyp (GET, POST, PATCH oder DELETE)

  • Header

  • URL

Alle drei Bestandteile müssen gemeinsam vorhanden sein. Bestimmte HTTP-Anfragen benötigen außerdem einen Anfragetext.

JSON-Daten in Antworten

Einige der in diesem Artikel beschriebenen Anfragen liefern JSON-Daten. Zur besseren Lesbarkeit sind diese im Artikel mehrzeilig formatiert.

Beschreibung der Push-Abonnement-Entität

Tabelle zur Beschreibung der Push-Abonnement-Entität
Eigenschaftsname Typ Beschreibung
Id Guid Dies ist ein universell eindeutiger Bezeichner (UUID). Die Id ist ein lokaler Bezeichner für eine Abonnementinstanz innerhalb des Katalogs und wird beim Erstellen des Abonnements vergeben.

Beispiel
9249dde5-4838-4a34-8925-bac8c1d53f09c
SubscriptionType Aufzählung der Abonnementtypen Typ des erstellten Abonnements:
  • pull
  • push

Der Wert muss in Kleinbuchstaben eingegeben werden.

Beispiel
push
Status Aufzählung der Abonnementstatus Zulässige Statuswerte eines Abonnements sind:
  • running (das Abonnement ist aktiv und sendet Benachrichtigungen an den Endpunkt)
  • paused (das Abonnement sendet keine Benachrichtigungen an den Endpunkt)
  • cancelled (dieser Status beendet und löscht das Abonnement)

Ein laufendes Abonnement wird nach 60 Tagen Inaktivität automatisch auf paused gesetzt. Nach 365 Tagen seit der letzten Benachrichtigung wird der Status auf cancelled gesetzt und das Abonnement dauerhaft gelöscht.

Wenn der Benutzer keinen Wert für Status angibt, wird standardmäßig „running“ verwendet.

Beispiel
running
SubscriptionEvent Aufzählung der Abonnementereignisse Das Abonnementereignis, das überwacht und für das eine Benachrichtigung bereitgestellt wird. Folgende Werte sind möglich:
  • created
  • modified
  • created und modified. Um beide zu verfolgen, senden Sie SubscriptionEvent als Array, zum Beispiel ["created","modified"].
  • deleted
Wenn der Benutzer keinen Wert für SubscriptionEvent angibt, wird standardmäßig created verwendet.

Für „SubscriptionEvent“ = „created“ werden Benachrichtigungen über neu zum EODATA-Katalog hinzugefügte Produkte gesendet.

Für „SubscriptionEvent“ = „modified“ werden Benachrichtigungen über geänderte Produkte im EODATA-Katalog gesendet.

Für „SubscriptionEvent“ = „deleted“ werden Benachrichtigungen über aus dem EODATA-Katalog entfernte Produkte gesendet. Dies geschieht bei einem der folgenden Werte des Parameters „DeletionCause“:
  • Duplicated product
  • Missing checksum
  • Corrupted product
  • Obsolete product or Other

Beispiel
created
FilterParam String Die Filterparameter des Abonnements.

Wenn „SubscriptionEvent“ = „created“ oder „modified“ ist, bezieht sich diese Abfrage auf den Parameter $filter= einer beliebigen Products?-Abfrage.

Wenn „SubscriptionEvent“ = „deleted“ ist, bezieht sich diese Abfrage auf den Parameter $filter= einer beliebigen DeletedProducts-Abfrage.

Es stehen dieselben Filterparameter wie für den EODATA-Katalog zur Verfügung. Weitere Informationen finden Sie unter Voraussetzung Nr. 3.

Beispiel
Collection/Name eq 'SENTINEL-1' and Attributes/OData.CSC.StringAttribute/any (att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq 'IW_SLC__1S')
SubmissionDate DateTimeOffset Datum und Uhrzeit des Eingangs des Abonnements im Katalog. Die Zeit wird im ISO-8601-Format (UTC+0) angegeben: YYYY-MM-DDThh:mm:ss.sssZ

Beispiel
2024-01-17T09:13:04.654Z
LastNotificationDate DateTimeOffset Datum und Uhrzeit der letzten erfolgreichen Zustellung einer Benachrichtigung an den Endpunkt des Benutzers durch den Abonnementdienst. Die Zeit wird im ISO-8601-Format (UTC+0) angegeben: YYYY-MM-DDThh:mm:ss.sssZ

Beispiel
2024-01-17T09:50:10.654Z
StageOrder Boolean Beauftragt automatisch die Bereitstellung von Produkten, die dem Abonnement entsprechen.

Wird nur verwendet, wenn SubscriptionEvent den Wert created hat.

Derzeit ist das Beauftragen der Produktbereitstellung nicht möglich, da alle Produkte im EODATA-Katalog den Status Online haben und ohne Auftrag sofort zugänglich sind.

Beispiel
true
Priority Int64 Priorität der aus dem Abonnement entstehenden Aufträge. Derzeit automatisch auf 1 gesetzt; der Wert kann nicht geändert werden.

Beispiel
1
NotificationEndpoint String Endpunkt des Benutzers, an den die Benachrichtigungen gesendet werden.

Beispiel
https://notification-endpoint.example.com:4000
NotificationEpUsername String Benutzername zur Authentifizierung am Benachrichtigungsendpunkt.

Erforderlich, wenn NotificationEndpoint eine Authentifizierung verlangt.

Beispiel
mylocalusername
NotificationEpPassword String Passwort zur Authentifizierung am Benachrichtigungsendpunkt.

Erforderlich, wenn NotificationEndpoint eine Authentifizierung verlangt.

Beispiel
My%Password#789


Beschränkungen für Abonnements

Ihr Konto kann höchstens 2 (zwei) Abonnements mit dem Status running gleichzeitig haben. Möglich sind:

Ein Konto auf CODE-DE-Lab kann insgesamt höchstens 10 Abonnements haben. Dabei werden alle Arten berücksichtigt:

  • running und paused

  • Push und Pull

Push-Abonnement erstellen

Bemerkung

Push-Abonnements müssen SubscriptionType mit dem Wert push in Kleinbuchstaben enthalten.

Wenn Sie bereits zwei Abonnements mit dem Status running haben, erstellen Sie das neue zunächst mit dem Status paused. Pausieren Sie dann ein bestehendes Abonnement und setzen Sie das neue auf running.

Ein typischer Anfragetext zum Erstellen eines Push-Abonnements sieht so aus:

{
    "SubscriptionType": "push",
    "StageOrder": true,
    "FilterParam": "Collection/Name eq 'SENTINEL-1' and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq 'IW_SLC__1S')",
    "Priority": 1,
    "Status": "running",
    "SubscriptionEvent": [
        "created"
    ],
    "NotificationEndpoint": "https://example.com:8000/",
    "NotificationEpUsername": "NotificationEndpointUser",
    "NotificationEpPassword": "My@!Passw0rd"
}

Tragen Sie für folgende Schlüssel im JSON-Anfragetext Ihre eigenen Werte ein:

SubscriptionType

Typ des erstellten Abonnements. Verwenden Sie für Push-Abonnements den Wert push in Kleinbuchstaben.

SubscriptionEvent

Der Wert dieses Schlüssels ist ein Array mit einer oder mehreren Zeichenfolgen. Damit wählen Sie aus, über welche Ereignistypen Sie benachrichtigt werden möchten. Folgende Werte sind möglich:

  • created

  • modified

  • deleted

Um mehrere Ereignisse zu verfolgen, geben Sie mehrere Werte im Array an, zum Beispiel [„created“, „modified“].

FilterParam

Ersetzen Sie den Wert von FilterParam durch eine Abfrage, die die gewünschte Teilmenge von Produkten festlegt. Weitere Informationen finden Sie unter Voraussetzung Nr. 3.

Um Informationen zu erhalten

  • über erstellte und/oder geänderte Produkte, verwenden Sie dieselbe Abfrage wie für den Endpunkt Products.

  • über gelöschte Produkte, verwenden Sie dieselbe Abfrage wie für den Endpunkt DeletedProducts.

Sie können auch Benachrichtigungen zu ausgewählten Ereignistypen für alle Produkte des Katalogs erhalten, statt nur für eine Teilmenge. Dazu können Sie entweder

  • den Wert des Schlüssels FilterParam leer lassen oder

  • diesen Schlüssel vollständig aus der Anfrage weglassen.

Status

Wenn Sie diesen Schlüssel auf running setzen, empfängt das erstellte Abonnement sofort Benachrichtigungen. Wenn Sie ein pausiertes (inaktives) Abonnement erstellen und später aktivieren möchten, setzen Sie den Wert auf paused.

Wenn Sie diesen Schlüssel nicht in der Anfrage angeben, erhält das erstellte Abonnement den Status running.

Wenn Sie bereits zwei Abonnements mit dem Status running haben und ein weiteres mit diesem Status erstellen möchten, schlägt die Operation fehl. Weitere Informationen finden Sie im obigen Abschnitt Beschränkungen für Abonnements.

Sie können entweder

  • eines Ihrer bestehenden Abonnements pausieren und anschließend ein neues erstellen oder

  • ein neues Abonnement mit dem Status paused erstellen.

NotificationEndpoint

Die URL Ihres Endpunkts einschließlich des Ports, unter dem er erreichbar ist.

NotificationEpUsername

Der Benutzername zur Authentifizierung an Ihrem Benachrichtigungsendpunkt.

NotificationEpPassword

Das Passwort zur Authentifizierung an Ihrem Benachrichtigungsendpunkt.

NotificationEpUsername und NotificationEpPassword sollten sicher sein und sich von den Anmeldedaten Ihres Kontos auf CODE-DE-Lab unterscheiden.

Die im obigen Beispiel als FilterParam angegebene Abfrage sollte gültig sein. Sie können damit Push-Benachrichtigungen testen.

ERINNERUNG: Geben Sie die obligatorischen Header an.

Senden Sie diese Anfrage an folgende URL:

https://catalogue.code-de.org/odata/v1/Subscriptions

Der Antwortcode sollte 201 Created sein. Außerdem sollten Sie JSON-Daten mit Informationen über das neue Abonnement erhalten, zum Beispiel:

{
  "Id": "0b5aaa72-922f-4b69-ad7f-1ccebc3e824e",
  "SubscriptionType": "push",
  "FilterParam": "Collection/Name eq 'SENTINEL-1' and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq 'IW_SLC__1S')",
  "StageOrder": false,
  "Priority": 1,
  "Status": "running",
  "NotificationEndpoint": "https://example.com:8000/",
  "SubscriptionEvent": [
    "created"
  ],
  "SubmissionDate": "2025-04-10T10:35:51.299345Z",
  "@odata.context": "$metadata#OData.CSC.Subscription"
}

Das Abonnement sollte nun erstellt sein. Senden Sie zur Prüfung eine GET-Anfrage an https://catalogue.code-de.org/odata/v1/Subscriptions/Info und suchen Sie in der Antwort nach der Id Ihres Abonnements.

Beispiel: Push-Abonnement mit Python erstellen

Der folgende Python-Code sendet eine Anfrage mit den oben beschriebenen Parametern:

import requests
import json

access_token = "" # paste token here

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {access_token}",
}

body = {
    "SubscriptionType": "push",
    "StageOrder": True,
    "FilterParam": "Collection/Name eq 'SENTINEL-1' and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq 'IW_SLC__1S')",
    "Priority": 1,
    "Status": "running",
    "SubscriptionEvent": [
        "created"
    ],
    "NotificationEndpoint": "https://example.com:8000/catalogue-notifications",
    "NotificationEpUsername": "NotificationEndpointUser",
    "NotificationEpPassword": "My@!Passw0rd"
}

url = "https://catalogue.code-de.org/odata/v1/Subscriptions"

response = requests.post(url=url, headers=headers, json=body)

print(f"{response.status_code} {response.reason}\n")
try:
    print(json.dumps(json.loads(response.text), indent=4))
except Exception:
    print(response.text)

Dieses Skript:

  • sendet eine HTTP-Anfrage an die angegebene URL.

  • ruft die Ergebnisse ab und zeigt Folgendes an:

    • den Antwortstatuscode, zum Beispiel 200, und die Statusbeschreibung, zum Beispiel OK.

    • eine Leerzeile zur besseren Lesbarkeit.

    • den Antwortcode, falls vorhanden. Gültiges JSON wird zur besseren Lesbarkeit formatiert.

In diesem Skript wird der Anfragetext über den Parameter json an das Modul requests übergeben.

Weisen Sie das nach Voraussetzung Nr. 4 erstellte Keycloak-Token der Variablen access_token zu.

Tragen Sie im Dictionary body die Angaben zur Benachrichtigung als Werte der entsprechenden Schlüssel ein:

  • NotificationEndpoint — URL des Benachrichtigungsendpunkts einschließlich des Ports, falls dieser nicht 443 ist

  • NotificationEpUsername — Benutzername für Ihren Endpunkt

  • NotificationEpPassword — Passwort für Ihren Endpunkt

Speichern Sie die Datei als http_request_test_create.py.

Führen Sie das Skript mit folgendem Befehl aus. Wechseln Sie vorher in das Verzeichnis, in dem es liegt:

python3 http_request_test_create.py

Beispiel: Abonnement zum Verfolgen erstellter und geänderter Produkte erstellen

In diesem Beispiel erstellen Sie ein Abonnement, das erstellte und geänderte Produkte verfolgt, die folgende Kriterien erfüllen (FilterParam):

Collection/Name eq 'SENTINEL-1' and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq 'IW_SLC__1S')

Senden Sie dazu eine HTTP-POST-Anfrage mit folgendem Anfragetext:

{
    "SubscriptionType": "push",
    "StageOrder": true,
    "FilterParam": "Collection/Name eq 'SENTINEL-1' and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq 'IW_SLC__1S')",
    "Priority": 1,
    "Status": "running",
    "SubscriptionEvent": [
        "created",
        "modified"
    ],
    "NotificationEndpoint": "https://example.com:8000/catalogue-notifications",
    "NotificationEpUsername": "NotificationEndpointUser",
    "NotificationEpPassword": "My@!Passw0rd"
}

an diese URL:

https://catalogue.code-de.org/odata/v1/Subscriptions

ERINNERUNG: Geben Sie die obligatorischen Header an.

Sie sollten den Statuscode 201 Created und folgendes JSON-Objekt erhalten:

{
  "Id": "6d73b84b-93c6-42aa-8c87-036585cfce04",
  "SubscriptionType": "push",
  "FilterParam": "Collection/Name eq 'SENTINEL-1' and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq 'IW_SLC__1S')",
  "StageOrder": false,
  "Priority": 1,
  "Status": "running",
  "NotificationEndpoint": "https://example.com:8000/catalogue-notifications",
  "SubscriptionEvent": [
    "created",
    "modified"
  ],
  "SubmissionDate": "2025-04-10T12:01:29.231216Z",
  "@odata.context": "$metadata#OData.CSC.Subscription"
}

Beispiel: Versuch, ein Abonnement mit ungültigem FilterParam zu erstellen

Angenommen, Sie versuchen versehentlich, ein Abonnement mit einer ungültigen Abfrage zu erstellen, etwa mit Colection/Name statt Collection/Name:

Colection/Name eq 'SENTINEL-1' and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq 'IW_SLC__1S')

Der zu sendende Anfragetext enthält die ungültige Abfrage:

{
    "SubscriptionType": "push",
    "StageOrder": true,
    "FilterParam": "Colection/Name eq 'SENTINEL-1' and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq 'IW_SLC__1S')",
    "Priority": 1,
    "Status": "running",
    "SubscriptionEvent": [
        "created"
    ],
    "NotificationEndpoint": "https://example.com:8000/catalogue-notifications",
    "NotificationEpUsername": "NotificationEndpointUser",
    "NotificationEpPassword": "My@!Passw0rd"
}

Wie zuvor senden Sie die Anfrage an folgende URL:

https://catalogue.code-de.org/odata/v1/Subscriptions

Als Antwort erhalten Sie den Code 400 Bad Request und folgende JSON-Daten:

{
    "detail": "Your filter is incorrect. We suggest to verify it with catalogue API. Detailed error message -> Invalid field: Colection"
}

Diese Antwort hängt von der Art des Fehlers in Ihrer Abfrage ab.

Was geschieht nach dem Erstellen eines Push-Abonnements?

Wenn die HTTP-Anfrage erfolgreich war, sollte ein Abonnement erstellt worden sein.

Ist das Abonnement aktiv, empfängt Ihr Benachrichtigungsendpunkt aus Voraussetzung Nr. 5 bei jedem relevanten Ereignis eine Benachrichtigung. Diese enthält Angaben zum betroffenen Produkt.

Eine Beispielbenachrichtigung ist zu lang, um sie vollständig in diesem Artikel wiederzugeben. Sie steht daher als JSON-Datei zum Download bereit:

example-notification-push.json

Das Array value -> Attributes sieht wie folgt aus:

../_images/verbatim_push_notification.png

Es beginnt in Zeile 67 und endet in Zeile 193; die gesamte Datei hat 221 Zeilen. Das rote Rechteck rechts im Bild zeigt die Position des Arrays Attributes im Verhältnis zur Länge des gesamten Texts.

Schlüssel einer Benachrichtigung erläutert

Tabelle zur Beschreibung der Push-Benachrichtigungsentität
Eigenschaftsname Typ Beschreibung
AckId Guid Bestätigungsbezeichner der Benachrichtigung. Er kann zum eindeutigen Identifizieren und Bestätigen einer bestimmten zugestellten Benachrichtigung verwendet werden.

Beispiel
2f93b9d0-39f3-4c59-9a2a-5e3d7b2a5a61
ProductId Guid Dies ist der universell eindeutige Bezeichner (UUID) des Produkts, auf das sich die Benachrichtigung bezieht.

Beispiel
8d654e59-d7b6-4a53-b086-c9de764e506b
ProductName String Dies ist der im Katalog vergebene Name des Produkts, auf das sich die Benachrichtigung bezieht.

Der Wert von ProductName kann lang sein und passt meist nicht in eine einzelne Tabellenzelle. Ein konkretes Beispiel steht unterhalb der Tabelle.
SubscriptionId Guid Dies ist ein universell eindeutiger Bezeichner (UUID). Die Id ist ein lokaler Bezeichner für die Abonnementinstanz innerhalb des Katalogs und wird beim Erstellen des Abonnements vergeben.

Beispiel
991c4730-cf6f-432a-9f6c-47be0230ff4
SubscriptionEvent Aufzählung der Abonnementereignisse Das Abonnementereignis, das überwacht und für das eine Benachrichtigung bereitgestellt wird:
  • created
  • modified
  • created und modified. Um beide zu verfolgen, senden Sie SubscriptionEvent als Array, zum Beispiel ["created","modified"].
  • deleted
Wenn der Benutzer keinen Wert für SubscriptionEvent angibt, wird standardmäßig „created“ verwendet.

Für „SubscriptionEvent“ = „created“ werden Benachrichtigungen über neu zum EODATA-Katalog hinzugefügte Produkte gesendet.

Für „SubscriptionEvent“ = „modified“ werden Benachrichtigungen über geänderte Produkte im EODATA-Katalog gesendet.

Für „SubscriptionEvent“ = „deleted“ werden Benachrichtigungen über aus dem EODATA-Katalog entfernte Produkte gesendet.

Beispiel
created
NotificationDate DateTimeOffset Datum und Uhrzeit der Erstellung der Benachrichtigung. Die Zeit wird im ISO-8601-Format (UTC+0) angegeben: YYYYMM-DDThh:mm:ss.sssZ

Beispiel
2024-01-29T10:59:08.698Z
value JSON-Objekt Enthält eine Standardantwort der Katalog-API mit allen Metadaten und Inhaltsdetails eines Produkts.


Beispiel für ProductName

S2A_MSIL2A_20240129T062121_N0510_R034_T44VMN_20240129T093752.SAFE

Status und Endpunkt eines Push-Abonnements ändern

In diesem Abschnitt erfahren Sie, wie Sie ein bestehendes Push-Abonnement bearbeiten. Dies kann beispielsweise nötig sein, um es zu pausieren oder wieder zu aktivieren oder weil Sie bald den Zugriff auf den bisherigen Benachrichtigungsendpunkt verlieren.

Bei Push-Abonnements können Sie folgende Eigenschaften ändern:

Status

Status des Abonnements: running, paused oder cancelled. Der Status cancelled löscht das Abonnement.

NotificationEndpoint

Die URL Ihres Endpunkts einschließlich des Ports, unter dem er erreichbar ist.

NotificationEpUsername

Der am Endpunkt konfigurierte Benutzername, mit dem Benachrichtigungen an ihn gesendet werden.

NotificationEpPassword

Das am Endpunkt konfigurierte Passwort, mit dem Benachrichtigungen an ihn gesendet werden.

Senden Sie dazu eine HTTP-PATCH-Anfrage mit einem JSON-Objekt als Anfragetext, das alle zu ändernden Parameter enthält.

Bemerkung

Sie müssen nur die Parameter angeben, die Sie ändern möchten.

Senden Sie die Anfrage an folgende URL. Ersetzen Sie darin <<subscription_id>> durch die ID Ihres Abonnements.

https://catalogue.code-de.org/odata/v1/Subscriptions(<<subscription_id>>)

ERINNERUNG: Geben Sie die obligatorischen Header an.

Die Antwort hängt von den gewählten Optionen ab.

Wenn Sie

  • Eigenschaften wie den Benachrichtigungsendpunkt oder den Status ändern und

  • den Status nicht auf cancelled setzen,

sollten Sie den Antwortstatus 200 OK und ein JSON-Objekt mit aktualisierten Informationen zum Abonnement erhalten.

Wenn Sie den Status auf cancelled setzen, sollte das Abonnement entfernt und der Antwortcode 204 No Content zurückgegeben werden.

Beispiel: Bearbeiten, ohne das Abonnement zu löschen

Angenommen, Sie haben ein Push-Abonnement mit der ID 6d73b84b-93c6-42aa-8c87-036585cfce04 und möchten den Endpunkt für Benachrichtigungen ändern. Im Einzelnen möchten Sie:

  • den Benachrichtigungsendpunkt auf https://example.org setzen,

  • den Benutzernamen zur Authentifizierung an diesem Endpunkt auf John setzen und

  • das Passwort zur Authentifizierung an diesem Endpunkt auf MyTestPassword321 setzen.

Verwenden Sie dafür folgendes JSON-Objekt als Anfragetext Ihrer HTTP-PATCH-Anfrage:

{
    "NotificationEndpoint": "https://example.org",
    "NotificationEpUsername": "John",
    "NotificationEpPassword": "MyTestPassword321"
}

ERINNERUNG: Geben Sie die obligatorischen Header an.

Senden Sie diese Anfrage an folgende URL:

https://catalogue.code-de.org/odata/v1/Subscriptions(6d73b84b-93c6-42aa-8c87-036585cfce04)

Sie erhalten den Antwortcode 200 OK und folgendes JSON-Objekt:

{
  "Id": "6d73b84b-93c6-42aa-8c87-036585cfce04",
  "SubscriptionType": "push",
  "FilterParam": "Collection/Name eq 'SENTINEL-1' and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq 'IW_SLC__1S')",
  "StageOrder": false,
  "Priority": 1,
  "Status": "paused",
  "NotificationEndpoint": "https://example.org",
  "SubscriptionEvent": [
    "created",
    "modified"
  ],
  "SubmissionDate": "2025-04-10T12:01:29.231216Z",
  "@odata.context": "$metadata#OData.CSC.Subscription"
}

Die neuen Anmeldedaten sind darin nicht enthalten, der neue Endpunkt ist jedoch sichtbar.

Beispiel: Abonnementstatus auf cancelled setzen

Angenommen, Sie möchten das Abonnement aus dem vorherigen Beispiel löschen, indem Sie seinen Status auf cancelled setzen.

Verwenden Sie dazu folgendes JSON-Objekt als Anfragetext Ihrer HTTP-PATCH-Anfrage:

{
   "Status": "cancelled"
}

Die URL bleibt unverändert:

https://catalogue.code-de.org/odata/v1/Subscriptions(6d73b84b-93c6-42aa-8c87-036585cfce04)

Sie erhalten den Antwortcode 204 No Content. Das Abonnement sollte nun gelöscht sein.

Aktuelle Abonnements auflisten

Senden Sie eine GET-Anfrage an folgende URL, um alle derzeit mit Ihrem Konto verknüpften Abonnements aufzulisten:

https://catalogue.code-de.org/odata/v1/Subscriptions/Info

ERINNERUNG: Geben Sie die obligatorischen Header an.

Der Antwortstatus sollte 200 OK sein. Sie sollten eine Liste Ihrer aktuellen Abonnements erhalten. Dazu gehören:

  • Push-Abonnements und

  • Pull-Abonnements.

Hier ist ein Beispiel:

[
  {
    "Id": "0a449cc9-d6d4-4db7-af6a-d10105bedd2b",
    "SubscriptionType": "push",
    "FilterParam": "Collection/Name eq 'SENTINEL-2' and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq 'S2MSI2A')",
    "StageOrder": false,
    "Priority": 1,
    "Status": "paused",
    "NotificationEndpoint": "https://example.com/notification",
    "SubscriptionEvent": [
      "created"
    ],
    "SubmissionDate": "2025-04-10T13:11:11.203179Z",
    "@odata.context": "$metadata#OData.CSC.Subscription"
  },
  {
    "Id": "e9d0b04b-cb58-4963-814c-e6d81be4219e",
    "SubscriptionType": "pull",
    "FilterParam": "Collection/Name eq 'SENTINEL-1' and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq 'IW_SLC__1S')",
    "StageOrder": false,
    "Priority": 1,
    "Status": "running",
    "SubscriptionEvent": [
      "created",
      "modified"
    ],
    "SubmissionDate": "2025-04-10T13:13:51.988546Z",
    "@odata.context": "$metadata#OData.CSC.Subscription"
  }
]

In diesem Beispiel hat der Benutzer zwei Abonnements:

  • ein Push-Abonnement, das created-Produkte verfolgt,

  • ein Pull-Abonnement, das created- und modified-Produkte verfolgt.

Ein Push-Abonnement enthält im Gegensatz zu einem Pull-Abonnement den Schlüssel NotificationEndpoint. Dieser gibt die URL des Endpunkts an, an den Benachrichtigungen gesendet werden.

Weitere Informationen zu Pull-Abonnements finden Sie hier: Pull-Abonnements für den EODATA-Katalog auf CODE-DE-Lab

Wenn Sie derzeit keine Abonnements haben, sollte die Abfrage eine leere Liste zurückgeben:

[]

Beispiel: Abonnements mit Python auflisten

Der folgende vollständige Python-Code listet Abonnements auf:

import requests
import json

access_token = "" # paste token here

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {access_token}",
}

url = "https://catalogue.code-de.org/odata/v1/Subscriptions/Info"

response = requests.get(url=url, headers=headers)

print(f"{response.status_code} {response.reason}\n")
try:
    print(json.dumps(json.loads(response.text), indent=4))
except Exception as e:
    print(e)
    print(response.text)

Dieses Skript:

  • sendet eine HTTP-Anfrage an die angegebene URL.

  • ruft die Ergebnisse ab und zeigt Folgendes an:

    • den Antwortstatuscode, zum Beispiel 200, und die Statusbeschreibung, zum Beispiel OK.

    • eine Leerzeile zur besseren Lesbarkeit.

    • den Antwortcode, falls vorhanden. Gültiges JSON wird zur besseren Lesbarkeit formatiert.

Weisen Sie das nach Voraussetzung Nr. 4 erstellte Keycloak-Token der Variablen access_token zu.

Speichern Sie die Datei als http_request_test_list.py.

Führen Sie das Skript mit folgendem Befehl aus. Wechseln Sie vorher in das Verzeichnis, in dem es liegt:

python3 http_request_test_list.py

Abonnement löschen

Methode 1: Eine HTTP-DELETE-Anfrage senden

Senden Sie eine DELETE-Anfrage an die folgende URL. Ersetzen Sie <<subscription_id>> durch die ID des zu löschenden Abonnements.

https://catalogue.code-de.org/odata/v1/Subscriptions(<<subscription_id>>)

ERINNERUNG: Geben Sie die obligatorischen Header an.

Sie sollten den Antwortstatus 204 No Content erhalten.

Die im Abschnitt Aktuelle Abonnements auflisten beschriebene Auflistung sollte zeigen, dass dieses Abonnement nicht mehr existiert.

Methode 2: Den Abonnementstatus auf cancelled setzen

Dieser Ablauf ist im Abschnitt Status und Endpunkt eines Push-Abonnements ändern beschrieben.

Nächste Schritte

Nach dem Empfang einer Benachrichtigung können Sie das betreffende Produkt herunterladen. Dafür stehen unter anderem folgende Möglichkeiten zur Verfügung:

Die folgenden Artikel behandeln einige Möglichkeiten zur Verarbeitung von EODATA:

Still need help?
If this article does not answer all of your questions, the support team will help you.
Contact support