Archivos

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

Cargue archivos CSV o Excel para usarlos como fuente de datos csv, enumérelos y elimínelos, y descargue el resultado de un process.

{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.
Conviene saber: cuando usted crea un process csv, el archivo se clona y el clon queda vinculado al process. Su carga original sigue libre (puede eliminarla); el clon aparece en listFiles con su process_id y no se puede eliminar mientras el process exista.
Cargar un archivo - DQE One Standalone API

Carga un archivo CSV o Excel. El id devuelto es el que se pasa como file al crear un process csv.

addFile

Solicitud

Envíe una solicitud multipart/form-data mediante POST con un campo llamado file.

Reglas: solo .csv, .xlsx y .xls (la comprobación de la extensión distingue entre mayúsculas y minúsculas, por lo que DATA.CSV se rechaza). Los archivos Excel se convierten a CSV (solo la primera hoja) pero conservan su nombre de Excel. Los encabezados de columna deben ser únicos y no deben contener espacios. El delimitador y el carácter de comillas se detectan automáticamente. La API no impone ningún límite de tamaño: el archivo completo se lee en memoria, así que mantenga las cargas dentro de un tamaño razonable.
POSThttps://{DOMAIN}/api/File/add

Ejemplos de código

Cargar un archivo

curl -u "{EMAIL}:{API_TOKEN}" -X POST \ -F "file=@contacts.csv" \ "https://{DOMAIN}/api/File/add"
const form = new FormData(); form.append("file", fileInput.files[0]); // <input type="file"> fetch("https://{DOMAIN}/api/File/add", { method: "POST", headers: { "Authorization": "Basic " + btoa("{EMAIL}:{API_TOKEN}") }, body: form }) .then(r => r.text()) .then(data => console.log(data));
import requests response = requests.post( "https://{DOMAIN}/api/File/add", auth=("{EMAIL}", "{API_TOKEN}"), files={"file": open("contacts.csv", "rb")}, ) print(response.status_code, response.text)
<?php $ch = curl_init("https://{DOMAIN}/api/File/add"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_USERPWD, "{EMAIL}:{API_TOKEN}"); curl_setopt($ch, CURLOPT_POSTFIELDS, ['file' => new CURLFile("contacts.csv")]); 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'); const FormData = require('form-data'); const fs = require('fs'); const form = new FormData(); form.append('file', fs.createReadStream("contacts.csv")); axios({ method: "post", url: "https://{DOMAIN}/api/File/add", auth: { username: "{EMAIL}", password: "{API_TOKEN}" }, headers: form.getHeaders(), data: form }) .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 boundary = "----dqe" + System.nanoTime(); byte[] content = java.nio.file.Files.readAllBytes(java.nio.file.Path.of("contacts.csv")); var out = new java.io.ByteArrayOutputStream(); out.write(("--" + boundary + "\r\nContent-Disposition: form-data; name=\"file\"; filename=\"" + "contacts.csv" + "\"\r\n\r\n").getBytes()); out.write(content); out.write(("\r\n--" + boundary + "--\r\n").getBytes()); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{DOMAIN}/api/File/add")) .header("Authorization", "Basic " + auth) .header("Content-Type", "multipart/form-data; boundary=" + boundary) .method("POST", HttpRequest.BodyPublishers.ofByteArray(out.toByteArray())) .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/File/add"); var form = new MultipartFormDataContent(); form.Add(new ByteArrayContent(File.ReadAllBytes("contacts.csv")), "file", "contacts.csv"); request.Content = form; var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode + " " + await response.Content.ReadAsStringAsync());
package main import ( "bytes" "fmt" "io" "mime/multipart" "net/http" "os" ) func main() { var buf bytes.Buffer w := multipart.NewWriter(&buf) part, _ := w.CreateFormFile("file", "contacts.csv") f, _ := os.Open("contacts.csv") io.Copy(part, f) w.Close() req, _ := http.NewRequest("POST", "https://{DOMAIN}/api/File/add", &buf) req.SetBasicAuth("{EMAIL}", "{API_TOKEN}") req.Header.Set("Content-Type", w.FormDataContentType()) 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
file .csv, .xlsx o .xls. String (file) 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

Archivo almacenado. Estado HTTP 201.

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

Ejemplo de respuesta

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

Errores

HTTP Cuerpo / significado
400 API only accept .csv, .xlsx or .xls file.
401 Unauthorized
500 Failed to save file: No space in header fields name allowed.

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 carga un archivo real en su servidor.
Abrir consola
Listar archivos - DQE One Standalone API

Enumera los archivos que usted ha cargado, del más reciente al más antiguo, incluidos los clones vinculados a processes.

listFiles

Solicitud

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

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

Ejemplos de código

Listar sus archivos

curl -u "{EMAIL}:{API_TOKEN}" \ "https://{DOMAIN}/api/File/list"
fetch("https://{DOMAIN}/api/File/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/File/list", auth=("{EMAIL}", "{API_TOKEN}"), ) print(response.status_code, response.text)
<?php $ch = curl_init("https://{DOMAIN}/api/File/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/File/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/File/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/File/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/File/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 archivos. Estado HTTP 200.

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

Clave Descripción Tipo
id Integer
name String
headers Nombres de las columnas. Array
rows Número de líneas. Integer
process_id Process al que está vinculado el archivo, o null si es una carga libre. Integer

Ejemplo de respuesta

Respuesta de ejemplo
[ { "id": 12, "name": "contacts.csv", "headers": [ "Id", "Email" ], "rows": 1500, "process_id": null } ]

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
Descargar el resultado de un process - DQE One Standalone API

Descarga el resultado del último run de un process como archivo adjunto CSV.

getProcessResult

Solicitud

Envíe una solicitud GET con el processId. La respuesta es un archivo, no JSON.

Qué obtiene: la clave primaria más los campos que el process sincroniza — no el archivo de salida completo. Todos los valores van entrecomillados, en UTF-8 y con el delimitador original. El nombre de archivo sugerido termina en .csv.csv (una peculiaridad conocida; puede renombrarlo libremente). Si el process nunca se ha ejecutado, o su último run aún no tiene archivo de salida (sigue en ejecución o ha fallado), el servidor responde con un HTTP 500 sin formato en lugar de un error JSON. Compruebe antes el estado del run (Runs & results).
GEThttps://{DOMAIN}/api/File/get?processId={processId}

Ejemplos de código

Descargar el resultado de un process

curl -u "{EMAIL}:{API_TOKEN}" \ "https://{DOMAIN}/api/File/get?processId=42"
fetch("https://{DOMAIN}/api/File/get?processId=42", { 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/File/get", auth=("{EMAIL}", "{API_TOKEN}"), params={"processId": "42"}, ) print(response.status_code, response.text)
<?php $ch = curl_init("https://{DOMAIN}/api/File/get?processId=42"); 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/File/get", auth: { username: "{EMAIL}", password: "{API_TOKEN}" }, params: { "processId": "42" } }) .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/File/get?processId=42")) .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/File/get?processId=42"); 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/File/get?processId=42", 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
processId Id del process. 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

Archivo adjunto CSV (todos los valores entrecomillados, UTF-8).. Estado HTTP 200.

Respuesta binaria/archivo adjunto (application/octet-stream).

Ejemplo de respuesta

La respuesta es un archivo adjunto, no JSON.

Errores

HTTP Cuerpo / significado
400 Process ID is required
401 Unauthorized
404 File not found for the given process.
500 Failed to extract fields from file.

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 archivo - DQE One Standalone API

Elimina de forma permanente un archivo y su contenido. Se rechaza con 423 mientras el archivo esté vinculado a un process.

deleteFile

Solicitud

Envíe una solicitud DELETE con el id del archivo. Un id no numérico produce un HTTP 500 sin formato, así que valídelo por su cuenta.

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

Ejemplos de código

Eliminar un archivo

curl -u "{EMAIL}:{API_TOKEN}" -X DELETE \ "https://{DOMAIN}/api/File/delete?id=12"
fetch("https://{DOMAIN}/api/File/delete?id=12", { 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/File/delete", auth=("{EMAIL}", "{API_TOKEN}"), params={"id": "12"}, ) print(response.status_code, response.text)
<?php $ch = curl_init("https://{DOMAIN}/api/File/delete?id=12"); 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/File/delete", auth: { username: "{EMAIL}", password: "{API_TOKEN}" }, params: { "id": "12" } }) .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/File/delete?id=12")) .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/File/delete?id=12"); 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/File/delete?id=12", 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 archivo. 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 File ID is required
401 Unauthorized
404 File not found
423 File is associated with a process and cannot be deleted

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 archivo.
Abrir consola

Véase también

Relacionada con

¿Fue útil este artículo?

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