1MSG

Обновить метаданные WhatsApp Flow

PATCH
/flows/{flowId}/metadata

Обновляет метаданные Flow. Нужно хотя бы одно из: name, categories, endpointUri.

endpointUri — HTTPS-адрес вашего сервера data channel. WhatsApp вызывает его зашифрованным POST; это не webhook канала. В описании поля — поля запроса, расшифровка и путь завершения nfm_reply.

Authorization

JWT token
querytoken<token>

Path Parameters

flowId*string

Идентификатор Flow

Request Body

application/json
  1. body

Нужно указать name, categories или endpointUri

name?string

New Flow name

categories?array<>

Replacement Flow categories

endpointUri?string

HTTPS-адрес вашего сервера для data channel этого Flow. Это не маршрут 1msg, и эти вызовы не приходят на webhookUrl канала.

WhatsApp отправляет POST JSON с полями encrypted_flow_data, encrypted_aes_key и initial_vector. Расшифруйте encrypted_aes_key приватным RSA-ключом от загруженного business_public_key (RSA-OAEP, SHA-256), затем encrypted_flow_data через AES-128-GCM (initial_vector — IV, последние 16 байт ciphertext — auth tag). Ответ — эта ciphertext-строка в base64 и заголовок Content-Type: text/plain. Шифруйте ответ тем же AES-ключом и IV, у которого инвертирован каждый байт. Если расшифровать запрос не удалось, ответьте HTTP 421: приложение WhatsApp заново запросит публичный ключ.

Тот же URL получает служебный ping. Ответьте в том же зашифрованном виде; расшифрованное тело — {"data":{"status":"active"}}. ping и обмены экранами не приходят в webhook канала. Когда пользователь отправляет форму, итог приходит на webhookUrl канала: messages[].interactive.type = nfm_reply.

Сначала загрузите публичный ключ через POST /whatsapp_business_encryption и вызывайте GET /whatsapp_business_encryption, пока business_public_key_signature_status не станет VALID.

Formaturi

Response Body

Обновлено

application/json
  1. response
success?boolean
curl -X PATCH 'https://api.1msg.io/123/flows/string/metadata' \  -H 'Content-Type: application/json' \  -d '{  "name": "lead_form_v2",  "endpointUri": "https://example.com/flow"}'
{  "success": true}