Saltar al contenido principal

Agencias y workspaces

Una agencia que gestiona el WhatsApp de varios clientes separa cada uno en un workspace: una cuenta completa, con sus propios números, contactos, conversaciones, etiquetas, campos, públicos, supresiones, flujos, campañas, plantillas, claves de API, webhooks y sitios. Nada de un cliente aparece en otro. Todos los workspaces están en la suscripción de la agencia: una sola factura, con números, mensajes, contactos y plazas sumados en el grupo.

Los workspaces se crean y gestionan en el panel, en la pantalla Workspaces de la cuenta de la agencia. La API no crea ni elimina workspaces; lo que cambia para una integración está abajo.

Cuántos. El dueño de la cuenta abre un workspace por cada número de WhatsApp que permite el plan, sin pedir nada a nadie: un plan de tres números cubre tres clientes. En un plan sin límite de números, no hay límite de workspaces.

Una clave pertenece a una cuenta​

Una clave de API es siempre de una cuenta — la de la agencia o la de un cliente — y solo alcanza lo que es de ella. Para integrar el sitio o el sistema de un cliente, crea la clave dentro de su workspace (entra en el cliente desde el selector de cuentas del panel y ve a Claves de API). Una clave de la cuenta de la agencia no envía por los números de un cliente, y la de un cliente no ve a los demás.

Todo lo demás funciona como en cualquier cuenta: la clave puede limitarse a algunos números, y los webhooks registrados en un workspace reciben solo los eventos de ese cliente.

Saber de quién es la cuenta​

GET /account/me trae parent: la agencia que gestiona y paga la cuenta cuando es el workspace de un cliente, y null en una cuenta común.

{
"data": {
"id": "cm1clinica",
"name": "Clínica Sonrisa",
"parent": { "id": "cm1agencia", "name": "Agencia Acme" },
"wabas": []
}
}

Cobrar a cada cliente lo que usó​

GET /workspaces, con la clave sin restricción de números de la cuenta de la agencia, devuelve el grupo: primero la cuenta de la agencia y después cada workspace, con lo que consumió en el período de facturación (usage: números conectados, contactos y mensajes). Es la cifra que la agencia usa para repercutir el costo a cada cliente.

curl https://api.joinotify.com/workspaces \
-H "Authorization: Bearer sk_live_DE_LA_AGENCIA"

La clave de un workspace recibe 409 not_principal, y una clave limitada a números recibe 403: un cliente nunca se entera de los demás.

Leer los contactos de todos los clientes​

GET /contacts?account=all, con la clave sin restricción de números de la agencia, lista los contactos de la agencia y de todos los workspaces, con los mismos filtros de la lista común; ?account=<id del workspace> lista los de un solo cliente. Cada contacto trae workspace — el cliente del que viene, o null para los de la propia agencia.

Entregar activos a un cliente​

Desde el panel, el dueño de la agencia entrega al workspace de un cliente lo que estaba en la cuenta de la agencia: contactos (los que la agencia aún usa se copian; los demás cambian de cuenta), un flujo (copiado como borrador) y una clave de API. Una clave entregada conserva el mismo secreto: lo que la integración envíe desde entonces llega al cliente. La clave también puede crearse directamente en el workspace, desde la cuenta de la agencia.

El dinero es de la agencia​

Un workspace no tiene suscripción, factura, cartera ni programa de afiliados propios. /wallet y /affiliate responden 409 billed_by_parent con la clave de un workspace; lo que se consulta sobre facturación se consulta con la clave de la agencia.

Clientes que estaban mezclados​

La agencia que ya atendía a varios clientes en una sola cuenta lleva cada uno a su workspace desde el panel, un WABA a la vez: el WABA llega con sus números, plantillas, conversaciones, contactos y las claves limitadas solo a esos números. Después, esas claves pasan a ser del workspace — la integración sigue funcionando sin cambiar la clave, pero GET /account/me pasa a responder con el cliente y con parent.