curl --request PATCH \
--url https://api.finsync.ar/api/whatsapp/tools/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{}'const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.finsync.ar/api/whatsapp/tools/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.finsync.ar/api/whatsapp/tools/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.finsync.ar/api/whatsapp/tools/{id}"
payload = {}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"id": 123,
"company_id": 123,
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"enabled": true,
"company_operation_type_id": 123,
"mode": "standard",
"fixed_config": {
"toolKind": "up_down",
"operationTypeId": 123
},
"parameter_schema": {
"parameters": [
{}
]
},
"created_by": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z"
}Update a WhatsApp tool
Renames, enables/disables, or updates fixed_config / parameter_schema on an existing company tool. Same validation as dashboard PATCH /api/kapso/tools/:id. At least one field is required. Cross-company ids return 404.
curl --request PATCH \
--url https://api.finsync.ar/api/whatsapp/tools/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{}'const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.finsync.ar/api/whatsapp/tools/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.finsync.ar/api/whatsapp/tools/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.finsync.ar/api/whatsapp/tools/{id}"
payload = {}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"id": 123,
"company_id": 123,
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"enabled": true,
"company_operation_type_id": 123,
"mode": "standard",
"fixed_config": {
"toolKind": "up_down",
"operationTypeId": 123
},
"parameter_schema": {
"parameters": [
{}
]
},
"created_by": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z"
}Authorizations
API Key for authentication
Path Parameters
WhatsApp tool ID
Body
100Same discriminated fixed_config stored on WhatsAppOperationTool and sent by Configuración > WhatsApp > Tools. Validated with whatsAppToolFixedConfigSchema. operationTypeId must be a CompanyOperationTypes id of this company and must match toolKind (up/down → up_down, other → other, exchange → exchange, budget → budget). Budget config uses costCenter/paymentSourceMode/internalAccount/payerClient/amount/description; it does not require up_down mode/source/destination. Direction defaults to expense. paymentSourceMode defaults to internal (caja). Expense+external credits a type=1 CC (payerClientId) and does not debit caja. If internalAccountId is omitted on internal, confirm uses the cost center default caja.
Show child attributes
Show child attributes
Dynamic fields the bot asks for (parameter_schema). Same shape as the dashboard form: { parameters: [...] }. Omit or send { parameters: [] } when every field is fixed.
Show child attributes
Show child attributes
Response
Updated tool
WhatsAppOperationTool row (deleted_at IS NULL). List includes disabled tools.
100Copied from fixed_config.operationTypeId
Legacy UP/DOWN column. OTHER, EXCHANGE, and BUDGET store standard here; real settings live in fixed_config.
standard, internal_transfer, third_party Same discriminated fixed_config stored on WhatsAppOperationTool and sent by Configuración > WhatsApp > Tools. Validated with whatsAppToolFixedConfigSchema. operationTypeId must be a CompanyOperationTypes id of this company and must match toolKind (up/down → up_down, other → other, exchange → exchange, budget → budget). Budget config uses costCenter/paymentSourceMode/internalAccount/payerClient/amount/description; it does not require up_down mode/source/destination. Direction defaults to expense. paymentSourceMode defaults to internal (caja). Expense+external credits a type=1 CC (payerClientId) and does not debit caja. If internalAccountId is omitted on internal, confirm uses the cost center default caja.
Show child attributes
Show child attributes
Dynamic fields the bot asks for (parameter_schema). Same shape as the dashboard form: { parameters: [...] }. Omit or send { parameters: [] } when every field is fixed.
Show child attributes
Show child attributes