Referencia de métodos
Todos los servicios y métodos de los SDK de JavaScript y Python, con su nombre en cada lenguaje, la credencial que los alcanza y las diferencias entre ambos.
Actualizado el . 17 min de lectura
Incluido en todos los planes. Ver precios
Esta página es el índice de todo lo que ofrecen los dos SDK, servicio a servicio, contrastado con el código de la versión 4.1.0. Las guías de cada tema explican cuándo y cómo usar cada método; aquí está el mapa completo para encontrarlo.
Cómo leer esta referencia
- Nombres. Los servicios y métodos son los mismos en los dos lenguajes: JavaScript usa
camelCase(sdk.paymentMethods.setDefault) y Python,snake_case(sdk.payment_methods.set_default). Las tablas muestran los dos. - Asíncrono. En JavaScript todos los métodos devuelven una promesa, salvo los de
sdk.webhooks, que no hacen red. En Python, la claseUtiliaSDKusaawaityUtiliaSDKSyncofrece los mismos métodos sin él. - Entrada. En JavaScript pasas objetos literales; en Python, los modelos de entrada de Pydantic (
CreateTicketInput,IdentifyUserInput…), que se importan deutilia_sdko deutilia_sdk.models.
Qué credencial alcanza cada servicio
| Credencial | Servicios |
|---|---|
Clave de la aplicación externa (X-Api-Key, rutas /external/v1/*) | users, tickets, files, ai, errors, externalContacts, externalLeads, externalClients, invoices (con scheduledCharges y refunds), paymentMethods, payments, subscriptions, paymentAuthorizations y chat |
| Ninguna: no hacen red | webhooks |
| OAuth en nombre de una persona | oauth y todo sdk.mcp.* (el carril MCP no acepta la clave de la aplicación) |
Siete servicios no son alcanzables hoy desde el SDK
contacts, budgets, budgetTemplates, budgetComments, budgetSignatures, calendar y organizationSettings llaman a rutas internas del panel, que exigen la sesión de una persona que ha iniciado sesión en UTILIA OS. Ni la clave de la aplicación ni un token OAuth llegan hasta ellas: responden 401. Siguen en el paquete, pero hoy no sirven para integrar. Para contactos y clientes usa externalContacts y externalClients, y para el resto del CRM, las herramientas MCP del CRM (sdk.mcp.crm).
Diferencias entre los dos lenguajes
| Qué | JavaScript | Python |
|---|---|---|
| Pedir sugerencias o transcripción en segundo plano | requestSuggestions y requestTranscription devuelven { jobId } | Devuelven el identificador como texto |
| Transcribir | transcribe y streamTranscription devuelven { transcription } | Devuelven el texto |
| Sugerencias en tiempo real | streamSuggestions devuelve { result, abort } | stream_suggestions devuelve el resultado; stream_suggestions_handle, el objeto con abort |
| Cambios de tickets en tiempo real | streamUpdates con funciones de aviso y close() | stream_updates es un generador que recorres con async for |
| Listado de facturas | La lista viene en data | La lista viene en invoices |
| PDF de una factura | Blob | bytes |
| Conflictos de calendario abiertos | calendar.listOpenConflicts | No existe |
| Ventana emergente de OAuth | oauth.loginWithPopup | No existe |
| Comprobaciones del error | Métodos: error.isRetryable() | Propiedades: error.is_retryable |
| Alias en desuso | sdk.mandates | sdk.mandates, sdk.scheduled_charges y sdk.oauth_service |
Usuarios, soporte e IA
users
Usuarios de tu aplicación. Guía: Usuarios externos.
| JavaScript | Python | Qué hace |
|---|---|---|
identify | identify | Crea o actualiza un usuario externo. |
list | list | Lista los usuarios de la aplicación, por páginas. |
tickets
Tickets de soporte de los usuarios de tu aplicación. Guía: Tickets de soporte. No lo confundas con sdk.mcp.tickets, que trabaja con los tickets de soporte interno de tu organización por MCP.
| JavaScript | Python | Qué hace |
|---|---|---|
create | create | Abre un ticket. |
list | list | Lista los tickets de un usuario. |
get | get | Detalle de un ticket con sus mensajes. |
getUnreadCount | get_unread_count | Mensajes sin leer del usuario. |
addMessage | add_message | Añade un mensaje. |
close | close | Cierra un ticket. |
reopen | reopen | Reabre un ticket cerrado. |
streamUpdates | stream_updates | Cambios en tiempo real. |
files
Archivos adjuntos. Guía: Archivos adjuntos.
| JavaScript | Python | Qué hace |
|---|---|---|
upload | upload | Sube un archivo. |
getUrl | get_url | Enlace temporal de descarga. |
getQuota | get_quota | Espacio usado y límites. |
ai
Sugerencias y transcripción. Guías: Sugerencias con IA y Transcripción de audio. En Python existe además stream_suggestions_handle.
| JavaScript | Python | Qué hace |
|---|---|---|
requestSuggestions | request_suggestions | Encola una petición de sugerencias. |
getSuggestionsStatus | get_suggestions_status | Estado de esa petición. |
getSuggestions | get_suggestions | Pide sugerencias y espera el resultado consultando. |
streamSuggestions | stream_suggestions | Sugerencias en tiempo real. |
requestTranscription | request_transcription | Encola una transcripción. |
getTranscriptionStatus | get_transcription_status | Estado de esa transcripción. |
transcribe | transcribe | Transcribe un audio corto en una llamada. |
streamTranscription | stream_transcription | Transcripción en tiempo real. |
trackAiAction | track_ai_action | Registra qué hizo la persona con la propuesta. |
reportError | report_error | Avisa de un fallo del cliente. Nunca lanza. |
errors
Errores de tu aplicación. Guía: Notificar errores de tu aplicación.
| JavaScript | Python | Qué hace |
|---|---|---|
report | report | Notifica un error, agrupando los iguales. |
list | list | Lista los errores notificados. |
stats | stats | Estadísticas agregadas. |
CRM por la API externa
externalContacts
Contactos para herramientas de envío de correo (Instantly, Smartlead, Apollo, Mailerlite y similares), con sincronización de cambios y registro de bajas y reactivaciones con prueba documental. En Python, sdk.external_contacts.
| JavaScript | Python | Qué hace |
|---|---|---|
list | list | Listado paginado con filtros de campaña. |
get | get | Detalle de un contacto. |
search | search | Búsqueda libre. |
byEmail | by_email | Búsqueda exacta por correo. |
sync | sync | Sincronización de cambios con cursor. |
unsubscribe | unsubscribe | Registra la baja del contacto. |
resubscribe | resubscribe | Reactiva el contacto con prueba documental. |
externalLeads
Leads para aplicaciones de prospección y sincronización con el CRM. convert es la operación más delicada: exige el scope crm:leads:convert y un motivo (reason) de al menos 20 caracteres. Después de convertir, el siguiente paso es trabajar la oportunidad en el CRM. En Python, sdk.external_leads.
| JavaScript | Python | Qué hace |
|---|---|---|
list | list | Listado paginado (por defecto, solo leads activos). |
get | get | Detalle del lead. |
search | search | Búsqueda libre. |
byEmail | by_email | Búsqueda exacta por correo. |
sync | sync | Sincronización de cambios con cursor. |
create | create | Crea un lead. |
update | update | Actualiza un lead. |
updateScore | update_score | Actualiza su puntuación. |
qualify | qualify | Lo pasa a QUALIFIED. |
disqualify | disqualify | Lo pasa a LOST. |
convert | convert | Lo convierte en contacto y, si quieres, en oportunidad. |
externalClients
Clientes para aplicaciones de facturación y sincronización. No expone IBAN ni datos financieros; el NIF solo aparece en el detalle y con el scope crm:clients:read:fiscal-data, y vincular a una matriz exige crm:clients:write:hierarchy. En Python, sdk.external_clients.
| JavaScript | Python | Qué hace |
|---|---|---|
list | list | Listado paginado (por defecto, solo ACTIVE). |
get | get | Detalle del cliente. |
search | search | Búsqueda libre. |
byTaxId | by_tax_id | Búsqueda exacta por NIF o CIF. |
bySlug | by_slug | Búsqueda exacta por identificador corto. |
sync | sync | Sincronización de cambios con cursor. |
listContacts | list_contacts | Contactos vinculados al cliente. |
create | create | Crea un cliente. |
update | update | Actualiza un cliente; con parentClientId lo vincula a una matriz o, con null, lo desvincula. |
getGroup | get_group | Grupo de empresas: papel (PARENT, SUBSIDIARY o STANDALONE), matriz y filiales. |
deactivate | deactivate | Lo pasa a INACTIVE (la única forma de retirarlo). |
reactivate | reactivate | Reactiva un cliente inactivo. |
Facturar y cobrar
invoices
Guía: Facturas.
| JavaScript | Python | Qué hace |
|---|---|---|
create | create | Emite una factura. |
list | list | Facturas de un usuario. |
get | get | Detalle con sus líneas. |
downloadPdf | download_pdf | PDF de la factura. |
getStats | get_stats | Totales del usuario. |
send | send | La envía por correo con su PDF. |
charge | charge | La cobra sin el usuario delante. |
markPaid | mark_paid | Registra un pago fuera de la pasarela. |
getPublicLink | get_public_link | Vigencia del enlace público. |
regeneratePublicLink | regenerate_public_link | Emite un enlace público nuevo. |
cancel | cancel | La anula. |
invoices.scheduledCharges (invoices.scheduled_charges): cobros programados.
| JavaScript | Python | Qué hace |
|---|---|---|
schedule | schedule | Programa el cobro de una factura. |
list | list | Cobros programados de una factura. |
cancel | cancel | Cancela un cobro programado. |
retryNow | retry_now | Adelanta el reintento de un cobro fallido. |
invoices.refunds: devoluciones.
| JavaScript | Python | Qué hace |
|---|---|---|
create | create | Devuelve lo cobrado, entero o en parte. |
invoices.rectifications: las rectificativas no se emiten desde la API externa. Su único método, updateLegalMetadata (update_legal_metadata), lanza siempre un error que remite al panel o a la herramienta MCP crm_invoices_rectifications. Para devolver dinero con rectificativa, usa refunds.create con createRectifyingInvoice.
paymentMethods
Guía: Métodos de pago. En Python, sdk.payment_methods.
| JavaScript | Python | Qué hace |
|---|---|---|
getReadiness | get_readiness | Si la organización puede cobrar con tarjeta. |
createSetupIntent | create_setup_intent | Empieza a guardar una tarjeta. |
list | list | Tarjetas activas del usuario. |
setDefault | set_default | Elige la predeterminada. |
remove | remove | Retira una tarjeta. |
payments
Guía: Cobros.
| JavaScript | Python | Qué hace |
|---|---|---|
payInvoice | pay_invoice | Cobra una factura con el usuario delante. |
getPaymentIntents | get_payment_intents | Historial de intentos de cobro. |
subscriptions
Guía: Suscripciones.
| JavaScript | Python | Qué hace |
|---|---|---|
create | create | Da de alta la cuota. |
list | list | Lista suscripciones. |
get | get | Detalle. |
update | update | Cambia condiciones. |
pause | pause | La pausa. |
resume | resume | La reanuda. |
cancel | cancel | La da de baja. |
reactivate | reactivate | Reactiva una dada de baja. |
generateNow | generate_now | Emite ya la factura del periodo. |
getUpcomingCharge | get_upcoming_charge | Próximo cobro y si el cobro automático está listo. |
listInvoices | list_invoices | Facturas generadas. |
listLogs | list_logs | Historial del generador. |
retryCharge | retry_charge | Reintenta el cobro de una de sus facturas. |
paymentAuthorizations
Guía: Autorizaciones de cobro. En Python, sdk.payment_authorizations. sdk.mandates es su alias en desuso.
| JavaScript | Python | Qué hace |
|---|---|---|
getConsentText | get_consent_text | Texto de consentimiento vigente. |
create | create | Registra la aceptación. |
list | list | Lista autorizaciones. |
get | get | Detalle de una. |
revoke | revoke | La retira. |
webhooks
Verificación de los avisos que UTILIA OS envía a tu servidor, de cualquier familia de eventos. Usa siempre el cuerpo tal cual llega, sin volver a convertirlo: reordenar las claves rompe la firma. El margen contra reenvíos se cambia con toleranceSeconds (tolerance_seconds). Más en Firma HMAC de los webhooks.
| JavaScript | Python | Qué hace |
|---|---|---|
verify | verify | Comprueba la firma y la ventana de 300 s contra reenvíos; devuelve el sobre. |
parse | parse | Lo mismo, devolviendo el evento ya tipado. |
Chat
chat
La aplicación participa en los canales de chat con identidad propia: publica mensajes y lee canales, miembros e historial según los canales que tenga concedidos. Además tiene chat.agents (agentes gestionados: install, list, update, pause, resume y remove) y chat.webhooks.verify, alias de sdk.webhooks.verify. Guía: SDK del chat.
| JavaScript | Python | Qué hace |
|---|---|---|
sendMessage | send_message | Publica un mensaje como aplicación. |
listChannels | list_channels | Canales a los que la aplicación tiene acceso. |
getChannel | get_channel | Detalle de un canal. |
listMembers | list_members | Miembros de un canal. |
listMessages | list_messages | Historial visible de un canal. |
getMessage | get_message | Un mensaje. |
createChannel | create_channel | Crea un canal. |
updateChannel | update_channel | Cambia un canal. |
archiveChannel | archive_channel | Archiva un canal. |
addMember | add_member | Añade un miembro. |
removeMember | remove_member | Quita un miembro. |
Servicios no alcanzables hoy
Estos servicios existen en los dos SDK con los mismos métodos, pero sus rutas exigen una sesión de usuario del panel (ver el aviso de arriba).
contacts
| JavaScript | Python | Qué hace |
|---|---|---|
create | create | Crea un contacto. |
get | get | Detalle. |
list | list | Lista contactos. |
update | update | Actualiza. |
delete | delete | Elimina. |
listByClient | list_by_client | Contactos de un cliente. |
searchByEmail | search_by_email | Busca por correo. |
changeStatus | change_status | Cambia el estado. |
setPrimary | set_primary | Lo marca como principal. |
linkClient | link_client | Lo vincula a un cliente. |
unlinkClient | unlink_client | Lo desvincula. |
updateClientLink | update_client_link | Cambia el vínculo. |
setPrimaryClient | set_primary_client | Marca el cliente principal del contacto. |
listClients | list_clients | Clientes vinculados. |
budgets
Presupuestos del CRM. Métodos, en JavaScript (en Python, los mismos en snake_case):
- Altas, versiones y consultas:
list,get,create,update,delete,deletePermanent,duplicate,createVersion,getHistory,listByClient,listByProjectylistByOpportunity. - Partidas y secciones:
addItem,updateItem,removeItem,reorderItems,listSections,addSection,updateSection,removeSectionyreorderSections. - Flujo y conversiones:
send,approve,reject,cancel,changeStatus,extendValidity,convertToProjectyconvertToInvoice. - PDF, adjuntos e imágenes:
generatePdf,viewPdf,getPdfUrl,getAttachments,uploadAttachment,deleteAttachment,uploadEditorImage,listImages,getImage,uploadImage,uploadImageToSection,createImageFromFile,scanLegacyImages,migrateLegacyImages,updateImagePosition,updateImageCrop,updateImageDimensions,updateImageCaption,replaceImageFile,deleteImageyreorderImages. - Códigos, estadísticas, lotes y exportación:
getNextCode,checkCode,getStats,bulkyexport. - Generación con IA:
generateItemsWithAi,streamGenerateItemsStatus,generateCompleteWithAiygenerateSectionsWithAi.
budgetTemplates
| JavaScript | Python | Qué hace |
|---|---|---|
list | list | Lista plantillas. |
get | get | Detalle. |
create | create | Crea una plantilla. |
update | update | La actualiza. |
delete | delete | La elimina. |
createFromBudget | create_from_budget | Crea una plantilla a partir de un presupuesto. |
applyTemplate | apply_template | Aplica una plantilla a un presupuesto. |
budgetComments
| JavaScript | Python | Qué hace |
|---|---|---|
list | list | Comentarios de un presupuesto. |
get | get | Un comentario. |
create | create | Crea un comentario (INTERNAL o CLIENT). |
update | update | Lo edita. |
remove | remove | Lo elimina. |
bulkCreate | bulk_create | Crea varios a la vez. |
getTimeline | get_timeline | Cronología de comentarios. |
budgetSignatures
Firma electrónica de presupuestos: list, get, verify, downloadCertificate, getCertificateUrl, forceSendSignature, generateSigningLink, listSigningLinks, revokeSigningLink, getAuditTrail, listRequiredSigners, addRequiredSigner, updateRequiredSigner, removeRequiredSigner, extendValidity, revokeViewToken y regenerateSigningToken (en Python, en snake_case).
calendar
| JavaScript | Python | Qué hace |
|---|---|---|
getAvailability | get_availability | Huecos disponibles. |
checkAvailability | check_availability | Si un horario está libre. |
listOpenConflicts | — | Conflictos de horario abiertos (solo JavaScript). |
organizationSettings
| JavaScript | Python | Qué hace |
|---|---|---|
getPublicSettings | get_public_settings | Datos públicos de la organización: identidad, marca y valores de facturación. |
OAuth
Disponible solo si creas el cliente con oauth; si no, acceder a sdk.oauth lanza un error de validación. Guía: OAuth con el SDK.
| JavaScript | Python | Qué hace |
|---|---|---|
getAuthorizationUrl | get_authorization_url | Dirección de autorización con PKCE automático. |
getLoginUrl | get_login_url | Lo mismo, devolviendo verificador y state para gestionarlos tú. |
handleCallback | handle_callback | Canjea el código por tokens. |
loginWithPopup | — | Autorización en ventana emergente (solo navegador). |
refreshToken | refresh_token | Renueva el token de acceso. |
getAccessToken | get_access_token | Token vigente, renovado si hacía falta. |
isAuthenticated | is_authenticated | Si hay sesión utilizable. |
logout | logout | Revoca y borra la sesión. |
getUserInfo | get_user_info | Datos de la persona. |
revokeToken | revoke_token | Revoca un token de la sesión. |
revoke | revoke | Revoca un token cualquiera. |
introspect | introspect | Estado de un token (solo aplicaciones confidenciales, con clientSecret). |
getAuthorizedApps | get_authorized_apps | Aplicaciones autorizadas por la persona. |
revokeApp | revoke_app | Retira la autorización de una aplicación. |
MCP
sdk.mcp agrupa servicios tipados sobre las herramientas MCP de UTILIA OS (POST /api/mcp/{servidor}). Actúan en nombre de una persona, con su sesión OAuth, y cada uno apunta al servidor que le corresponde. Los errores de la herramienta llegan como UtiliaSDKError con el mensaje del servidor; por esta vía no viaja el errorCode de plan (ver Errores de plan).
| JavaScript | Python | Qué cubre |
|---|---|---|
mcp.crm | mcp.crm | Clientes, contactos y leads del CRM (crm_clients, crm_contacts, crm_leads): ficha, imagen, lotes de hasta 50, duplicados y fusión. La fusión exige scopes propios (crm:clients:merge, crm:contacts:merge, crm:leads:merge) que ningún conjunto incluye, ni crm:full; y su vista previa es la misma operación sin confirmar: mira dryRun antes de dar nada por fusionado. |
mcp.opportunities | mcp.opportunities | Analítica de oportunidades. Guía: Oportunidades. |
mcp.marketing | mcp.marketing | Marketing: informes, campañas, listas, entregabilidad, medición y envío. Guía: Marketing. |
mcp.attendance | mcp.attendance | Calendario laboral (holidays: getScope, setScope, import y list). Elegir el ámbito y cargar el año exigen hr:attendance:manage. |
mcp.fiscalCapture | mcp.fiscal_capture | Rectificativas recibidas: consulta, guardado y lotes de hasta 25. |
mcp.tickets | mcp.tickets | Tickets de soporte interno: lectura y creación. Quien lo crea es siempre la persona autenticada. |
mcp.search | mcp.search | Buscador global: global y types. |
mcp.notifications | mcp.notifications | Avisos de la persona: list, get, unreadCount, markRead, markAllRead, dismiss, dismissAll, getPreferences y updatePreferences. |
mcp.integrations | mcp.integrations | Aplicaciones de desarrollador: OAuth, avisos a tu servidor, métricas y facturación. |
mcp.apiCredentials | mcp.api_credentials | Credenciales (PERSONAL, SERVICE_ACCOUNT y EXTERNAL_APP). |
mcp.orgIntegrationsSettings | mcp.org_integrations_settings | Claves de acceso y formularios de captación. |
mcp.integrationsOverview | mcp.integrations_overview | Vista de conjunto de las integraciones, de solo lectura. |
mcp.onboarding | mcp.onboarding | Cómo va la preparación de la persona autenticada: dónde se quedó y qué le falta. Es progreso personal, no de la empresa. |
mcp.integrationsLegacy | mcp.integrations_legacy | Alias en desuso de orgIntegrationsSettings. |
El catálogo completo de herramientas y servidores está en Referencia de herramientas MCP.
mcp.opportunities
| JavaScript | Python | Qué hace |
|---|---|---|
assignmentCounts | assignment_counts | Contadores «Mías», «Equipo» y «Todas». |
recommendations | recommendations | Hasta cinco acciones recomendadas. |
analyticsStaleDetection | analytics_stale_detection | Estancadas y vencidas, por etapa. |
analyticsLossReasons | analytics_loss_reasons | Diez motivos de pérdida más frecuentes y la fila OTHER. |
analyticsTopContributors | analytics_top_contributors | Ranking por valor ganado (permiso «Ver pipeline del equipo»). |
getPipelineStats | get_pipeline_stats | Reparto por etapa. |
getForecast | get_forecast | Previsión a N meses (permiso «Ver información financiera de oportunidades»). |
getTimeline | get_timeline | Actividad de una oportunidad. |
listStages | list_stages | Etapas del pipeline por defecto, en orden. |
mcp.marketing
Cubre ocho herramientas enteras: reports (marketing_reports, 12 operaciones), campaigns (marketing_campaigns, 41), lists (marketing_lists, 25), deliverability (marketing_deliverability, 14), trackingSettings (marketing_tracking_settings, 3), trackingDomains (email_tracking_domains, 8), bounceSettings (marketing_bounce_settings, 5) y sendingRoutes (email_sending_routes, 12). En Python, los sub-espacios van en snake_case (tracking_settings, sending_routes…). Exigen el aplicativo Marketing, salvo sendingRoutes, que exige la capacidad «Servidor de envío propio».
Informes (reports). Todas son de solo lectura.
| JavaScript | Python | Qué hace |
|---|---|---|
campaignStats | campaign_stats | Métricas de una campaña, con las tasas ya calculadas (EMAIL_MARKETING_VIEW). |
engagementOverview | engagement_overview | Agregados del periodo: campañas, aceptados, aperturas, clics, rebotes y bajas (EMAIL_MARKETING_VIEW). |
clickThrough | click_through | Clics por dirección de destino (EMAIL_MARKETING_VIEW). |
topCampaigns | top_campaigns | Ranking del periodo, sin reenvíos ni variantes A/B (EMAIL_MARKETING_ANALYTICS). |
engagementHeatmap | engagement_heatmap | Interacción por hora o por día de la semana (EMAIL_MARKETING_ANALYTICS). |
engagementTrends | engagement_trends | Serie por día, semana o mes (EMAIL_MARKETING_ANALYTICS). |
campaignAttribution | campaign_attribution | Negocio originado por una campaña, con desglose opcional (EMAIL_MARKETING_ANALYTICS y capacidad «Negocio por campaña»). |
attributionSummary | attribution_summary | El mismo agregado para un periodo (ídem). |
entityOrigin | entity_origin | De qué campaña vino una oportunidad o un cliente (EMAIL_MARKETING_VIEW y el permiso de la ficha). |
complaints | complaints | Quejas por correo no deseado; la tasa llega como null, nunca 0, si no se puede medir (EMAIL_MARKETING_ANALYTICS). |
linkHeatmap | link_heatmap | Qué enlace concreto se pulsa (EMAIL_MARKETING_VIEW y capacidad «Analítica avanzada de Marketing»). |
audienceTech | audience_tech | Aparato, programa de correo o país; por defecto sobre los clics (ídem). |
Cifras que se leen mal si no sabes qué cuentan
delivered vale null cuando la organización no detecta los correos devueltos: sin eso sería el mismo número que accepted. clickToOpenRate se divide entre las aperturas únicas, así que puede superar el 100 %. Los importes de la atribución no viajan por este servidor: llegan los recuentos y el bloque de dinero aparece en excludedBlocks con reason: 'missing_scope'; no lo presentes como un cero. Y las facturas emitidas con invoices.create no tienen vínculo comercial, así que quedan fuera del negocio originado por cualquier campaña. Las definiciones están en Métricas de Marketing.
Campañas (campaigns). Las 41 operaciones de la herramienta: el ciclo de vida de una campaña (list, get, create, update, editContent, delete, duplicate, send, getSendStatus, schedule, pause, resume, cancel, testSend, preview, previewHtml…), sus destinatarios, el comportamiento de la audiencia y los segundos intentos. Algunas a destacar:
| JavaScript | Python | Qué hace |
|---|---|---|
engagementBreakdown | engagement_breakdown | Reparto de la audiencia en los siete grupos (EMAIL_MARKETING_VIEW). |
resendPreview | resend_preview | Qué supondría volver a escribir a un grupo; no crea nada (EMAIL_MARKETING_VIEW y capacidad «Analítica avanzada de Marketing»). |
createResend | create_resend | Crea en borrador la campaña del segundo intento (EMAIL_MARKETING_CREATE y la capacidad). |
listResends | list_resends | Segundos intentos con su resultado (EMAIL_MARKETING_VIEW). |
preflight | preflight | Comprobación previa al envío, sin enviar. |
recipientTimeline | recipient_timeline | Historial de un correo concreto. |
listReplies | list_replies | Quién ha contestado. |
Los siete grupos de engagementBreakdown no son porciones de una tarta: opened ya incluye a clicked y a opened_not_clicked. En un segundo intento no se vuelve a escribir a quien se quejó, el asunto tiene que ser distinto, hay como mucho dos por campaña y los contadores de la original no se tocan. listRecipients devuelve aparato, programa de correo y país solo con el permiso EMAIL_MARKETING_VIEW_RECIPIENT_DETAIL y el scope marketing:recipients:detail:view; sin ellos responde igual, sin esos campos y con recipientDetailIncluded: false.
Listas (lists). Las 25 operaciones de la herramienta, entre ellas:
| JavaScript | Python | Qué hace |
|---|---|---|
listSubscribers | list_subscribers | Suscriptores con su interés y si están apartados (EMAIL_MARKETING_VIEW). |
engagementSummary | engagement_summary | Recuento por banda de interés (EMAIL_MARKETING_VIEW y capacidad). |
setAsideInactive | set_aside_inactive | Aparta a los inactivos; por defecto, solo vista previa (EMAIL_MARKETING_LISTS_MANAGE y capacidad). |
reactivateSubscriber | reactivate_subscriber | Vuelve a incluir a un apartado (ídem). |
Apartar no es dar de baja: no cambia la suscripción ni su consentimiento; la persona deja de recibir campañas y se la reincorpora en un clic. El servidor exige 90 días sin abrir ni pulsar y al menos dos correos recibidos.
Entregabilidad (deliverability). Las 14 operaciones de la herramienta, entre ellas:
| JavaScript | Python | Qué hace |
|---|---|---|
getComplaintPolicy | get_complaint_policy | Umbral propio de quejas, pausa automática, techo de la plataforma y estado del bloqueo. |
setComplaintPolicy | set_complaint_policy | Solo thresholdBps (de 10 a 30) y autoPauseEnabled (EMAIL_MARKETING_DELIVERABILITY_MANAGE). |
Solo puedes ser más estricto que la plataforma: el techo del 0,3 % y el bloqueo del servidor compartido no se configuran desde aquí.
Medición del origen (trackingSettings).
| JavaScript | Python | Qué hace |
|---|---|---|
get | get | Configuración vigente, con capabilityActive y canManage ya resueltos (EMAIL_MARKETING_VIEW). |
update | update | Cambia utmEnabled, utmTemplate, recipientTokenEnabled y recipientTokenTtlDays (EMAIL_MARKETING_TRACKING_MANAGE). |
previewLink | preview_link | Cómo quedaría un enlace; no firma ni emite nada real (EMAIL_MARKETING_VIEW). |
Encender recipientTokenEnabled es una decisión de protección de datos: exige la capacidad «Negocio por campaña» y conviene ampliar antes la información que recibe quien rellena el formulario. Ver Medición del origen de tus campañas.
Dominio propio de los enlaces (trackingDomains). Hace que los enlaces de las campañas vuelvan por un subdominio de la organización.
| JavaScript | Python | Qué hace |
|---|---|---|
list | list | Dominios de medición; como mucho uno vivo. |
get | get | Estado, caducidad del certificado y hasta cuándo se atiende. |
getSetupInstructions | get_setup_instructions | El registro CNAME que hay que publicar. |
create | create | Da de alta el subdominio; todavía no mide. |
verify | verify | Comprueba el CNAME en el DNS real. |
setEmission | set_emission | Enciende o apaga la medición por ese dominio. |
retryCertificate | retry_certificate | Vuelve a pedir el certificado. |
retire | retire | Programa el fin del servicio; no borra nada. |
Ninguna operación borra nada, porque un correo ya enviado lleva el dominio escrito: retire devuelve en serveUntil hasta cuándo se siguen atendiendo sus enlaces. Ver Enlaces con tu propio dominio.
Errores y tipos
Todos los métodos lanzan UtiliaSDKError cuando algo falla. Qué trae y cómo tratarlo está en Gestionar errores. Los dos paquetes exportan además los tipos o modelos de todos los servicios y la constante SDK_LIMITS: ver Tipos y modelos y Límites y validaciones. El historial de cambios está en Versiones y compatibilidad.