Créez, consultez et supprimez les connexions que DQE One
Standalone utilise pour accéder à vos données : Salesforce,
Microsoft Dynamics 365, PostgreSQL, Snowflake, BigQuery et
SFTP.
{DOMAIN} est le nom d'hôte de votre propre
serveur DQE One Standalone — il est auto-hébergé, cette valeur
dépend donc de votre déploiement. {EMAIL}
est votre identifiant de connexion DQE One et
{API_TOKEN} le token généré dans
My Account > API Token.
Secrets : l'API ne renvoie jamais de mot
de passe, de clé ni de token. getCredential
n'expose que l'identifiant de connexion. La création d'un
credential transmet des secrets sur le réseau : utilisez
toujours HTTPS et évitez de coller de vrais secrets dans
des outils partagés.
Crée une connexion. Pour la plupart des types, DQE One
teste d'abord la connexion : un credential
qui ne peut pas se connecter n'est donc jamais enregistré.
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());
URL de l'instance, par ex. https://acme.my.salesforce.com.
Un '/' final est supprimé.
String
Obligatoire
client_id
Consumer key de la connected app.
String
Obligatoire
pvt
Clé privée PEM correspondant au certificat de
la connected app.
String
Obligatoire
Authentification : HTTP Basic — votre email
DQE One et votre API token (My Account > API Token).
Consultez l'article Introduction.
Clés requises, par type
type
Clés requises
Notes
salesforce
login, endpoint,
client_id, pvt
Flux JWT bearer : endpoint est l'URL
de l'instance (un / final est supprimé),
pvt la clé privée PEM du certificat
de la connected app.
dynamics
client_id, client_secret,
scope, tenant
Nécessite une connexion OAuth via navigateur
— répond pending (voir ci-dessous).
snowflake
endpoint, client_id,
client_secret
Nécessite une connexion OAuth via navigateur
— répond pending. Les processes
sur Snowflake échouent actuellement à la validation.
postgres
endpoint, port, login,
password, database
endpoint est le nom d'hôte.
sftp
endpoint, port, login,
password
pvt optionnel = clé privée ;
password est alors la passphrase
de la clé. L'hôte doit figurer dans la liste
AUTHORIZED_SFTP_HOSTS du serveur
(correspondance exacte).
bigquery
login, email, id,
key_id, pvt
Compte de service : login = client
id, email = client email, id
= id du projet, key_id et pvt
= id de la clé privée et clé.
Dynamics et Snowflake : la réponse pending
Ces deux types nécessitent une connexion OAuth dans un navigateur.
L'API conserve vos paramètres pendant 5 minutes
et répond HTTP 201 avec
{"status":"pending","url":"https://{DOMAIN}/login/?token=..."}.
Une personne doit ouvrir cette URL et se connecter ;
aucun appel d'API ne permet de terminer l'opération.
Interrogez listCredentials régulièrement jusqu'à
l'apparition du credential.
À propos de name
Une clé name est acceptée mais ignorée
: le libellé est dérivé de la connexion — Salesforce “<org
name> (<org id>)”, PostgreSQL et SFTP l'hôte, BigQuery
l'id du projet.
Réponse
Créé (ou en attente d'OAuth). Statut HTTP
201.
Clé
Description
Type
status
Valeurs : success
String
id
Integer
Exemple de réponse
Exemple de réponse
{
"status":
"success",
"id": 3
}
Erreurs
HTTP
Corps / signification
400
Keys endpoint,port need to be set for type postgres
401
Unauthorized
500
Failed to create credentials.
Un test de connexion échoué (mot de passe incorrect, hôte
injoignable ou non autorisé, clé invalide) est toujours signalé
par le même message générique
Failed to create credentials. (HTTP 500). Vérifiez
l'hôte, le port et les secrets et, pour SFTP, que l'hôte
est autorisé sur le serveur.
Tester l'API
Cliquez sur le bouton ci-dessous pour tester cet endpoint
en direct dans votre navigateur.
À savoir : cette console envoie une
vraie requête à votre propre serveur depuis
votre navigateur, avec votre véritable API token. La création
d'un credential teste une vraie connexion
à votre source de données.
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());
Test en direct à chaque appel :status
est calculé en se connectant réellement à la source de données
à chaque fois (valid si la connexion réussit,
expired sinon), cet appel peut donc être lent.
login est l'identifiant déchiffré ; pour les
types qui n'ont pas de login, il s'agit du client_id.
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());
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());
Authentification : HTTP Basic — votre email
DQE One et votre API token (My Account > API Token).
Consultez l'article Introduction.
Réponse
Supprimé. Statut HTTP 200.
Clé
Description
Type
status
Valeurs : success
String
Exemple de réponse
Exemple de réponse
{
"status":
"success"
}
Erreurs
HTTP
Corps / signification
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
Tester l'API
Cliquez sur le bouton ci-dessous pour tester cet endpoint
en direct dans votre navigateur.
À savoir : cette console envoie une
vraie requête à votre propre serveur depuis
votre navigateur, avec votre véritable API token. Cela
supprime définitivement le credential.