Credentials

Support DQE
Support DQE
  • Aktualisiert
Credentials - DQE One Standalone API

Erstellen, prüfen und löschen Sie die Verbindungen, über die DQE One Standalone auf Ihre Daten zugreift: Salesforce, Microsoft Dynamics 365, PostgreSQL, Snowflake, BigQuery und SFTP.

{DOMAIN} ist der Hostname Ihres eigenen DQE One Standalone Servers — er wird selbst gehostet, daher hängt dieser Wert von Ihrer Bereitstellung ab. {EMAIL} ist Ihr DQE One Login und {API_TOKEN} der Token, der unter My Account > API Token generiert wird.
Zugehörige Dokumentation: DQE One Standalone API — Introduction, Files, Credentials, Processes, Runs & results, RuleSets.
Geheimnisse: Die API gibt niemals ein Passwort, einen Schlüssel oder einen Token zurück. getCredential zeigt nur den Login an. Beim Erstellen eines Credentials werden Geheimnisse übertragen: Verwenden Sie immer HTTPS und vermeiden Sie es, echte Geheimnisse in gemeinsam genutzte Tools einzufügen.
Credential erstellen - DQE One Standalone API

Erstellt eine Verbindung. Bei den meisten Typen testet DQE One zuerst die Verbindung, sodass ein Credential, das keine Verbindung herstellen kann, nie gespeichert wird.

createCredential

Anfrage

Senden Sie einen JSON-Body. Welche Schlüssel Sie angeben müssen, hängt von type ab (Tabelle unten).

POSThttps://{DOMAIN}/api/Cred/create

Codebeispiele

Credential erstellen

curl -u "{EMAIL}:{API_TOKEN}" -X POST \ -H "Content-Type: application/json" \ -d '{ "type": "postgres", "endpoint": "db.acme.com", "port": 5432, "login": "dqe", "password": "s3cret", "database": "crm" }' \ "https://{DOMAIN}/api/Cred/create"
fetch("https://{DOMAIN}/api/Cred/create", { method: "POST", headers: { "Authorization": "Basic " + btoa("{EMAIL}:{API_TOKEN}"), "Content-Type": "application/json" }, body: JSON.stringify({ "type": "postgres", "endpoint": "db.acme.com", "port": 5432, "login": "dqe", "password": "s3cret", "database": "crm" }) }) .then(r => r.text()) .then(data => console.log(data));
import requests response = requests.post( "https://{DOMAIN}/api/Cred/create", auth=("{EMAIL}", "{API_TOKEN}"), json={"type": "postgres", "endpoint": "db.acme.com", "port": 5432, "login": "dqe", "password": "s3cret", "database": "crm"}, ) print(response.status_code, response.text)
<?php $ch = curl_init("https://{DOMAIN}/api/Cred/create"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_USERPWD, "{EMAIL}:{API_TOKEN}"); $data = ['type' => 'postgres', 'endpoint' => 'db.acme.com', 'port' => 5432, 'login' => 'dqe', 'password' => 's3cret', 'database' => 'crm']; curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $status . " " . $response;
const axios = require('axios'); axios({ method: "post", url: "https://{DOMAIN}/api/Cred/create", auth: { username: "{EMAIL}", password: "{API_TOKEN}" }, data: { "type": "postgres", "endpoint": "db.acme.com", "port": 5432, "login": "dqe", "password": "s3cret", "database": "crm" } }) .then(res => console.log(res.status, res.data)) .catch(err => console.log(err.response ? err.response.status : err.message, err.response && err.response.data));
import java.net.URI; import java.net.http.*; import java.util.Base64; String auth = Base64.getEncoder().encodeToString("{EMAIL}:{API_TOKEN}".getBytes()); String body = "{\"type\":\"postgres\",\"endpoint\":\"db.acme.com\",\"port\":5432,\"login\":\"dqe\",\"password\":\"s3cret\",\"database\":\"crm\"}"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{DOMAIN}/api/Cred/create")) .header("Authorization", "Basic " + auth) .header("Content-Type", "application/json") .method("POST", HttpRequest.BodyPublishers.ofString(body)) .build(); HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode() + " " + response.body());
using System.Net.Http; using System.Net.Http.Headers; using System.Text; using var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("{EMAIL}:{API_TOKEN}"))); using var request = new HttpRequestMessage(HttpMethod.Post, "https://{DOMAIN}/api/Cred/create"); request.Content = new StringContent("{\"type\":\"postgres\",\"endpoint\":\"db.acme.com\",\"port\":5432,\"login\":\"dqe\",\"password\":\"s3cret\",\"database\":\"crm\"}", Encoding.UTF8, "application/json"); var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode + " " + await response.Content.ReadAsStringAsync());
package main import ( "bytes" "fmt" "io" "net/http" ) func main() { body := []byte(`{"type":"postgres","endpoint":"db.acme.com","port":5432,"login":"dqe","password":"s3cret","database":"crm"}`) req, _ := http.NewRequest("POST", "https://{DOMAIN}/api/Cred/create", bytes.NewBuffer(body)) req.SetBasicAuth("{EMAIL}", "{API_TOKEN}") req.Header.Set("Content-Type", "application/json") resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close() out, _ := io.ReadAll(resp.Body) fmt.Println(resp.StatusCode, string(out)) }

Parameter

Feld Beschreibung Typ Pflicht / Opt.
type
Werte: salesforce
String Pflicht
login Salesforce-Benutzername (JWT-Bearer-Flow). String Pflicht
endpoint Instanz-URL, z. B. https://acme.my.salesforce.com. Ein abschließendes '/' wird entfernt. String Pflicht
client_id Consumer Key der Connected App. String Pflicht
pvt Privater PEM-Schlüssel, der zum Zertifikat der Connected App passt. String Pflicht
Authentifizierung: HTTP Basic — Ihre DQE One E-Mail-Adresse und Ihr API token (My Account > API Token). Siehe den Artikel Introduction.

Erforderliche Schlüssel pro type

type Erforderliche Schlüssel Hinweise
salesforce login, endpoint, client_id, pvt JWT-Bearer-Flow: endpoint ist die Instanz-URL (ein abschließendes / wird entfernt), pvt der private PEM-Schlüssel des Zertifikats der Connected App.
dynamics client_id, client_secret, scope, tenant Erfordert eine OAuth-Anmeldung im Browser — antwortet mit pending (siehe unten).
snowflake endpoint, client_id, client_secret Erfordert eine OAuth-Anmeldung im Browser — antwortet mit pending. Processes auf Snowflake scheitern derzeit an der Validierung.
postgres endpoint, port, login, password, database endpoint ist der Hostname.
sftp endpoint, port, login, password Optional pvt = privater Schlüssel; password ist dann die Passphrase des Schlüssels. Der Host muss in der Liste AUTHORIZED_SFTP_HOSTS des Servers stehen (exakte Übereinstimmung).
bigquery login, email, id, key_id, pvt Service-Konto: login = Client-ID, email = Client-E-Mail, id = Projekt-ID, key_id und pvt = ID und Inhalt des privaten Schlüssels.

Dynamics und Snowflake: die pending-Antwort

Diese beiden Typen erfordern eine OAuth-Anmeldung in einem Browser. Die API speichert Ihre Einstellungen für 5 Minuten und antwortet mit HTTP 201 und {"status":"pending","url":"https://{DOMAIN}/login/?token=..."}. Eine Person muss diese URL öffnen und sich anmelden; es gibt keinen API-Aufruf, um den Vorgang abzuschließen. Fragen Sie listCredentials regelmäßig ab, bis das Credential erscheint.

Zu name

Ein Schlüssel name wird akzeptiert, aber ignoriert: Die Bezeichnung wird aus der Verbindung abgeleitet — bei Salesforce “<org name> (<org id>)”, bei PostgreSQL und SFTP der Host, bei BigQuery die Projekt-ID.

Antwort

Erstellt (oder OAuth ausstehend). HTTP-Status 201.

Schlüssel Beschreibung Typ
status
Werte: success
String
id Integer

Antwortbeispiel

Beispielantwort
{ "status": "success", "id": 3 }

Fehler

HTTP Body / Bedeutung
400 Keys endpoint,port need to be set for type postgres
401 Unauthorized
500 Failed to create credentials.

Ein fehlgeschlagener Verbindungstest (falsches Passwort, nicht erreichbarer oder nicht autorisierter Host, ungültiger Schlüssel) wird immer mit derselben generischen Meldung Failed to create credentials. (HTTP 500) gemeldet. Prüfen Sie Host, Port und Geheimnisse und bei SFTP, ob der Host auf dem Server zugelassen ist.

API testen

Klicken Sie auf die Schaltfläche unten, um diesen Endpoint live in Ihrem Browser zu testen.

Hinweis: Diese Konsole sendet aus Ihrem Browser eine echte Anfrage an Ihren eigenen Server, mit Ihrem echten API token. Das Erstellen eines Credentials testet eine echte Verbindung zu Ihrer Datenquelle.
Konsole öffnen
Credentials auflisten - DQE One Standalone API

Listet die ID und die Bezeichnung Ihrer Credentials auf.

listCredentials

Anfrage

Senden Sie eine GET-Anfrage. Es gibt keine Parameter.

GEThttps://{DOMAIN}/api/Cred/list

Codebeispiele

Ihre Credentials auflisten

curl -u "{EMAIL}:{API_TOKEN}" \ "https://{DOMAIN}/api/Cred/list"
fetch("https://{DOMAIN}/api/Cred/list", { method: "GET", headers: { "Authorization": "Basic " + btoa("{EMAIL}:{API_TOKEN}") } }) .then(r => r.text()) .then(data => console.log(data));
import requests response = requests.get( "https://{DOMAIN}/api/Cred/list", auth=("{EMAIL}", "{API_TOKEN}"), ) print(response.status_code, response.text)
<?php $ch = curl_init("https://{DOMAIN}/api/Cred/list"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_USERPWD, "{EMAIL}:{API_TOKEN}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $status . " " . $response;
const axios = require('axios'); axios({ method: "get", url: "https://{DOMAIN}/api/Cred/list", auth: { username: "{EMAIL}", password: "{API_TOKEN}" } }) .then(res => console.log(res.status, res.data)) .catch(err => console.log(err.response ? err.response.status : err.message, err.response && err.response.data));
import java.net.URI; import java.net.http.*; import java.util.Base64; String auth = Base64.getEncoder().encodeToString("{EMAIL}:{API_TOKEN}".getBytes()); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{DOMAIN}/api/Cred/list")) .header("Authorization", "Basic " + auth) .method("GET", HttpRequest.BodyPublishers.noBody()) .build(); HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode() + " " + response.body());
using System.Net.Http; using System.Net.Http.Headers; using System.Text; using var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("{EMAIL}:{API_TOKEN}"))); using var request = new HttpRequestMessage(HttpMethod.Get, "https://{DOMAIN}/api/Cred/list"); var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode + " " + await response.Content.ReadAsStringAsync());
package main import ( "fmt" "io" "net/http" ) func main() { req, _ := http.NewRequest("GET", "https://{DOMAIN}/api/Cred/list", nil) req.SetBasicAuth("{EMAIL}", "{API_TOKEN}") resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close() out, _ := io.ReadAll(resp.Body) fmt.Println(resp.StatusCode, string(out)) }

Parameter

Dieser Endpoint benötigt keine Parameter.

Authentifizierung: HTTP Basic — Ihre DQE One E-Mail-Adresse und Ihr API token (My Account > API Token). Siehe den Artikel Introduction.

Antwort

Array von Credentials. HTTP-Status 200.

Der Body ist ein JSON-Array; jedes Element enthält diese Schlüssel.

Schlüssel Beschreibung Typ
id Integer
name Aus der Verbindung abgeleitete Bezeichnung (siehe den Artikel Credentials). String

Antwortbeispiel

Beispielantwort
[ { "id": 3, "name": "db.acme.com" } ]

Fehler

HTTP Body / Bedeutung
401 Unauthorized

API testen

Klicken Sie auf die Schaltfläche unten, um diesen Endpoint live in Ihrem Browser zu testen.

Hinweis: Diese Konsole sendet aus Ihrem Browser eine echte Anfrage an Ihren eigenen Server, mit Ihrem echten API token.
Konsole öffnen
Credential abrufen - DQE One Standalone API

Gibt die Metadaten eines Credentials zurück und ob es sich noch verbinden lässt.

getCredential

Anfrage

Senden Sie eine GET-Anfrage mit der Credential-ID.

Live-Test bei jedem Aufruf: status wird jedes Mal berechnet, indem tatsächlich eine Verbindung zur Datenquelle hergestellt wird (valid, wenn die Verbindung gelingt, sonst expired); dieser Aufruf kann daher langsam sein. login ist der entschlüsselte Login; bei Typen ohne Login ist es die client_id.
GEThttps://{DOMAIN}/api/Cred/get?id={id}

Codebeispiele

Credential abrufen

curl -u "{EMAIL}:{API_TOKEN}" \ "https://{DOMAIN}/api/Cred/get?id=3"
fetch("https://{DOMAIN}/api/Cred/get?id=3", { method: "GET", headers: { "Authorization": "Basic " + btoa("{EMAIL}:{API_TOKEN}") } }) .then(r => r.text()) .then(data => console.log(data));
import requests response = requests.get( "https://{DOMAIN}/api/Cred/get", auth=("{EMAIL}", "{API_TOKEN}"), params={"id": "3"}, ) print(response.status_code, response.text)
<?php $ch = curl_init("https://{DOMAIN}/api/Cred/get?id=3"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_USERPWD, "{EMAIL}:{API_TOKEN}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $status . " " . $response;
const axios = require('axios'); axios({ method: "get", url: "https://{DOMAIN}/api/Cred/get", auth: { username: "{EMAIL}", password: "{API_TOKEN}" }, params: { "id": "3" } }) .then(res => console.log(res.status, res.data)) .catch(err => console.log(err.response ? err.response.status : err.message, err.response && err.response.data));
import java.net.URI; import java.net.http.*; import java.util.Base64; String auth = Base64.getEncoder().encodeToString("{EMAIL}:{API_TOKEN}".getBytes()); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{DOMAIN}/api/Cred/get?id=3")) .header("Authorization", "Basic " + auth) .method("GET", HttpRequest.BodyPublishers.noBody()) .build(); HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode() + " " + response.body());
using System.Net.Http; using System.Net.Http.Headers; using System.Text; using var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("{EMAIL}:{API_TOKEN}"))); using var request = new HttpRequestMessage(HttpMethod.Get, "https://{DOMAIN}/api/Cred/get?id=3"); var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode + " " + await response.Content.ReadAsStringAsync());
package main import ( "fmt" "io" "net/http" ) func main() { req, _ := http.NewRequest("GET", "https://{DOMAIN}/api/Cred/get?id=3", nil) req.SetBasicAuth("{EMAIL}", "{API_TOKEN}") resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close() out, _ := io.ReadAll(resp.Body) fmt.Println(resp.StatusCode, string(out)) }

Parameter

Feld Beschreibung Typ Pflicht / Opt.
id Credential-ID. Integer Pflicht
Authentifizierung: HTTP Basic — Ihre DQE One E-Mail-Adresse und Ihr API token (My Account > API Token). Siehe den Artikel Introduction.

Antwort

Credential. HTTP-Status 200.

Schlüssel Beschreibung Typ
id Integer
login Entschlüsselter Login (client_id bei Typen ohne Login). Passwörter, Schlüssel und Tokens werden nie zurückgegeben. String
name String
type
Werte: salesforce, dynamics, snowflake, postgres, sftp, bigquery
String
status Ergebnis eines LIVE-Verbindungstests, der bei jedem Aufruf ausgeführt wird.
Werte: valid, expired
String
process IDs der Processes, die dieses Credential verwenden. Array

Antwortbeispiel

Beispielantwort
{ "id": 3, "login": "dqe", "name": "db.acme.com", "type": "postgres", "status": "valid", "process": [ 42 ] }

Fehler

HTTP Body / Bedeutung
400 No id found.
401 Unauthorized
404 Credential not found

API testen

Klicken Sie auf die Schaltfläche unten, um diesen Endpoint live in Ihrem Browser zu testen.

Hinweis: Diese Konsole sendet aus Ihrem Browser eine echte Anfrage an Ihren eigenen Server, mit Ihrem echten API token.
Konsole öffnen
Credential löschen - DQE One Standalone API

Löscht ein Credential. Wird mit 423 abgelehnt, solange ein Process es verwendet.

deleteCredential

Anfrage

Senden Sie eine DELETE-Anfrage mit der Credential-ID. Eine nicht numerische ID führt zu einem unformatierten HTTP 500.

DELETEhttps://{DOMAIN}/api/Cred/delete?id={id}

Codebeispiele

Credential löschen

curl -u "{EMAIL}:{API_TOKEN}" -X DELETE \ "https://{DOMAIN}/api/Cred/delete?id=3"
fetch("https://{DOMAIN}/api/Cred/delete?id=3", { method: "DELETE", headers: { "Authorization": "Basic " + btoa("{EMAIL}:{API_TOKEN}") } }) .then(r => r.text()) .then(data => console.log(data));
import requests response = requests.delete( "https://{DOMAIN}/api/Cred/delete", auth=("{EMAIL}", "{API_TOKEN}"), params={"id": "3"}, ) print(response.status_code, response.text)
<?php $ch = curl_init("https://{DOMAIN}/api/Cred/delete?id=3"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_setopt($ch, CURLOPT_USERPWD, "{EMAIL}:{API_TOKEN}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $status . " " . $response;
const axios = require('axios'); axios({ method: "delete", url: "https://{DOMAIN}/api/Cred/delete", auth: { username: "{EMAIL}", password: "{API_TOKEN}" }, params: { "id": "3" } }) .then(res => console.log(res.status, res.data)) .catch(err => console.log(err.response ? err.response.status : err.message, err.response && err.response.data));
import java.net.URI; import java.net.http.*; import java.util.Base64; String auth = Base64.getEncoder().encodeToString("{EMAIL}:{API_TOKEN}".getBytes()); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{DOMAIN}/api/Cred/delete?id=3")) .header("Authorization", "Basic " + auth) .method("DELETE", HttpRequest.BodyPublishers.noBody()) .build(); HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode() + " " + response.body());
using System.Net.Http; using System.Net.Http.Headers; using System.Text; using var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("{EMAIL}:{API_TOKEN}"))); using var request = new HttpRequestMessage(HttpMethod.Delete, "https://{DOMAIN}/api/Cred/delete?id=3"); var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode + " " + await response.Content.ReadAsStringAsync());
package main import ( "fmt" "io" "net/http" ) func main() { req, _ := http.NewRequest("DELETE", "https://{DOMAIN}/api/Cred/delete?id=3", nil) req.SetBasicAuth("{EMAIL}", "{API_TOKEN}") resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close() out, _ := io.ReadAll(resp.Body) fmt.Println(resp.StatusCode, string(out)) }

Parameter

Feld Beschreibung Typ Pflicht / Opt.
id Credential-ID. Integer Pflicht
Authentifizierung: HTTP Basic — Ihre DQE One E-Mail-Adresse und Ihr API token (My Account > API Token). Siehe den Artikel Introduction.

Antwort

Gelöscht. HTTP-Status 200.

Schlüssel Beschreibung Typ
status
Werte: success
String

Antwortbeispiel

Beispielantwort
{ "status": "success" }

Fehler

HTTP Body / Bedeutung
400 No id found.
401 Unauthorized
404 Credential not found
423 Credential is used in one or more processes and cannot be deleted
500 Failed to delete the Credential

API testen

Klicken Sie auf die Schaltfläche unten, um diesen Endpoint live in Ihrem Browser zu testen.

Hinweis: Diese Konsole sendet aus Ihrem Browser eine echte Anfrage an Ihren eigenen Server, mit Ihrem echten API token. Dadurch wird das Credential endgültig gelöscht.
Konsole öffnen

Siehe auch

Verknüpfung mit

War dieser Beitrag hilfreich?

0 von 0 fanden dies hilfreich