Actualiza un contacto existente identificado por tkProspecto. Permite modificar compañía, puesto, móvil, país y estado, agregar un seguimiento y asignar etiquetas. También reactiva el contacto si estaba descartado o archivado. Si creaEmpresa vale 1, crea una nueva compañía y la vincula al contacto. Este endpoint no actualiza nombre, apellidos ni correo. Si el contacto no existe, la solicitud falla; no se crea automáticamente. No ofrece la deduplicación por trid del endpoint POST.
Parámetros
Nombre
Tipo
Validación
Descripción
token
String
Requerido
URL (obligatorio): Token completo de la integración, incluido su prefijo si lo tiene. Conserva el valor proporcionado por Upnify.
tkProspecto
String
Requerido
Cuerpo: Identificador del contacto existente que se actualizará.
empresa
String
Cuerpo: Nombre de la compañía. Hasta 256 caracteres. Omitirlo conserva el valor anterior.
puesto
String
Cuerpo: Puesto del contacto. Hasta 128 caracteres. Omitirlo conserva el valor anterior.
movil
String
Cuerpo: Móvil del contacto. Hasta 1028 caracteres; se normaliza usando el país.
idPais
String
Cuerpo: Código de país válido, de hasta 2 caracteres.
idEstado
String
Cuerpo: Código de estado válido para el país, de hasta 4 caracteres.
comentarios
String
Cuerpo: Texto que se agrega al seguimiento de la solicitud. Hasta 8000 caracteres.
tkEtiqueta
String
Cuerpo: Identificadores de etiquetas separados por comas. Hasta 1028 caracteres.
forzarEtiquetas
Integer
Cuerpo: 1 para eliminar las etiquetas actuales antes de asignar las enviadas; 0 para conservarlas.
creaEmpresa
Integer
Cuerpo: 1 para crear una compañía nueva y vincularla al contacto; 0 para no hacerlo. Puede crear otra compañía si repites la operación.
Respuesta
Nombre
Tipo
Descripción
code
Integer
Código de resultado. El valor 0 indica que la operación terminó sin error.
msg
String
Mensaje de resultado. Su texto puede variar.
details
Array<Object>
Arreglo con los datos de la operación.
details[].tkContacto
String
Identificador del contacto actualizado.
details[].action
String
Valor updated.
details[].tkCompania
String
Identificador de la compañía creada cuando creaEmpresa vale 1.
Solicitud
Actualizar el puesto y agregar un seguimiento
curl --request PUT \
--url https://api.upnify.com/integraciones/P01AP00000000-0000-4000-8000-000000000001 \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"tkProspecto": "P-00000000-0000-4000-8000-000000000001",
"puesto": "Responsable de compras",
"comentarios": "Solicitó información adicional"
}'async function ejecutar() {
const response = await fetch("https://api.upnify.com/integraciones/P01AP00000000-0000-4000-8000-000000000001", {
method: "PUT",
headers: {"Accept": "application/json", "Content-Type": "application/json"},
body: JSON.stringify({"tkProspecto":"P-00000000-0000-4000-8000-000000000001","puesto":"Responsable de compras","comentarios":"Solicitó información adicional"})
});
const text = await response.text();
if (!response.ok) throw new Error(`HTTP ${response.status}: ${text}`);
const data = text ? JSON.parse(text) : null;
// Usa data en tu aplicación sin exponer tokens o datos personales.
console.log("Estado HTTP:", response.status);
}
ejecutar().catch(console.error);// Node.js 18 o posterior.
async function ejecutar() {
const response = await fetch("https://api.upnify.com/integraciones/P01AP00000000-0000-4000-8000-000000000001", {
method: "PUT",
headers: {"Accept": "application/json", "Content-Type": "application/json"},
body: JSON.stringify({"tkProspecto":"P-00000000-0000-4000-8000-000000000001","puesto":"Responsable de compras","comentarios":"Solicitó información adicional"})
});
const text = await response.text();
if (!response.ok) throw new Error(`HTTP ${response.status}: ${text}`);
const data = text ? JSON.parse(text) : null;
// Usa data en tu aplicación sin exponer tokens o datos personales.
console.log("Estado HTTP:", response.status);
}
ejecutar().catch(console.error);import json
import requests
response = requests.request(
"PUT",
"https://api.upnify.com/integraciones/P01AP00000000-0000-4000-8000-000000000001",
headers={'Accept': 'application/json', 'Content-Type': 'application/json'},
json=json.loads('{"tkProspecto":"P-00000000-0000-4000-8000-000000000001","puesto":"Responsable de compras","comentarios":"Solicitó información adicional"}'),
timeout=30,
)
response.raise_for_status()
data = response.json() if response.text else None
# Usa data en tu aplicación sin exponer tokens o datos personales.
print("Estado HTTP:", response.status_code)package main
import (
"fmt"
"io"
"net/http"
"time"
"strings"
)
func main() {
body := strings.NewReader(`{"tkProspecto":"P-00000000-0000-4000-8000-000000000001","puesto":"Responsable de compras","comentarios":"Solicitó información adicional"}`)
request, err := http.NewRequest("PUT", "https://api.upnify.com/integraciones/P01AP00000000-0000-4000-8000-000000000001", body)
if err != nil { panic(err) }
request.Header.Set("Accept", "application/json")
request.Header.Set("Content-Type", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
response, err := client.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
data, err := io.ReadAll(response.Body)
if err != nil { panic(err) }
if response.StatusCode < 200 || response.StatusCode >= 300 {
panic(fmt.Sprintf("HTTP %d: %s", response.StatusCode, data))
}
fmt.Println("Estado HTTP:", response.StatusCode)
}using System;
using System.Net.Http;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(new HttpMethod("PUT"), "https://api.upnify.com/integraciones/P01AP00000000-0000-4000-8000-000000000001");
request.Headers.Add("Accept", "application/json");
request.Content = new StringContent("{\"tkProspecto\":\"P-00000000-0000-4000-8000-000000000001\",\"puesto\":\"Responsable de compras\",\"comentarios\":\"Solicitó información adicional\"}", Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
var data = await response.Content.ReadAsStringAsync();
response.EnsureSuccessStatusCode();
Console.WriteLine($"Estado HTTP: {(int)response.StatusCode}");