Desactivar una conexión
curl --request DELETE \
--url https://api.tupana.ai/v2/connections/{connection_id}/ \
--header 'Authorization: <api-key>'import requests
url = "https://api.tupana.ai/v2/connections/{connection_id}/"
headers = {"Authorization": "<api-key>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: '<api-key>'}};
fetch('https://api.tupana.ai/v2/connections/{connection_id}/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tupana.ai/v2/connections/{connection_id}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tupana.ai/v2/connections/{connection_id}/"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.tupana.ai/v2/connections/{connection_id}/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tupana.ai/v2/connections/{connection_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_bodyConexiones
Desactivar una conexión
Corta una conexión: deja de servir para operar y Tupana suelta la clave que guardaba. No es un borrado — la conexión sigue en el listado con status: inactive, que es lo que explica por qué esa empresa dejó de sincronizar. La empresa y sus documentos no se tocan. Se identifica por connection_id (el cred_… del listado), no por la empresa. Es idempotente y no tiene vuelta atrás: volver a operar esa empresa significa conectarla de nuevo con Tupana Link.
DELETE
/
connections
/
{connection_id}
/
Desactivar una conexión
curl --request DELETE \
--url https://api.tupana.ai/v2/connections/{connection_id}/ \
--header 'Authorization: <api-key>'import requests
url = "https://api.tupana.ai/v2/connections/{connection_id}/"
headers = {"Authorization": "<api-key>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: '<api-key>'}};
fetch('https://api.tupana.ai/v2/connections/{connection_id}/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tupana.ai/v2/connections/{connection_id}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tupana.ai/v2/connections/{connection_id}/"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.tupana.ai/v2/connections/{connection_id}/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tupana.ai/v2/connections/{connection_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_bodyCorta una conexión: deja de servir para operar y Tupana suelta la clave que
guardaba. Si era una empresa que sincronizaba su banco o su SII todos los días,
deja de hacerlo.
Se identifica por
Responde
Volver a operar esa empresa significa conectarla de nuevo con Tupana Link: la
clave no se recupera.
connection_id — el cred_… que devuelve
el listado —, no por la empresa: una
empresa puede tener más de una conexión y se desactiva la que indiques.
curl -X DELETE https://api.tupana.ai/v2/connections/cred_5028174639201/ \
-H "Authorization: Api-Key TU_API_KEY"
204 sin cuerpo. Si esa conexión no es tuya o no existe, 404.
No es un borrado
La conexión sigue apareciendo en el listado constatus: inactive. Es a
propósito: así se entiende por qué esa empresa dejó de sincronizar, en vez de
desaparecer sin explicación. La empresa y sus documentos no se tocan.
inactive es una conexión que alguien cortó. No se confunde con
requires_action, que es una clave que dejó de funcionar y hay que reconectar
con Tupana Link.Desactivar es idempotente —llamarlo dos veces responde
204 las dos— pero no
tiene vuelta atrás por API.Authorizations
API Key para autenticación. Debe proporcionarse en el header Authorization con el formato: 'Api-Key YOUR-API-KEY' (incluye el prefijo 'Api-Key ' seguido de tu API key)
Path Parameters
Id de la conexión (cred_…), el que devuelve GET /connections/.
Example:
"cred_5028174639201"
Response
Conexión terminada
