niiko/developers

CRM v1 vigente

crm.contact_added

Añade una persona (nombre, y opcionalmente correo, teléfono y cargo) a la ficha de un cliente dicho por su nombre. No la hace contacto principal ni crea el cliente. Si ya había alguien con ese correo o teléfono, lo dice en la respuesta pero no lo impide.

Última actualización

POST /api/v1/actions/crm.contact_added
Alcance de la llave
crm.contact_added@1
Permiso del workspace
api.crm.contact_added apagado por defecto
Dos permisos, no uno

Hacen falta las dos cosas: una llave con ese alcance, y que el dueño del workspace haya encendido el permiso. Tener la llave no basta — son dos decisiones de personas distintas.

Petición

campotiporeglas
clientstringobligatoriomin 1 · max 200
namestringobligatoriomin 1 · max 200
emailstring (email)opcionalmax 320
phonestringopcionalmin 5 · max 40
rolestringopcionalmin 1 · max 120

Respuesta — output cuando status es done

campotiporeglas
clientIdstringobligatorio
clientNamestringobligatorio
contactIdstringobligatorio
possibleDuplicatebooleanobligatorio

Ejemplo

# One request, one idempotency key: retrying with the same key never runs twice.
curl -X POST https://niiko.org/api/v1/actions/crm.contact_added \
  -H "Authorization: Bearer nk_…" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "client": "…",
    "name": "…"
  }'
# 200 → done · 202 → pending_approval (a person signs later) · 4xx → refused, with a named reason

Por qué puede negarse

Cada motivo dice quién puede arreglarlo y cómo. Con motivo stale, detail.message dice qué hacer.

cliente_no_encontradocliente_ambiguodemasiados_clientessin_permiso

En los clientes

@vorluno/niiko-sdkniiko.addedContact()
niiko (Python)niiko.added_contact()
niiko-cliniiko run crm.contact_added
n8n-nodes-niikocrmContactAdded
niiko-mcp-servercrm_contact_added

Historial