Actualizar contacto
PATCH /api/contacts/:id
Sección titulada « /api/contacts/»Actualiza parcialmente la información de un contacto existente.
Parámetros de ruta
Sección titulada «Parámetros de ruta»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
id | string | Sí | ID único del contacto a actualizar |
Cuerpo de la petición
Sección titulada «Cuerpo de la petición»Todos los campos son opcionales. Solo se actualizarán los campos enviados.
{ "name": "Juan Carlos", "lastName": "Pérez García", "phone": "3001234567", "countryCode": "57", "status": "INACTIVE", "birthDate": "1990-01-15T00:00:00.000Z", "tagIds": ["tag1-uuid", "tag2-uuid"], "customValues": [ { "id": "existing-value-uuid", "value": "Nuevo valor", "customFieldId": "field-uuid" } ]}Campos actualizables
Sección titulada «Campos actualizables»| Campo | Tipo | Descripción |
|---|---|---|
name | string | Nombre del contacto |
lastName | string | Apellido del contacto |
email | string | Correo electrónico |
phone | string | Número de teléfono |
countryCode | string | Código de país |
status | enum | Estado: ACTIVE, INACTIVE, BLOCKED |
birthDate | datetime | Fecha de nacimiento |
tagIds | array | IDs de etiquetas a asociar |
customValues | array | Valores de campos personalizados |
Respuesta exitosa (200)
Sección titulada «Respuesta exitosa (200)»{ "id": "contact-uuid-123", "name": "Juan Carlos", "lastName": "Pérez García", "phone": "3001234567", "countryCode": "57", "status": "INACTIVE", "birthDate": "1990-01-15T00:00:00.000Z", "origin": "API", "organizationId": "org-uuid", "customValues": [ { "id": "existing-value-uuid", "value": "Nuevo valor", "customFieldId": "field-uuid", "contactId": "contact-uuid-123", "createdAt": "2024-01-01T10:00:00.000Z", "updatedAt": "2024-01-01T11:00:00.000Z" } ], "tags": [ { "id": "tag1-uuid", "name": "Cliente VIP", "description": "Clientes importantes", "color": "#FF5722", "organizationId": "org-uuid", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" } ], "createdAt": "2024-01-01T10:00:00.000Z", "updatedAt": "2024-01-01T11:00:00.000Z"}Errores posibles
Sección titulada «Errores posibles»| Código | Descripción |
|---|---|
400 | Datos de entrada inválidos |
401 | API Key faltante o inválida |
404 | Contacto no encontrado |
409 | Conflicto (email o teléfono ya existe) |
500 | Error interno del servidor |
Ejemplos de uso
Sección titulada «Ejemplos de uso»curl -X PATCH "https://app.sendme123.com/api/contacts/contact-uuid-123" \ -H "api-key: tu-api-key-aqui" \ -H "Content-Type: application/json" \ -d '{ "email": "[email protected]", "status": "INACTIVE" }'const actualizarContacto = async (contactId, actualizacion) => { try { const response = await axios.patch(`https://app.sendme123.com/api/contacts/${contactId}`, actualizacion, { headers: { 'api-key': 'tu-api-key-aqui', 'Content-Type': 'application/json' } });
console.log('Contacto actualizado:', response.data); return response.data; } catch (error) { console.error('Error al actualizar:', error.response?.data || error.message); throw error; }};
// UsoactualizarContacto('contact-uuid-123', { status: "INACTIVE"});import requests
contact_id = 'contact-uuid-123'headers = {'api-key': 'tu-api-key-aqui', 'Content-Type': 'application/json'}data = { "status": "INACTIVE"}
response = requests.patch(f'https://app.sendme123.com/api/contacts/{contact_id}', headers=headers, json=data)
if response.status_code == 200: contact = response.json() print('Contacto actualizado:', contact)else: print('Error:', response.status_code, response.text)Casos de uso comunes
Sección titulada «Casos de uso comunes»Cambiar estado de contacto
Sección titulada «Cambiar estado de contacto»const desactivarContacto = async (contactId) => { try { const response = await axios.patch(`https://app.sendme123.com/api/contacts/${contactId}`, { status: 'INACTIVE' }, { headers: { 'api-key': 'tu-api-key-aqui', 'Content-Type': 'application/json' } } );
console.log('Contacto desactivado:', response.data); return response.data; } catch (error) { console.error('Error desactivando contacto:', error.response?.data || error.message); throw error; }};Actualizar información de contacto
Sección titulada «Actualizar información de contacto»const actualizarEmail = async (contactId, nuevoEmail) => { try { const response = await axios.patch(`https://app.sendme123.com/api/contacts/${contactId}`, { email: nuevoEmail }, { headers: { 'api-key': 'tu-api-key-aqui', 'Content-Type': 'application/json' } } );
console.log('Email actualizado:', response.data); return response.data; } catch (error) { if (error.response?.status === 409) { throw new Error('Email ya existe en otro contacto'); } console.error('Error al actualizar email:', error.response?.data || error.message); throw error; }};Agregar etiquetas a contacto
Sección titulada «Agregar etiquetas a contacto»const agregarEtiquetas = async (contactId, tagIds) => { try { // Primero obtener el contacto actual const contacto = await axios.get(`https://app.sendme123.com/api/contacts/${contactId}`, { headers: { 'api-key': 'tu-api-key-aqui' } });
// Combinar etiquetas existentes con nuevas (sin duplicados) const etiquetasExistentes = contacto.data.tags.map(tag => tag.id); const todasLasEtiquetas = [...new Set([...etiquetasExistentes, ...tagIds])];
// Actualizar con todas las etiquetas const response = await axios.patch(`https://app.sendme123.com/api/contacts/${contactId}`, { tagIds: todasLasEtiquetas }, { headers: { 'api-key': 'tu-api-key-aqui', 'Content-Type': 'application/json' } } );
console.log('Etiquetas agregadas:', response.data); return response.data; } catch (error) { console.error('Error agregando etiquetas:', error.response?.data || error.message); throw error; }};