iachat/app/views/api/v1/models
Shivam Mishra 95463230cb
feat: sign webhooks for API channel and agentbots (#13892)
Account webhooks sign outgoing payloads with HMAC-SHA256, but agent bot
and API inbox webhooks were delivered unsigned. This PR adds the same
signing to both.

Each model gets a dedicated `secret` column rather than reusing the
agent bot's `access_token` (for API auth back into Chatwoot) or the API
inbox's `hmac_token` (for inbound contact identity verification). These
serve different trust boundaries and shouldn't be coupled — rotating a
signing secret shouldn't invalidate API access or contact verification.

The existing `Webhooks::Trigger` already signs when a secret is present,
so the backend change is just passing `secret:` through to the jobs.
Shared token logic is extracted into a `WebhookSecretable` concern
included by `Webhook`, `AgentBot`, and `Channel::Api`. The frontend
reuses the existing `AccessToken` component for secret display. Secrets
are admin-only and excluded from enterprise audit logs.

### How to test

Point an agent bot or API inbox webhook URL at a request inspector. Send
a message and verify `X-Chatwoot-Signature` and `X-Chatwoot-Timestamp`
headers are present. Reset the secret from settings and confirm
subsequent deliveries use the new value.

---------

Co-authored-by: Sojan Jose <sojan@pepalo.com>
2026-04-06 15:28:25 +05:30
..
_account.json.jbuilder feat: Add support for minutes in auto resolve feature (#11269) 2025-05-07 00:36:15 -07:00
_agent_bot_slim.json.jbuilder feat: APIs to assign agents_bots as assignee in conversations (#12836) 2025-11-18 18:20:58 -08:00
_agent_bot.json.jbuilder feat: sign webhooks for API channel and agentbots (#13892) 2026-04-06 15:28:25 +05:30
_agent.json.jbuilder feat: SAML feedback changes [CW-5666] (#12511) 2025-09-24 16:07:07 +05:30
_app.json.jbuilder feat: integrate LeadSquared CRM (#11284) 2025-04-29 09:14:00 +05:30
_campaign.json.jbuilder feat: WhatsApp campaigns (#11910) 2025-07-16 09:04:02 +05:30
_contact_inbox.json.jbuilder feat: hide tokens and password on contact inbox payloads (#10888) 2025-02-20 21:22:12 -08:00
_contact.json.jbuilder feat: Add the ability to block/unblock contact via contact details page (#10899) 2025-02-13 14:59:35 -08:00
_conversation.json.jbuilder revert: "fix: message_type inconsistency across message end points" (#10119) 2024-09-16 20:00:11 +05:30
_csat_survey_response.json.jbuilder feat(ee): Review Notes for CSAT Reports (#13289) 2026-01-15 19:53:57 -08:00
_custom_attribute_definition.json.jbuilder feat: Support Regex validation for custom attributes (#7856) 2024-01-23 18:01:57 +04:00
_custom_filter.json.jbuilder fix: Revert the changes for SyncCustomFilterCountJob (#8238) 2023-10-27 10:45:48 -07:00
_dashboard_app.json.jbuilder feat: Allow users to create dashboard apps to give agents more context (#4761) 2022-06-01 11:13:10 +05:30
_hook.json.jbuilder fix: Update email alerts for Slack integration (#7739) 2023-08-17 11:46:37 -07:00
_inbox_slim.json.jbuilder chore: Fix issue with compose conversation form (#10991) 2025-02-27 21:45:20 +05:30
_inbox.json.jbuilder feat: sign webhooks for API channel and agentbots (#13892) 2026-04-06 15:28:25 +05:30
_macro.json.jbuilder chore: Macros enhancement (#5609) 2022-10-20 19:41:48 -07:00
_message.json.jbuilder revert: "fix: message_type inconsistency across message end points" (#10119) 2024-09-16 20:00:11 +05:30
_note.json.jbuilder fix: DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated (#5560) 2022-10-05 17:24:34 -07:00
_portal_config.json.jbuilder feat: Add draft status for help center locales (#13768) 2026-03-17 12:45:54 +04:00
_team.json.jbuilder chore: Improve search, list performance of contact/conversation APIs (#2696) 2021-07-23 18:39:24 +05:30
_user.json.jbuilder chore: Custom Roles to manage permissions [ UI ] (#9865) 2024-09-17 11:40:11 -07:00
_widget_message.json.jbuilder revert: "fix: message_type inconsistency across message end points" (#10119) 2024-09-16 20:00:11 +05:30