Quellspezifikation für Self-Serve-Quellen konfigurieren (Batch-SDK)
Quellenspezifikationen enthalten quellenspezifische Informationen, darunter Attribute, die sich auf die Kategorie einer Quelle, den Beta-Status und das Katalogsymbol beziehen. Sie enthalten auch hilfreiche Informationen wie URL-Parameter, Inhalte, Kopfzeile und Zeitplan. Quellenspezifikationen beschreiben außerdem das Schema der Parameter, die zum Erstellen einer Quellverbindung aus einer Basisverbindung erforderlich sind. Das Schema ist erforderlich, um eine Quellverbindung zu erstellen.
Ein Beispiel für eine vollständig angegebene Quellspezifikation finden Sie im Anhang.
"sourceSpec": {
"attributes": {
"uiAttributes": {
"isSource": true,
"isPreview": true,
"isBeta": true,
"category": {
"key": "protocols"
},
"icon": {
"key": "genericRestIcon"
},
"description": {
"key": "genericRestDescription"
},
"label": {
"key": "genericRestLabel"
}
},
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Defines static and user input parameters to fetch resource values.",
"properties": {
"urlParams": {
"type": "object",
"properties": {
"host": {
"type": "string",
"description": "Enter resource url host path.",
"example": "https://{domain}.api.mailchimp.com"
},
"path": {
"type": "string",
"description": "Enter resource path",
"example": "/3.0/reports/campaignId/email-activity"
},
"method": {
"type": "string",
"description": "HTTP method type.",
"enum": [
"GET",
"POST"
]
},
"queryParams": {
"type": "object",
"description": "The query parameters in json format",
}
},
"required": [
"host",
"path",
"method"
]
},
"headerParams": {
"type": "object",
"description": "The header parameters in json format",
},
"contentPath": {
"type": "object",
"description": "The parameters required for main collection content.",
"properties": {
"path": {
"description": "The path to the main content.",
"type": "string",
"example": "$.emails"
},
"skipAttributes": {
"type": "array",
"description": "The list of attributes that needs to be skipped while fattening the array.",
"example": "[total_items]",
"items": {
"type": "string"
}
},
"keepAttributes": {
"type": "array",
"description": "The list of attributes that needs to be kept while fattening the array.",
"example": "[total_items]",
"items": {
"type": "string"
}
},
"overrideWrapperAttribute": {
"type": "string",
"description": "The new name to be used for the root content path node.",
"example": "email"
}
},
"required": [
"path"
]
},
"explodeEntityPath": {
"type": "object",
"description": "The parameters required for the sub-array content.",
"properties": {
"path": {
"description": "The path to the sub-array content.",
"type": "string",
"example": "$.email.activity"
},
"skipAttributes": {
"type": "array",
"description": "The list of attributes that needs to be skipped while fattening sub-array.",
"example": "[total_items]",
"items": {
"type": "string"
}
},
"keepAttributes": {
"type": "array",
"description": "The list of attributes that needs to be kept while fattening the sub-array.",
"example": "[total_items]",
"items": {
"type": "string"
}
},
"overrideWrapperAttribute": {
"type": "string",
"description": "The new name to be used for the root content path node.",
"example": "activity"
}
},
"required": [
"path"
]
},
"paginationParams": {
"type": "object",
"description": "The parameters required to fetch data using pagination.",
"properties": {
"type": {
"description": "The pagination fetch type.",
"type": "string",
"enum": [
"OFFSET",
"POINTER"
]
},
"limitName": {
"type": "string",
"description": "The limit property name",
"example": "limit or count"
},
"limitValue": {
"type": "integer",
"description": "The number of records to fetch per page.",
"example": "limit=10 or count=10"
},
"offsetName": {
"type": "string",
"description": "The offset property name",
"example": "offset"
},
"pointerPath": {
"type": "string",
"description": "The path to pointer property",
"example": "$.paging.next"
}
},
"required": [
"type",
"limitName",
"limitValue"
]
},
"scheduleParams": {
"type": "object",
"description": "The parameters required to fetch data for batch schedule.",
"properties": {
"scheduleStartParamName": {
"type": "string",
"description": "The order property name to get the order by date."
},
"scheduleEndParamName": {
"type": "string",
"description": "The order property name to get the order by date."
},
"scheduleStartParamFormat": {
"type": "string",
"description": "The order property name to get the order by date.",
"example": "yyyy-MM-ddTHH:mm:ssZ"
},
"scheduleEndParamFormat": {
"type": "string",
"description": "The order property name to get the order by date.",
"example": "yyyy-MM-ddTHH:mm:ssZ"
}
},
"required": [
"scheduleStartParamName",
"scheduleEndParamName"
]
}
},
"required": [
"urlParams",
"contentPath",
"paginationParams",
"scheduleParams"
]
}
},
}
sourceSpec.attributes
sourceSpec.attributes.uiAttributes
sourceSpec.attributes.uiAttributes.isBeta
true
false
sourceSpec.attributes.uiAttributes.category
advertising
crm
customer success
database
ecommerce
marketing automation
payments
protocols
sourceSpec.attributes.uiAttributes.icon
mailchimp-icon.svg
sourceSpec.attributes.uiAttributes.description
sourceSpec.attributes.uiAttributes.label
sourceSpec.attributes.spec.properties.urlParams
sourceSpec.attributes.spec.properties.urlParams.properties.path
/3.0/reports/${campaignId}/email-activity
sourceSpec.attributes.spec.properties.urlParams.properties.method
GET
, POST
sourceSpec.attributes.spec.properties.urlParams.properties.queryParams
${USER_PARAMETER}
."queryParams" : {"key" : "value", "key1" : "value1"}
wird wie folgt an die Quell-URL angehängt: /?key=value&key1=value1
sourceSpec.attributes.spec.properties.spec.properties.headerParams
"headerParams" : {"Content-Type" : "application/json", "x-api-key" : "key"}
sourceSpec.attributes.spec.properties.bodyParams
sourceSpec.attributes.spec.properties.contentPath
sourceSpec.attributes.spec.properties.contentPath.path
$.emails
sourceSpec.attributes.spec.properties.contentPath.skipAttributes
[total_items]
sourceSpec.attributes.spec.properties.contentPath.keepAttributes
[total_items]
sourceSpec.attributes.spec.properties.contentPath.overrideWrapperAttribute
contentPath
angegeben haben, zu überschreiben.email
sourceSpec.attributes.spec.properties.explodeEntityPath
sourceSpec.attributes.spec.properties.explodeEntityPath.path
$.email.activity
sourceSpec.attributes.spec.properties.explodeEntityPath.skipAttributes
[total_items]
sourceSpec.attributes.spec.properties.explodeEntityPath.keepAttributes
[total_items]
sourceSpec.attributes.spec.properties.explodeEntityPath.overrideWrapperAttribute
explodeEntityPath
angegebenen Wert des Attributnamens zu überschreiben.activity
sourceSpec.attributes.spec.properties.paginationParams
sourceSpec.attributes.spec.properties.paginationParams.type
OFFSET
: Dieser Paginierungstyp ermöglicht es, die Ergebnisse zu analysieren, indem Sie einen Index, von dem aus das resultierende Array gestartet werden soll, und eine Begrenzung dafür angeben, wie viele Ergebnisse zurückgegeben werden.POINTER
: Dieser Paginierungstyp ermöglicht es, mit einerpointer
-Variablen auf ein bestimmtes Element zu verweisen, das mit einer Anfrage gesendet werden muss. Die Seitennummerierung des Zeigertyps erfordert den Pfad in der Payload, der auf die nächste Seite verweist.CONTINUATION_TOKEN
: Mit diesem Paginierungstyp können Sie Ihre Abfrage- oder Kopfzeilenparameter mit einem Fortsetzung-Token anhängen, um die verbleibenden Rückgabedaten aus Ihrer Quelle abzurufen, die ursprünglich aufgrund eines vorab festgelegten Maximalwerts nicht zurückgegeben wurden.PAGE
: Mit diesem Paginierungstyp können Sie Ihren Abfrageparameter mit einem Paging-Parameter anhängen, um durch die Rückgabedaten nach Seiten zu navigieren, beginnend bei Seite Null.NONE
: Dieser Paginierungstyp kann für Quellen verwendet werden, die keinen der verfügbaren Paginierungstypen unterstützen. PaginierungstypNONE
gibt die gesamten Antwortdaten nach einer Anforderung zurück.
sourceSpec.attributes.spec.properties.paginationParams.limitName
limit
oder count
sourceSpec.attributes.spec.properties.paginationParams.limitValue
limit=10
oder count=10
sourceSpec.attributes.spec.properties.paginationParams.offSetName
offset
festgesetzt ist.offset
sourceSpec.attributes.spec.properties.paginationParams.pointerPath
pointer
eingestellt ist.pointer
sourceSpec.attributes.spec.properties.scheduleParams
startTime
und endTime
, mit denen Sie bestimmte Zeitintervalle für Batch-Ausführungen festlegen können. Dadurch wird sichergestellt, dass in einer vorherigen Batch-Ausführung abgerufene Datensätze nicht erneut abgerufen werden.sourceSpec.attributes.spec.properties.scheduleParams.scheduleStartParamName
since_last_changed
sourceSpec.attributes.spec.properties.scheduleParams.scheduleEndParamName
before_last_changed
sourceSpec.attributes.spec.properties.scheduleParams.scheduleStartParamFormat
scheduleStartParamName
.yyyy-MM-ddTHH:mm:ssZ
sourceSpec.attributes.spec.properties.scheduleParams.scheduleEndParamFormat
scheduleEndParamName
.yyyy-MM-ddTHH:mm:ssZ
sourceSpec.spec.properties
spec.properties
.Zusätzliche Ressourcen appendix
In den folgenden Abschnitten finden Sie Informationen zu zusätzlichen Konfigurationen, die Sie an Ihrem sourceSpec
vornehmen können, einschließlich erweiterter Planung und benutzerdefinierter Schemata.
Beispiel für Inhaltspfad content-path
Das Folgende ist ein Beispiel für den Inhalt der contentPath
-Eigenschaft in einer MailChimp Members-Verbindungsspezifikation.
"contentPath": {
"path": "$.members",
"skipAttributes": [
"_links",
"total_items",
"list_id"
],
"overrideWrapperAttribute": "member"
}
spec.properties
-Beispiel für Benutzereingabe user-input
Das Folgende ist ein Beispiel für ein vom Benutzer bereitgestelltes spec.properties
unter Verwendung einer MailChimp Members-Verbindungsspezifikation.
In diesem Beispiel wird listId
als Teil von urlParams.path
bereitgestellt. Wenn Sie listId
von einem Kunden abrufen müssen, müssen Sie es auch als Teil von spec.properties
definieren.
"urlParams": {
"path": "/3.0/lists/${listId}/members",
"method": "GET"
}
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Define user input parameters to fetch resource values.",
"properties": {
"listId": {
"type": "string",
"description": "listId for which members need to fetch."
}
}
}
Beispiel für Quellspezifikation source-spec
Im Folgenden finden Sie eine abgeschlossene Quellspezifikation mit MailChimp Members:
"sourceSpec": {
"attributes": {
"uiAttributes": {
"isSource": true,
"isPreview": true,
"isBeta": true,
"category": {
"key": "marketingAutomation"
},
"icon": {
"key": "mailchimpMembersIcon"
},
"description": {
"key": "mailchimpMembersDescription"
},
"label": {
"key": "mailchimpMembersLabel"
}
},
"urlParams": {
"host": "https://{domain}.api.mailchimp.com",
"path": "/3.0/lists/${listId}/members",
"method": "GET"
},
"contentPath": {
"path": "$.members",
"skipAttributes": [
"_links",
"total_items",
"list_id"
],
"overrideWrapperAttribute": "member"
},
"paginationParams": {
"type": "OFFSET",
"limitName": "count",
"limitValue": "100",
"offSetName": "offset"
},
"scheduleParams": {
"scheduleStartParamName": "since_last_changed",
"scheduleEndParamName": "before_last_changed",
"scheduleStartParamFormat": "yyyy-MM-ddTHH:mm:ss:fffffffK",
"scheduleEndParamFormat": "yyyy-MM-ddTHH:mm:ss:fffffffK"
}
},
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Define user input parameters to fetch resource values.",
"properties": {
"listId": {
"type": "string",
"description": "listId for which members need to fetch."
}
}
}
}
Konfigurieren verschiedener Paginierungstypen für Ihre Quelle pagination
Im Folgenden finden Sie Beispiele für andere Paginierungstypen, die von Self-Serve-Quellen (Batch SDK) unterstützt werden:
Mit diesem Paginierungstyp können Sie die Ergebnisse analysieren, indem Sie einen Index angeben, von dem aus das resultierende Array gestartet werden soll, und eine Begrenzung dafür, wie viele Ergebnisse zurückgegeben werden. Beispiel:
code language-json |
---|
|
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 | |
---|---|
Eigenschaft | Beschreibung |
type |
Die Art der Paginierung, die zum Zurückgeben von Daten verwendet wird. |
limitName |
Name des Limits, mit dem die API die Anzahl der Datensätze angeben kann, die auf einer Seite abgerufen werden sollen. |
limitValue |
Anzahl der Datensätze, die auf einer Seite abgerufen werden sollen. |
offSetName |
Name des Offset-Attributs. Ist erforderlich, wenn der Paginierungstyp auf offset festgesetzt ist. |
endConditionName |
Ein benutzerdefinierter Wert, der die Bedingung anzeigt, die die Paginierungsschleife in der nächsten HTTP-Anforderung beendet. Sie müssen den Attributnamen angeben, unter dem die Endbedingung platziert werden soll. |
endConditionValue |
Der Attributwert, auf den Sie die Endbedingung stellen möchten. |
Mit diesem Paginierungstyp können Sie eine pointer
-Variable verwenden, um auf ein bestimmtes Element zu verweisen, das mit einer Anfrage gesendet werden muss. Die Seitennummerierung des Zeigertyps erfordert den Pfad in der Payload, der auf die nächste Seite verweist. Beispiel:
code language-json |
---|
|
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 | |
---|---|
Eigenschaft | Beschreibung |
type |
Die Art der Paginierung, die zum Zurückgeben von Daten verwendet wird. |
limitName |
Name des Limits, mit dem die API die Anzahl der Datensätze angeben kann, die auf einer Seite abgerufen werden sollen. |
limitValue |
Anzahl der Datensätze, die auf einer Seite abgerufen werden sollen. |
pointerPath |
Der Zeiger-Attributname. Dies erfordert den JSON-Pfad zum -Attribut, das auf die nächste Seite verweist. |
Ein Fortsetzung-Token-Typ der Paginierung gibt ein Zeichenfolgen-Token zurück, das das Vorhandensein weiterer Elemente angibt, die aufgrund einer vorab festgelegten maximalen Anzahl von Elementen, die in einer einzelnen Antwort zurückgegeben werden können, nicht zurückgegeben werden konnten.
Eine Quelle, die den Weiterleitungstoken-Typ der Paginierung unterstützt, kann einen Paginierungsparameter aufweisen, der Folgendem ähnelt:
code language-json |
---|
|
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 | |
---|---|
Eigenschaft | Beschreibung |
type |
Die Art der Paginierung, die zum Zurückgeben von Daten verwendet wird. |
continuationTokenPath |
Der Wert, der an die Abfrageparameter angehängt werden muss, um zur nächsten Seite der zurückgegebenen Ergebnisse zu wechseln. |
parameterType |
Die Eigenschaft parameterType definiert, wo die parameterName hinzugefügt werden muss. Mit dem Typ QUERYPARAM können Sie Ihre Abfrage mit dem parameterName anhängen. Mit dem HEADERPARAM können Sie Ihre parameterName zu Ihrer Header-Anfrage hinzufügen. |
parameterName |
Der Name des Parameters, der zum Integrieren des Fortsetzung-Tokens verwendet wird. Das Format lautet wie folgt: {PARAMETER_NAME}={CONTINUATION_TOKEN} . |
delayRequestMillis |
Mit der Eigenschaft delayRequestMillis bei der Paginierung können Sie die Rate der Anforderungen steuern, die an Ihre Quelle gesendet werden. Einige Quellen können die Anzahl der Anfragen begrenzen, die Sie pro Minute stellen können. Beispielsweise erlaubt Zendesk eine Begrenzung von 100 Anfragen pro Minute und die Definition von delayRequestMillis auf 850 Ihnen, die Quelle so zu konfigurieren, dass sie nur 80 Anfragen pro Minute und damit deutlich unter dem Schwellenwert von 100 Anfragen pro Minute sendet. |
Im Folgenden finden Sie ein Beispiel für eine Antwort, die mit dem Paginierungstyp Fortsetzung-Token zurückgegeben wird:
code language-json |
---|
|
Mit dem Paginierungstyp PAGE
können Sie durch die Rückgabedaten nach der Anzahl der Seiten, die bei null beginnen, navigieren. Bei Verwendung von Paginierung vom Typ PAGE
müssen Sie die Anzahl der Datensätze angeben, die auf einer einzelnen Seite angegeben werden.
code language-json |
---|
|
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 layout-auto | |
---|---|
Eigenschaft | Beschreibung |
type |
Die Art der Paginierung, die zum Zurückgeben von Daten verwendet wird. |
limitName |
Name des Limits, mit dem die API die Anzahl der Datensätze angeben kann, die auf einer Seite abgerufen werden sollen. |
limitValue |
Anzahl der Datensätze, die auf einer Seite abgerufen werden sollen. |
initialPageIndex |
(Optional) Der anfängliche Seitenindex definiert die Seitenzahl, von der aus die Paginierung beginnt. Dieses Feld kann für Quellen verwendet werden, bei denen die Paginierung nicht von 0 beginnt. Wenn nicht angegeben, wird der anfängliche Seitenindex standardmäßig auf 0 gesetzt. Dieses Feld erwartet eine Ganzzahl. |
endPageIndex |
(Optional) Mit dem Endseitenindex können Sie eine Endbedingung erstellen und die Paginierung stoppen. Dieses Feld kann verwendet werden, wenn keine standardmäßigen Endbedingungen zum Anhalten der Paginierung verfügbar sind. Dieses Feld kann auch verwendet werden, wenn die Anzahl der aufzunehmenden Seiten oder die letzte Seitenzahl über die Antwortheader angegeben wird, was bei Verwendung von Paginierung vom Typ PAGE häufig vorkommt. Der Wert für den Endseitenindex kann entweder die letzte Seitennummer oder ein Ausdruckswert vom Typ Zeichenfolge aus dem Antwortheader sein. Sie können beispielsweise headers.x-pagecount verwenden, um dem Wert x-pagecount aus den Antwortheadern den Endseitenindex zuzuweisen. Hinweis: x-pagecount ist ein obligatorischer Antwortheader für einige Quellen und enthält die Wertanzahl der aufzunehmenden Seiten. |
pageParamName |
Der Name des Parameters, der an Abfrageparameter angehängt werden muss, um durch verschiedene Seiten der Rückgabedaten zu navigieren. Beispielsweise gibt https://abc.com?pageIndex=1 die zweite Seite der Rückgabe-Payload einer API zurück. |
maximumRequest |
Die maximale Anzahl von Anforderungen, die eine Quelle für eine bestimmte inkrementelle Ausführung stellen kann. Der aktuelle Standardwert ist 10000. |
Der Paginierungstyp NONE
kann für Quellen verwendet werden, die keinen der verfügbaren Paginierungstypen unterstützen. Quellen, die den Paginierungstyp "NONE
"verwenden, geben einfach alle abrufbaren Datensätze zurück, wenn eine GET angefordert wird.
code language-json |
---|
|
Erweiterte Planung für Self-Serve-Quellen (Batch-SDK)
Konfigurieren Sie den inkrementellen und Aufstockungsplan Ihrer Quelle mithilfe der erweiterten Planung. Mit der Eigenschaft incremental
können Sie einen Zeitplan konfigurieren, in dem Ihre Quelle nur neue oder geänderte Datensätze erfasst, während Sie mit der Eigenschaft backfill
einen Zeitplan für die Erfassung historischer Daten erstellen können.
Mit der erweiterten Planung können Sie Quellausdrücke und -funktionen verwenden, um inkrementelle Zeitpläne und Aufstockungszeitpläne zu konfigurieren. Im folgenden Beispiel erfordert die Quelle Zendesk, dass der inkrementelle Zeitplan als type:user updated > {START_TIME} updated < {END_TIME}
und die Aufstockung als type:user updated < {END_TIME}
formatiert ist.
"scheduleParams": {
"type": "ADVANCE",
"paramFormat": "yyyy-MM-ddTHH:mm:ssK",
"incremental": "type:user updated > {START_TIME} updated < {END_TIME}",
"backfill": "type:user updated < {END_TIME}"
}
scheduleParams.type
ADVANCE
, um den erweiterten Planungstyp zu verwenden.scheduleParams.paramFormat
scheduleStartParamFormat
- und scheduleEndParamFormat
-Werten Ihrer Quelle übereinstimmen.scheduleParams.incremental
scheduleParams.backfill
Nachdem Sie die erweiterte Planung konfiguriert haben, müssen Sie je nach Unterstützung Ihrer jeweiligen Quelle im Abschnitt "URL-, Text- oder Kopfzeilenparameter"auf Ihr scheduleParams
verweisen. Im folgenden Beispiel ist {SCHEDULE_QUERY}
ein Platzhalter, mit dem festgelegt wird, wo die Planungsausdrücke für Inkrementelle und Aufstockung verwendet werden. Bei einer Zendesk -Quelle wird query
in der queryParams
verwendet, um die erweiterte Planung anzugeben.
"urlParams": {
"path": "/api/v2/search/export@{if(empty(coalesce(pipeline()?.parameters?.ingestionStart,'')),'?query=type:user&filter[type]=user&','')}",
"method": "GET",
"queryParams": {
"query": "{SCHEDULE_QUERY}",
"filter[type]": "user"
}
}
Fügen Sie ein benutzerdefiniertes Schema hinzu, um die dynamischen Attribute Ihrer Quelle zu definieren
Sie können ein benutzerdefiniertes Schema zu Ihrem "sourceSpec
" hinzufügen, um alle für Ihre Quelle erforderlichen Attribute zu definieren, einschließlich aller erforderlichen dynamischen Attribute. Sie können die entsprechende Verbindungsspezifikation Ihrer Quelle aktualisieren, indem Sie eine PUT-Anfrage an den /connectionSpecs
-Endpunkt der Flow Service -API richten und Ihr benutzerdefiniertes Schema im Abschnitt sourceSpec
Ihrer Verbindungsspezifikation angeben.
Im Folgenden finden Sie ein Beispiel für ein benutzerdefiniertes Schema, das Sie zur Verbindungsspezifikation Ihrer Quelle hinzufügen können:
"schema": {
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"organization_id": {
"type": "integer",
"minimum": -9007199254740992,
"maximum": 9007199254740991
}
"active": {
"type": "boolean"
},
"created_at": {
"type": "string"
},
"email": {
"type": "string"
},
"iana_time_zone": {
"type": "string"
},
"id": {
"type": "integer"
},
"locale": {
"type": "string"
},
"locale_id": {
"type": "integer"
},
"moderator": {
"type": "boolean"
},
"name": {
"type": "string"
},
"only_private_comments": {
"type": "boolean"
},
"report_csv": {
"type": "boolean"
},
"restricted_agent": {
"type": "boolean"
},
"result_type": {
"type": "string"
},
"role": {
"type": "integer"
},
"shared": {
"type": "boolean"
},
"shared_agent": {
"type": "boolean"
},
"suspended": {
"type": "boolean"
},
"ticket_restriction": {
"type": "string"
},
"time_zone": {
"type": "string"
},
"two_factor_auth_enabled": {
"type": "boolean"
},
"updated_at": {
"type": "string"
},
"url": {
"type": "string"
},
"verified": {
"type": "boolean"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
}
Nächste Schritte
Wenn Ihre Quellspezifikationen ausgefüllt sind, können Sie mit der Konfiguration der Erkundungsspezifikationen für die Quelle fortfahren, die Sie in Platform integrieren möchten. Weitere Informationen finden Sie im Dokument unter Konfigurieren von Erkundungsspezifikationen .