Credentials

Support DQE
Support DQE
  • Actualización
Credentials - DQE One Standalone API

Cree, consulte y elimine las conexiones que DQE One Standalone utiliza para acceder a sus datos: Salesforce, Microsoft Dynamics 365, PostgreSQL, Snowflake, BigQuery y SFTP.

{DOMAIN} es el nombre de host de su propio servidor DQE One Standalone — es autoalojado, por lo que este valor depende de su implementación. {EMAIL} es su usuario de DQE One y {API_TOKEN} el token generado en My Account > API Token.
Documentación relacionada: DQE One Standalone API — Introduction, Files, Credentials, Processes, Runs & results, RuleSets.
Secretos: la API nunca devuelve una contraseña, clave ni token. getCredential solo expone el nombre de usuario. Crear un credential envía secretos por la red: utilice siempre HTTPS y evite pegar secretos reales en herramientas compartidas.
Crear un credential - DQE One Standalone API

Crea una conexión. Para la mayoría de los tipos, DQE One prueba primero la conexión, de modo que un credential que no puede conectarse nunca se guarda.

createCredential

Solicitud

Envíe un cuerpo JSON. Las claves que debe proporcionar dependen de type (tabla de abajo).

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

Ejemplos de código

Crear un credential

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)) }

Parámetros

Campo Descripción Tipo Obl / Opc
type
Valores: salesforce
String Obligatorio
login Nombre de usuario de Salesforce (flujo JWT bearer). String Obligatorio
endpoint URL de la instancia, p. ej. https://acme.my.salesforce.com. Se elimina una '/' final. String Obligatorio
client_id Consumer key de la connected app. String Obligatorio
pvt Clave privada PEM correspondiente al certificado de la connected app. String Obligatorio
Autenticación: HTTP Basic — su email de DQE One y su API token (My Account > API Token). Consulte el artículo de Introducción.

Claves obligatorias, según type

type Claves obligatorias Notas
salesforce login, endpoint, client_id, pvt Flujo JWT bearer: endpoint es la URL de la instancia (se elimina una / final), pvt la clave privada PEM del certificado de la connected app.
dynamics client_id, client_secret, scope, tenant Requiere un inicio de sesión OAuth en el navegador — responde pending (véase más abajo).
snowflake endpoint, client_id, client_secret Requiere un inicio de sesión OAuth en el navegador — responde pending. Actualmente los processes sobre Snowflake fallan en la validación.
postgres endpoint, port, login, password, database endpoint es el nombre de host.
sftp endpoint, port, login, password pvt opcional = clave privada; password es entonces la frase de contraseña de la clave. El host debe figurar en la lista AUTHORIZED_SFTP_HOSTS del servidor (coincidencia exacta).
bigquery login, email, id, key_id, pvt Cuenta de servicio: login = client id, email = client email, id = id del proyecto, key_id y pvt = id de la clave privada y clave.

Dynamics y Snowflake: la respuesta pending

Estos dos tipos requieren un inicio de sesión OAuth en un navegador. La API almacena su configuración durante 5 minutos y responde HTTP 201 con {"status":"pending","url":"https://{DOMAIN}/login/?token=..."}. Una persona debe abrir esa URL e iniciar sesión; no existe ninguna llamada a la API para finalizarlo. Consulte listCredentials periódicamente hasta que aparezca el credential.

Acerca de name

Se acepta una clave name, pero se ignora: la etiqueta se deriva de la conexión — en Salesforce “<org name> (<org id>)”, en PostgreSQL y SFTP el host, en BigQuery el id del proyecto.

Respuesta

Creado (u OAuth pendiente). Estado HTTP 201.

Clave Descripción Tipo
status
Valores: success
String
id Integer

Ejemplo de respuesta

Respuesta de ejemplo
{ "status": "success", "id": 3 }

Errores

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

Una prueba de conexión fallida (contraseña incorrecta, host inaccesible o no autorizado, clave no válida) se notifica siempre con el mismo mensaje genérico Failed to create credentials. (HTTP 500). Compruebe el host, el puerto y los secretos y, para SFTP, que el host esté permitido en el servidor.

Probar la API

Haga clic en el botón de abajo para probar este endpoint en directo en su navegador.

Atención: esta consola envía una solicitud real a su propio servidor desde su navegador, con su API token real. Crear un credential prueba una conexión real con su fuente de datos.
Abrir consola
Listar credentials - DQE One Standalone API

Enumera el id y la etiqueta de sus credentials.

listCredentials

Solicitud

Envíe una solicitud GET. No hay parámetros.

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

Ejemplos de código

Listar sus credentials

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)) }

Parámetros

Este endpoint no acepta parámetros.

Autenticación: HTTP Basic — su email de DQE One y su API token (My Account > API Token). Consulte el artículo de Introducción.

Respuesta

Array de credentials. Estado HTTP 200.

El cuerpo es un array JSON; cada elemento contiene estas claves.

Clave Descripción Tipo
id Integer
name Etiqueta derivada de la conexión (véase el artículo Credentials). String

Ejemplo de respuesta

Respuesta de ejemplo
[ { "id": 3, "name": "db.acme.com" } ]

Errores

HTTP Cuerpo / significado
401 Unauthorized

Probar la API

Haga clic en el botón de abajo para probar este endpoint en directo en su navegador.

Atención: esta consola envía una solicitud real a su propio servidor desde su navegador, con su API token real.
Abrir consola
Obtener un credential - DQE One Standalone API

Devuelve los metadatos de un credential y si todavía se conecta.

getCredential

Solicitud

Envíe una solicitud GET con el id del credential.

Prueba en directo en cada llamada: status se calcula conectándose realmente a la fuente de datos cada vez (valid si se conecta, expired en caso contrario), por lo que esta llamada puede ser lenta. login es el nombre de usuario descifrado; en los tipos que no tienen login es el client_id.
GEThttps://{DOMAIN}/api/Cred/get?id={id}

Ejemplos de código

Obtener un credential

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)) }

Parámetros

Campo Descripción Tipo Obl / Opc
id Id del credential. Integer Obligatorio
Autenticación: HTTP Basic — su email de DQE One y su API token (My Account > API Token). Consulte el artículo de Introducción.

Respuesta

Credential. Estado HTTP 200.

Clave Descripción Tipo
id Integer
login Login descifrado (client_id en los tipos que no tienen login). Las contraseñas, claves y tokens nunca se devuelven. String
name String
type
Valores: salesforce, dynamics, snowflake, postgres, sftp, bigquery
String
status Resultado de una prueba de conexión EN VIVO ejecutada en cada llamada.
Valores: valid, expired
String
process Ids de los processes que usan este credential. Array

Ejemplo de respuesta

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

Errores

HTTP Cuerpo / significado
400 No id found.
401 Unauthorized
404 Credential not found

Probar la API

Haga clic en el botón de abajo para probar este endpoint en directo en su navegador.

Atención: esta consola envía una solicitud real a su propio servidor desde su navegador, con su API token real.
Abrir consola
Eliminar un credential - DQE One Standalone API

Elimina un credential. Se rechaza con 423 mientras algún process lo utilice.

deleteCredential

Solicitud

Envíe una solicitud DELETE con el id del credential. Un id no numérico produce un HTTP 500 sin formato.

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

Ejemplos de código

Eliminar un credential

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)) }

Parámetros

Campo Descripción Tipo Obl / Opc
id Id del credential. Integer Obligatorio
Autenticación: HTTP Basic — su email de DQE One y su API token (My Account > API Token). Consulte el artículo de Introducción.

Respuesta

Eliminado. Estado HTTP 200.

Clave Descripción Tipo
status
Valores: success
String

Ejemplo de respuesta

Respuesta de ejemplo
{ "status": "success" }

Errores

HTTP Cuerpo / significado
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

Probar la API

Haga clic en el botón de abajo para probar este endpoint en directo en su navegador.

Atención: esta consola envía una solicitud real a su propio servidor desde su navegador, con su API token real. Esto elimina de forma permanente el credential.
Abrir consola

Véase también

Relacionada con

¿Fue útil este artículo?

Usuarios a los que les pareció útil: 0 de 0