Clientes
| Tool | Endpoint REST | Anotaciones |
|---|---|---|
list_clients | GET /v1/clients | lectura, idempotente |
get_client | GET /v1/clients/{identifier} | lectura, idempotente |
list_client_conversations | GET /v1/clients/{clientId}/conversations | lectura, idempotente |
create_client | POST /v1/clients | escritura (upsert si ya existe) |
update_client | PATCH /v1/clients/{phoneNumber} | escritura, parcial |
delete_client | DELETE /v1/clients/{identifier} | destructiva |
block_client | PATCH /v1/clients/{identifier}/moderation | destructiva |
unblock_client | PATCH /v1/clients/{identifier}/moderation | escritura |
reset_client_strikes | PATCH /v1/clients/{identifier}/moderation | destructiva |
Las tres herramientas de moderación pegan al mismo endpoint declarativo: la API expone uno solo porque los verbos se traslapan (desbloquear ya restablece strikes), pero aquí se conservan como verbos porque el nombre de la herramienta es lo que le dice al agente qué hace.
Además de status, get_client devuelve el objeto moderation completo. list_clients sólo devuelve status.
list_clients
Lista clientes del workspace agrupados, con paginación y filtros opcionales.
| Campo | Tipo | Default |
|---|---|---|
limit | 1-200 | 50 |
pageToken | string | — |
offset | ≥ 0 (máx 100000) | 0 |
sortBy | "name" \| "creationDate" | name |
sortDirection | "asc" \| "desc" | asc |
searchTerm | string | — |
status | "active" \| "blocked" | — |
tags | string[] (máx 10) | — |
dateFilter | objeto | — |
status: "active" incluye a los clientes que nunca tuvieron un estado explícito.
pageToken es el cursor de la respuesta anterior y se prefiere sobre offset; no se combinan.
get_client
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
identifier | string | sí | ID del cliente o número de teléfono (E.164). |
Además del perfil, devuelve el estado de moderación del contacto (strikes acumulados, última falta, motivo y fecha del bloqueo). Esa sección sólo aparece si el contacto tiene historial o está bloqueado.
list_client_conversations
Lista todas las conversaciones del cliente en todos sus canales y agentes, incluidos chats API.
Cada resultado incluye el resumen completo sin messages: id, conversationId, clientId, agentId, canSendDirectMessage, workspaceId, channelId, contactName, phoneNumber, topic, platform, source, status, operation, messageCount, owners, tags, creationDate y lastUpdate.
id es el documento canónico, conversationId identifica el hilo y clientId identifica al
cliente. canSendDirectMessage solo puede ser false en WhatsApp, Instagram y Messenger/Facebook,
según el último mensaje del usuario; en chats internos de Platica siempre es true.
| Campo | Tipo | Requerido | Default | Descripción |
|---|---|---|---|---|
clientId | string | sí | — | ID del cliente o teléfono E.164. |
channelId | string | no | — | Filtra por canal. |
agentId | string | no | — | Filtra por agente principal. |
limit | 1-200 | no | 50 | Máximo de resultados. |
offset | ≥ 0 | no | 0 | Offset de paginación. |
create_client
Crea un nuevo cliente; si ya existe uno con el mismo teléfono, lo actualiza (upsert).
| Campo | Tipo | Requerido |
|---|---|---|
phoneNumber | string E.164 | sí |
name | string | sí |
workspace | string | si multi-ws |
email, firstname, lastname, birthdate, gender, company, country, state, city, address, postalCode | string | no |
tags | string[] | no |
customFields | Record<string, unknown> | no |
owners | string[] | no |
Ejemplo
{
"name": "create_client",
"arguments": {
"phoneNumber": "+521234567890",
"name": "Ana López",
"email": "ana@example.com",
"tags": ["vip", "nuevo"]
}
} update_client
Actualiza un cliente por su número de teléfono. Sólo se aplican los campos provistos.
Acepta los mismos campos que create_client (todos opcionales excepto phoneNumber) más:
| Campo | Tipo | Descripción |
|---|---|---|
status | "active" \| "blocked" | Bloquea o desbloquea al contacto, con los mismos efectos que block_client / unblock_client. |
delete_client
| Campo | Tipo | Requerido |
|---|---|---|
identifier | string | sí |
workspace | string | si multi-ws |
Borrado irreversible. El documento del contacto se conserva con sus identificadores de canal, pero se limpian sus datos personales, etiquetas y campos personalizados, y deja de aparecer en listados. Sus notas privadas y los adjuntos de éstas se eliminan de forma definitiva.
block_client
Bloquea a un contacto: sus conversaciones futuras nacen como spam, los agentes dejan de responderle y las que ya estaban abiertas se marcan como spam para que el bloqueo aplique de inmediato.
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
identifier | string | sí | ID del cliente o teléfono (E.164). |
workspace | string | si multi-ws | — |
reason | string (máx 120) | no | Motivo que queda registrado. Por defecto api_request. |
Ejemplo
{
"name": "block_client",
"arguments": {
"identifier": "+521234567890",
"reason": "abuso_reportado"
}
} unblock_client
Desbloquea a un contacto, devuelve a finished las conversaciones que el bloqueo había marcado como spam y pone sus strikes en cero, para que una sola falta más no lo vuelva a bloquear. El registro de la última falta se conserva.
| Campo | Tipo | Requerido |
|---|---|---|
identifier | string | sí |
workspace | string | si multi-ws |
reset_client_strikes
Pone en cero los strikes de moderación del contacto. No lo desbloquea: para eso usa unblock_client, que ya restablece los strikes de paso. Úsala para perdonar a un contacto que acumuló faltas pero todavía no fue bloqueado.
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
identifier | string | sí | ID del cliente o teléfono (E.164). |
workspace | string | si multi-ws | — |
clearHistory | boolean | no | Borra además el registro de la última falta (categorías, términos, severidad). |