清理: - 删除 34 份过时文档(gap reports/QA临时报告/验收报告/阶段性文档) - 删除 docs/.hermes/skills 第三方 skills 副本(16 文件) - 删除 skills-lock.json 目录归集: - 根目录仅保留 README.md 索引 - product/ — 产品与架构设计(PRD + ARCHITECTURE + P2设计文档 + AI/企业路线图) - tracking/ — Chatwoot parity 开发跟踪 - requirements/ — M01-M12 模块需求 - plans/ — 历史实现计划 - parity/ — 路由 parity 与前端契约 - qa/ — QA 报告与测试计划 - ops/ — 运维部署 命名规范: - 全小写 kebab-case,禁止全大写文件名 - product/tracking/ops 用 NN- 序号前缀 - requirements 用 MNN- 两位零填充模块号 - plans/qa 用 YYYY-MM-DD- 日期前缀 - requirements M1-M9 零填充为 M01-M09(修复字典序) 同步更新: - backend/cmd/route_parity/main.go 路径默认值 - backend/scripts/parity_frontend_smoke.sh 报告路径 - 所有 docs 内部交叉引用 - .gitignore 排除编译产物 (backend/gochat, backend/route_parity) - 新增迁移 000052/000053 - 前端 WS 相关修改
104 KiB
104 KiB
Frontend Contract Inventory
Generated: 2026-06-11
Source:reference/chatwoot/app/javascript/dashboard/api,reference/chatwoot/app/javascript/widget/api,reference/chatwoot/app/javascript/survey/api
Purpose: Phase 0 deliverable for GoChat ↔ Chatwoot/Woochat direct-connect alignment.
Scope
This inventory records the frontend API client contract that GoChat must satisfy without patching the reused Woochat/current Chatwoot frontend. It is intentionally route-and-owner focused; fixture tests and smoke runs should attach exact payload evidence to these rows as implementation proceeds.
Owner Summary
| Owner Area | Contract Entries |
|---|---|
| Auth/Profile/Account | 26 |
| Automation/Enterprise | 8 |
| CRM | 25 |
| CSAT/Survey | 7 |
| Captain/Copilot | 12 |
| Conversation/Message | 27 |
| Help Center | 8 |
| Inbox/Agents/Assignment | 41 |
| Integrations/Channels | 14 |
| Other | 20 |
| Reports/Audit | 14 |
| Widget | 22 |
Contract Entries
| Owner Area | Frontend File | Kind | Resource / Path | Scope | Methods Seen | GoChat Alignment Owner | Status |
|---|---|---|---|---|---|---|---|
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/CacheEnabledApiClient.js |
literal | /api/v1/accounts/${this.accountIdFromRoute}/cache_keys |
explicit | GET | internal/handler/api/v1/account_handler_test.go::TestCacheKeys_Success; internal/ws/event_publisher_test.go::TestEventPublisher_AccountCacheInvalidatedChatwootPayloadShape |
Covered for raw cache_keys response and account-cache invalidation payload used by CacheEnabledApiClient. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/account.js |
literal | /api/v1/accounts/${this.accountIdFromRoute}/cache_keys |
explicit | GET, POST | internal/handler/api/v1/account_handler_test.go::TestCacheKeys_Success; account update fixtures |
Covered for dashboard account cache-key fetch and account mutation/update fixtures; no frontend patch required. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/accountActions.js |
ApiClient | actions |
account-scoped | POST | internal/handler/api/v1/contact_handler_crud_test.go::TestChatwootFrontendContactMergeImportExportContracts; TestMergePublishesBaseUpdateAndMergeeDeleteEvents |
Covered for Woochat contact merge payload, raw contact response, merge side effects, and contact update/delete realtime events. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/agentBots.js |
ApiClient | agent_bots |
account-scoped | POST, PATCH, DELETE | internal/handler/api/v1/agent_bot_handler_test.go::TestAccountChatwootPayloadsAndRoutes; route parity exact for CRUD/avatar/reset actions |
Covered for account-scoped create/list/show/update/delete, multipart-compatible bind path, raw Chatwoot bot serializer keys, avatar delete, reset access token, reset secret, and account/global bot visibility boundaries. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/agentCapacityPolicies.js |
ApiClient | agent_capacity_policies |
account-scoped | GET, POST, PUT, DELETE | internal/handler/api/v1/agent_capacity_handler_test.go::TestChatwootPolicyInboxLimitAndUserFlow; TestChatwootPolicyInboxLimitAndUserValidationErrors |
Covered for policy CRUD, nested users, nested inbox limits, Chatwoot request body keys, count fields, and frontend-safe validation/not-found envelopes. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/agents.js |
ApiClient | agents |
account-scoped | POST | internal/handler/api/v1/agent_handler_test.go::TestCreateAgentChatwootFrontendPayload; agent list/order fixtures |
Covered for Woochat agent create response shape, raw Chatwoot agent serializer keys, role/availability/provider fields, and no envelope wrapping. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/assignableAgents.js |
ApiClient | assignable_agents |
account-scoped | GET | internal/handler/api/v1/assignable_agent_handler_test.go::TestList_StandaloneResourceUsesFrontendInboxIDsQuery; TestList_ResponseStructure; multi-inbox intersection tests |
Covered for Woochat inbox_ids query shape, standalone account-scoped resource path, response structure, admin inclusion, deduplication, and multi-inbox intersection semantics. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/assignmentPolicies.js |
ApiClient | assignment_policies |
account-scoped | GET, POST, DELETE | internal/handler/api/v1/assignment_policy_handler_test.go::TestPluralAssignmentPolicies_ChatwootPayloads; TestInboxAssignmentPolicy_ChatwootRoutes |
Covered for plural assignment-policy list payloads, assigned inbox counts, policy inbox listing, and account-scoped route compatibility. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/assignmentPolicies.js |
literal | /api/v1/accounts/${this.accountIdFromRoute}/inboxes/${inboxId}/assignment_policy |
explicit | GET, POST, DELETE | internal/handler/api/v1/assignment_policy_handler_test.go::TestInboxAssignmentPolicy_ChatwootRoutes |
Covered for Woochat inbox assignment-policy set/show/delete literal paths and assignment_policy_id payload. |
| Automation/Enterprise | reference/chatwoot/app/javascript/dashboard/api/attributes.js |
ApiClient | custom_attribute_definitions |
account-scoped | GET | internal/handler/api/v1/custom_attribute_definition_handler_test.go::TestCustomAttributeDefinitionHandler_ListChatwootFrontendPayload; filter-by-model fixtures |
Covered for Woochat custom attribute list response shape, attribute_model filters, Chatwoot serializer keys, and raw array response. |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/auditLogs.js |
ApiClient | audit_logs |
account-scoped | GET | internal/handler/api/v1/audit_handler_test.go::TestList_ChatwootPayloadFiltersAndSerializer; pagination/order fixtures |
Covered for audit log list filters, Chatwoot serializer keys, account scope, fixed page size, pagination meta, and descending order. |
| Automation/Enterprise | reference/chatwoot/app/javascript/dashboard/api/automation.js |
ApiClient | automation_rules |
account-scoped | POST | internal/handler/api/v1/automation_rule_handler_test.go::TestChatwootFrontendCRUDCloneTogglePayloadsAndValidation |
Covered for Woochat automation CRUD, clone, toggle, Chatwoot payload keys, and validation envelopes. |
| Automation/Enterprise | reference/chatwoot/app/javascript/dashboard/api/bulkActions.js |
ApiClient | bulk_actions |
account-scoped | standard CRUD | internal/handler/api/v1/bulk_action_handler_test.go::TestBulkActionHandler_ConversationEnqueuesChatwootPayload; contact/invalid-type fixtures |
Covered for conversation/contact bulk action request bodies, queued Chatwoot payloads, and invalid-type error payloads. |
| Automation/Enterprise | reference/chatwoot/app/javascript/dashboard/api/campaigns.js |
ApiClient | campaigns |
account-scoped | standard CRUD | internal/handler/api/v1/campaign_handler_test.go::TestChatwootFrontendPayloadsAndLifecycleUseDisplayID; TestStartCreatesCampaignConversationsAndMessages |
Covered for Woochat campaign list/show/create/update/delete/start/stop payloads, display-ID lifecycle behavior, and campaign conversation/message side effects. |
| Automation/Enterprise | reference/chatwoot/app/javascript/dashboard/api/cannedResponse.js |
ApiClient | canned_responses |
account-scoped | GET | internal/handler/api/v1/canned_response_handler_test.go::TestList_Success; search/create/update/delete account-scope fixtures |
Covered for Woochat canned-response list/search raw arrays, create/update raw payloads, delete empty OK, and account scoping. |
| Captain/Copilot | reference/chatwoot/app/javascript/dashboard/api/captain/assistant.js |
ApiClient | captain/assistants |
account-scoped | GET, POST | internal/handler/api/v1/captain_assistant_handler_test.go::TestCaptainAssistantHandler_CRUDUsesChatwootPayloadShape; playground fallback/provider fixtures |
Covered for assistant CRUD/list/search payloads, inbox binding, playground request shape, account scope, disabled fallback, and provider-error fallback. |
| Captain/Copilot | reference/chatwoot/app/javascript/dashboard/api/captain/bulkActions.js |
ApiClient | captain/bulk_actions |
account-scoped | standard CRUD | internal/handler/api/v1/captain_resource_parity_handler_test.go::TestCaptainBulkActionHandler_ChatwootResourceActions; label-suggestion fixture |
Covered for AssistantResponse approve/reject bulk action, AssistantDocument sync bulk action, invalid action envelope, and task-style label suggestion execution. |
| Captain/Copilot | reference/chatwoot/app/javascript/dashboard/api/captain/copilotMessages.js |
ApiClient | captain/copilot_threads |
account-scoped | GET, POST | internal/handler/api/v1/copilot_thread_handler_test.go::TestCopilotThreadMessagesListAndCreateUseNestedPayloads; push payload fixtures |
Covered for nested copilot message list/create payloads, account/user scope, provider-disabled fallback, and Chatwoot event push shape. |
| Captain/Copilot | reference/chatwoot/app/javascript/dashboard/api/captain/copilotThreads.js |
ApiClient | captain/copilot_threads |
account-scoped | standard CRUD | internal/handler/api/v1/copilot_thread_handler_test.go::TestCopilotThreadCreateReturnsChatwootPayload; list/get/delete scope fixtures |
Covered for copilot thread create/list/get/delete payloads, user ordering/scope, assistant scope validation, provider-enabled and provider-disabled flows. |
| Captain/Copilot | reference/chatwoot/app/javascript/dashboard/api/captain/customTools.js |
ApiClient | captain/custom_tools |
account-scoped | GET, POST, PUT, DELETE | internal/handler/api/v1/captain_resource_parity_handler_test.go::TestCaptainCustomToolHandler_ChatwootToolPayloadsAndScope; test-tool fixture |
Covered for custom-tool list/show/create/update/delete payloads, admin-only auth config, slug generation, account scope, test-tool response, and validation envelopes. |
| Captain/Copilot | reference/chatwoot/app/javascript/dashboard/api/captain/document.js |
ApiClient | captain/documents |
account-scoped | GET, POST | internal/handler/api/v1/captain_resource_parity_handler_test.go::TestCaptainDocumentHandler_ChatwootDocumentPayloadsAndSync; service job fixtures |
Covered for document list/show/create/update/delete/sync/crawl payloads, assistant filters, parser/embedding job side effects, and account scope. |
| Captain/Copilot | reference/chatwoot/app/javascript/dashboard/api/captain/inboxes.js |
ApiClient | captain/assistants |
account-scoped | GET, POST, DELETE | internal/handler/api/v1/captain_assistant_handler_test.go::TestCaptainAssistantHandler_AccountScopedShowAndInboxBinding; conversation inbox-assistant fixtures |
Covered for assistant inbox binding/unbinding routes, account-scoped assistant show, and inbox assistant lookup used by conversations. |
| Captain/Copilot | reference/chatwoot/app/javascript/dashboard/api/captain/preferences.js |
ApiClient | captain/preferences |
account-scoped | GET, PUT | internal/handler/api/v1/captain_preference_handler_test.go::TestCaptainPreferencesGetReturnsRawChatwootConfig; update/validation fixtures |
Covered for raw Captain preference config, account model/feature merge behavior, non-admin rejection, invalid model validation, and account ID errors. |
| Captain/Copilot | reference/chatwoot/app/javascript/dashboard/api/captain/response.js |
ApiClient | captain/assistant_responses |
account-scoped | GET | internal/handler/api/v1/captain_resource_parity_handler_test.go::TestCaptainAssistantResponseHandler_ChatwootResponsePayloadsAndFilters; process-response fixtures |
Covered for assistant-response list/show/create/update/delete payloads, assistant/document/status/search filters, Captain::Document documentable normalization, and LLM process errors. |
| Captain/Copilot | reference/chatwoot/app/javascript/dashboard/api/captain/scenarios.js |
ApiClient | captain/assistants |
account-scoped | GET, POST, PUT, DELETE | internal/handler/api/v1/captain_resource_parity_handler_test.go::TestCaptainScenarioHandler_ChatwootScenarioPayloadsAndScope |
Covered for assistant-scoped scenario create/list/show/update/delete payloads, enabled filtering, nested assistant payload, and account scope. |
| Captain/Copilot | reference/chatwoot/app/javascript/dashboard/api/captain/tasks.js |
ApiClient | captain/tasks |
account-scoped | POST | internal/handler/api/v1/captain_task_handler_test.go::TestCaptainTaskHandler_Summarize_ChatwootRawPayload; extended task label/follow-up fixtures |
Covered for summarize/rewrite raw payloads, stream SSE shape, display-ID conversation lookup, disabled-provider response, label suggestion, and follow-up context update payloads. |
| Captain/Copilot | reference/chatwoot/app/javascript/dashboard/api/captain/tools.js |
ApiClient | captain/assistants/tools |
account-scoped | GET | internal/handler/api/v1/captain_resource_parity_handler_test.go::TestCaptainCustomToolHandler_ChatwootToolPayloadsAndScope; assistant tools route fixtures |
Covered for assistant tools listing backed by account-scoped custom tools and Chatwoot custom tool serializer shape. |
| Other | reference/chatwoot/app/javascript/dashboard/api/changelog.js |
ApiClient | changelog |
global | GET | reference/chatwoot/app/javascript/shared/constants/links.js::CHANGELOG_API_URL |
Not a GoChat service contract: Woochat calls the external Hub URL https://hub.2.chatwoot.com/changelogs directly via fetchFromHub; GoChat does not need an API-compatible backend route for direct-connect. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/channel/fbChannel.js |
ApiClient | facebook_indicators |
account-scoped | POST | internal/handler/api/v1/facebook_callbacks_handler_test.go::TestFacebookCallbacks_RegisterFacebookPage; TestFacebookCallbacks_ReauthorizePage |
Covered for Facebook page registration and reauthorization payloads used by Woochat callbacks/register_facebook_page and callbacks/reauthorize_page. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/channel/googleClient.js |
ApiClient | google |
account-scoped | POST | internal/handler/api/v1/email_oauth_authorization_test.go::TestGoogleAuthorization_ReturnsChatwootPayload; root OAuth callback fixtures |
Covered for Google authorization URL/state payloads and callback redirect/config persistence used by Woochat email channel setup. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/channel/instagramClient.js |
ApiClient | instagram |
account-scoped | POST | internal/handler/api/v1/social_authorization_test.go::TestInstagramAuthorization_ReturnsChatwootPayload; root OAuth callback fixtures |
Covered for Instagram authorization URL/state payloads, callback config persistence/upsert, and settings redirect behavior. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/channel/microsoftClient.js |
ApiClient | microsoft |
account-scoped | POST | internal/handler/api/v1/email_oauth_authorization_test.go::TestMicrosoftAuthorization_ReturnsChatwootPayload; email OAuth callback error fixtures |
Covered for Microsoft authorization URL/state payloads and callback provider-error frontend redirects without phantom inbox creation. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/channel/tiktokClient.js |
ApiClient | tiktok |
account-scoped | POST | internal/handler/api/v1/tiktok_channel_handler_test.go::TestTikTokChannel_Create_ChatwootSetupPayloadAndConfig; root OAuth callback fixtures |
Covered for TikTok authorization/setup payloads, persisted channel config, callback upsert, and settings redirect behavior. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/channel/twilioChannel.js |
ApiClient | channels/twilio_channel |
account-scoped | standard CRUD | internal/handler/api/v1/twilio_channel_handler_test.go::TestTwilioChannel_Create_Success; Twilio webhook/status fixtures |
Covered for Twilio channel create raw inbox payload, persisted channel config/linkage, inbound callback, and delivered/read/failed status webhook behavior. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/channel/twitterClient.js |
ApiClient | twitter |
account-scoped | POST | internal/handler/api/v1/twitter_authorization_handler_test.go::TestTwitterAuthorization_ReturnsChatwootPayload; root OAuth callback fixtures |
Covered for Twitter authorization URL/state payloads, signed state callback matching, callback config persistence/upsert, and settings redirect behavior. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/channel/voice/voiceAPIClient.js |
ApiClient | voice |
account-scoped | standard CRUD | internal/router/router_test.go::TestTwilioVoiceRoutesServeConferenceAndPersistCallbacks; internal/handler/api/v1/contact_handler_crud_test.go::TestContactHandlerCRUDTestSuite/TestInitiateCall_CreatesConversationCallAndVoiceMessage |
Covered for Woochat voice client token/join/leave conference routes and contact initiate-call payload used by useCallSession; provider calls remain feature-gated by configured Twilio credentials. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/channel/webChannel.js |
ApiClient | inboxes |
account-scoped | standard CRUD | internal/handler/api/v1/inbox_handler_parity_test.go::TestInboxHandler_ChatwootSerializerParity; widget/admin config fixtures |
Covered for web-widget inbox create/list/show/update/delete serializer shape, channel settings, web widget config, and sensitive-field role gating. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/channel/whatsapp/whatsappCallsAPI.js |
ApiClient | whatsapp_calls |
account-scoped | GET, POST | internal/handler/api/v1/whatsapp_call_handler_test.go::TestWhatsAppCallHandler_AccountRoutesMatchFrontendAPI; action/recording fixtures |
Covered for WhatsApp call show/initiate/accept/reject/terminate/upload-recording account routes and frontend payloads. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/channel/whatsappChannel.js |
ApiClient | whatsapp |
account-scoped | POST | internal/service/whatsapp_authorization_service_test.go::TestWhatsAppAuthorization_CreateEmbeddedSignupInbox; TestWhatsAppAuthorization_ReauthorizesExistingInbox; handler route parity |
Covered for Woochat embedded signup and reauthorization POST /whatsapp/authorization payloads, success envelope, inbox linkage, and not-found/error envelopes. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/companies.js |
ApiClient | companies |
account-scoped | GET, POST, DELETE | internal/handler/api/v1/crm_frontend_smoke_test.go::TestChatwootFrontendCRMSmoke; internal/handler/api/v1/company_handler_test.go |
Covered for Woochat company list/search/show/create/update, nested contacts/search/add/remove, conversations, notes, custom-attribute deletion, avatar deletion, raw payloads, pagination, and account scope. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/contactNotes.js |
ApiClient | notes |
account-scoped | standard CRUD | internal/handler/api/v1/crm_frontend_smoke_test.go::TestChatwootFrontendCRMSmoke; internal/handler/api/v1/contact_handler_crud_test.go note CRUD fixtures |
Covered for Woochat contact notes list/create/delete route shape, raw note payloads, and contact/account scoping. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/contacts.js |
ApiClient | contacts |
account-scoped | GET, POST, PATCH, DELETE | internal/handler/api/v1/crm_frontend_smoke_test.go::TestChatwootFrontendCRMSmoke; internal/handler/api/v1/contact_handler_crud_test.go::TestChatwootFrontendContactMergeImportExportContracts |
Covered for Woochat contact list/search/filter/active/show/create/update, labels, conversations, contactable inboxes, call initiation, import/export, merge, custom-attribute deletion, avatar deletion, raw payloads, pagination, and account scope. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/conversations.js |
ApiClient | conversations |
account-scoped | GET, POST | internal/handler/api/v1/conversation_handler_test.go::TestUnreadCounts_Success; internal/handler/api/v1/conversation_handler_crud_test.go::TestConversationCrudTestSuite/TestUpdateLabels_Success; message/realtime fixtures |
Covered for Woochat conversation labels get/update, unread counts, core list/create/message serializer payloads, and realtime message/conversation event shapes. |
| CSAT/Survey | reference/chatwoot/app/javascript/dashboard/api/csatReports.js |
ApiClient | csat_survey_responses |
account-scoped | GET | internal/handler/api/v1/csat_survey_handler_test.go::TestCsatSurveyHandlerTestSuite/TestCSATFrontendContractShapes; internal/handler/api/v1/csat_metrics_handler_test.go |
Covered for Woochat report list/metrics/download params (since, until, user_ids, inbox_id, team_id, rating, sort=-created_at), payload shape, CSV download, and review-note update. |
| Automation/Enterprise | reference/chatwoot/app/javascript/dashboard/api/customRole.js |
ApiClient | custom_roles |
account-scoped | standard CRUD | internal/handler/api/v1/custom_role_handler_test.go::TestCustomRoleHandlerSuite; permission/profile fixtures |
Covered for Woochat custom-role list/create/show/update/delete raw payloads, permission serialization, account scope, and profile permission projection. |
| Automation/Enterprise | reference/chatwoot/app/javascript/dashboard/api/customViews.js |
ApiClient | custom_filters |
account-scoped | GET, DELETE | internal/handler/api/v1/custom_filter_handler_test.go::TestCustomFilterHandlerSuite |
Covered for Woochat custom-view list by filter_type, create/show/update/delete payloads, and account-scoped errors. |
| Other | reference/chatwoot/app/javascript/dashboard/api/dashboardApps.js |
ApiClient | dashboard_apps |
account-scoped | standard CRUD | internal/handler/api/v1/dashboard_app_handler_test.go::TestDashboardAppHandlerSuite |
Covered for Woochat dashboard-app list/create/show/update/delete raw payloads, raw request bodies, 204 delete, and account scope. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/endPoints.js |
literal | /api/v1/profile |
explicit | - | internal/handler/api/v1/profile_handler_test.go::TestProfileHandlerSuite/TestGet_Success; update fixtures |
Covered for Woochat profile bootstrap and profile update payloads, user/account serializer keys, settings JSON, password update validation, and multipart profile form parity. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/endPoints.js |
literal | /api/v1/profile/auto_offline |
explicit | - | internal/handler/api/v1/profile_handler_test.go::TestProfileHandlerSuite/TestSetAutoOffline_ReturnsChatwootUserSerializer |
Covered for Woochat auto-offline mutation request and raw Chatwoot user serializer response. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/endPoints.js |
literal | /api/v1/profile/availability |
explicit | - | internal/handler/api/v1/profile_handler_test.go::TestProfileHandlerSuite/TestSetAvailability_ReturnsChatwootUserSerializer |
Covered for Woochat availability mutation request and raw Chatwoot user serializer response. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/endPoints.js |
literal | /api/v1/profile/avatar |
explicit | - | internal/handler/api/v1/profile_handler_test.go::TestProfileHandlerSuite/TestUpdateAvatar_Success; TestDeleteAvatar_ReturnsChatwootUserSerializer |
Covered for Woochat profile avatar update/delete calls, raw Chatwoot user serializer response, persisted avatar clearing, and validation errors. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/endPoints.js |
literal | /api/v1/profile/resend_confirmation |
explicit | - | internal/handler/api/v1/profile_handler_test.go::TestProfileHandlerSuite/TestResendConfirmation_DoesNotSendForConfirmedUser; invited/unconfirmed variants |
Covered for Woochat resend-confirmation success payloads and confirmed, unconfirmed, and invited-user mail side effects. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/endPoints.js |
literal | /api/v1/profile/reset_access_token |
explicit | - | internal/handler/api/v1/profile_handler_test.go::TestProfileHandlerSuite/TestResetAccessToken_RegeneratesTokenInChatwootUserSerializer |
Covered for Woochat reset-access-token mutation and regenerated token in raw Chatwoot user serializer response. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/endPoints.js |
literal | /api/v1/profile/set_active_account |
explicit | - | internal/handler/api/v1/profile_handler_test.go::TestProfileHandlerSuite/TestSetActiveAccount_UpdatesMembershipActiveAt; repository active-at fixtures |
Covered for Woochat active-account mutation payload, membership active_at persistence, and user serializer response. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/endPoints.js |
literal | /auth/validate_token |
explicit | - | internal/handler/api/v1/auth_handler_test.go::TestChatwootAuthValidateTokenReturnsPayloadData; auth middleware token-header fixtures |
Covered for DeviseTokenAuth-compatible validate-token payload, exposed token headers, user data, and account membership keys. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/endPoints.js |
literal | api/v1/accounts.json |
explicit | - | reference/chatwoot/app/javascript/dashboard/api/specs/endPoints.spec.js only; frontend import grep |
Not a current GoChat service contract: the register endpoint constant is only asserted by the frontend unit spec and no reused dashboard runtime module imports endPoints('register'). |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/endPoints.js |
literal | api/v1/accounts/${accountId}/callbacks/facebook_pages.json |
explicit | - | internal/handler/api/v1/facebook_callbacks_handler_test.go::TestFacebookCallbacks_FacebookPagesPayload |
Covered for Woochat Facebook page picker callback payload {data:{page_details,user_access_token}} and existing-page flags. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/endPoints.js |
literal | api/v1/conversations.json |
explicit | - | reference/chatwoot/app/javascript/dashboard/api/specs/endPoints.spec.js only; frontend import grep |
Not a current GoChat service contract: the legacy me/getInbox endpoint constants are only asserted by the frontend unit spec; runtime conversation clients use account-scoped /api/v1/accounts/:account_id/conversations. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/endPoints.js |
literal | auth/password |
explicit | - | internal/handler/api/v1/auth_handler_test.go::TestChatwootAuthResetPasswordReturnsReferenceMessage; password update fixtures |
Covered for Woochat reset-password request message, token persistence, and password update/reset-token validation. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/endPoints.js |
literal | auth/sign_out |
explicit | - | internal/handler/api/v1/auth_handler_test.go::TestChatwootAuthSignOutRevokesRefreshSession |
Covered for Woochat sign-out route, refresh-session revocation, and empty success response behavior. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/enterprise/specs/account.spec.js |
literal | /enterprise/api/v1/checkout |
explicit | - | auth/profile/account handlers and account cache routes | Fixture covered by TestEnterpriseAccountLiteralFrontendPathsUseCurrentAccountContext |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/enterprise/specs/account.spec.js |
literal | /enterprise/api/v1/limits |
explicit | - | auth/profile/account handlers and account cache routes | Fixture covered by TestEnterpriseAccountLiteralFrontendPathsUseCurrentAccountContext |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/enterprise/specs/account.spec.js |
literal | /enterprise/api/v1/subscription |
explicit | - | auth/profile/account handlers and account cache routes | Fixture covered by TestEnterpriseAccountLiteralFrontendPathsUseCurrentAccountContext |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/enterprise/specs/account.spec.js |
literal | /enterprise/api/v1/toggle_deletion |
explicit | - | auth/profile/account handlers and account cache routes | Fixture covered by TestEnterpriseAccountLiteralFrontendPathsUseCurrentAccountContext |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/enterprise/specs/account.spec.js |
literal | /enterprise/api/v1/topup_checkout |
explicit | - | auth/profile/account handlers and account cache routes | Fixture covered by TestEnterpriseAccountLiteralFrontendPathsUseCurrentAccountContext |
| Help Center | reference/chatwoot/app/javascript/dashboard/api/helpCenter/articles.js |
ApiClient | articles |
account-scoped | GET, POST, PATCH, DELETE | internal/handler/api/v1/article_handler_test.go::TestArticleHandlerSuite/TestDashboardArticleCRUD_ChatwootFrontendPayloadsAndRoutes; bulk/reorder fixtures |
Covered for Woochat dashboard article list/search/show/create/update/delete, slug-scoped portal routes, raw frontend body mapping, reorder, bulk translate/status/category/delete actions, public JSON/markdown/pixel side effects, and account scope. |
| Help Center | reference/chatwoot/app/javascript/dashboard/api/helpCenter/categories.js |
ApiClient | categories |
account-scoped | GET, POST, PATCH, DELETE | internal/handler/api/v1/category_handler_test.go::TestCategoryHandlerSuite/TestCreate_RawFrontendPayloadAndSlugPortal; list/update/delete/reorder fixtures |
Covered for Woochat slug-scoped category list/create/update/delete/reorder, locale filtering, raw frontend payloads, and public category payloads. |
| Help Center | reference/chatwoot/app/javascript/dashboard/api/helpCenter/portals.js |
ApiClient | portals |
account-scoped | GET, POST, PATCH, DELETE | internal/handler/api/v1/portal_handler_test.go::TestPortalHandlerSuite/TestList_ReturnsChatwootPayloadEnvelope; update/delete/send-instructions fixtures |
Covered for Woochat portal list/get/update/delete-by-slug, logo/instructions/status-compatible routes, Chatwoot payload envelope, public redirect/get/sitemap, and archived portal filtering. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/inbox/conversation.js |
ApiClient | conversations |
account-scoped | GET, POST, PATCH, DELETE | internal/handler/api/v1/conversation_handler_crud_test.go::TestConversationCrudTestSuite/TestList_Success; label/status/assignment/snooze/filter fixtures |
Covered for Woochat inbox conversation list/show/create/update/delete, filters/meta/search, labels, mute/unmute, status toggles, snooze, priority, team/agent assignment, transcript, and display-ID route behavior. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/inbox/message.js |
ApiClient | conversations |
account-scoped | GET, POST, DELETE | internal/handler/api/v1/message_handler_test.go::TestMessageHandlerTestSuite/TestList_Success; create/delete/retry/translate fixtures |
Covered for Woochat message list/create/delete/retry/translate, route conversation precedence, outgoing defaults, multipart attachments, content attributes, sender fields, and Chatwoot serializer shape. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/inbox/message.js |
literal | ${this.url}/${conversationId}/messages |
explicit | GET, POST, DELETE | internal/handler/api/v1/message_handler_test.go::TestMessageHandlerTestSuite/TestList_Success; create/delete fixtures |
Covered for literal nested Woochat message path, list pagination, create payloads, multipart uploads, delete response, and invalid conversation errors. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/inboxHealth.js |
ApiClient | inboxes |
account-scoped | GET, POST | internal/handler/api/v1/inbox_handler_parity_test.go::TestInboxHandler_HealthReturnsWhatsAppCloudRawPayload; provider failure fixture |
Covered for Woochat inbox health success/failure payloads, WhatsApp Cloud raw fields, provider failure state, and account/inbox param validation. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/inboxMembers.js |
ApiClient | inbox_members |
account-scoped | PATCH | internal/handler/api/v1/inbox_member_handler_test.go::TestInboxMemberHandlerSuite/TestAccountScopedInboxMembers_ChatwootPayloadAndDiffUpdate |
Covered for Woochat inbox member list/update payloads, diff semantics, account-scoped route, and assigned-agent serializer keys. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/inboxes.js |
ApiClient | inboxes |
account-scoped | GET, POST, DELETE | internal/handler/api/v1/inbox_handler_parity_test.go::TestInboxHandler_ChatwootSerializerParity; create/update binding and avatar/campaign fixtures |
Covered for Woochat inbox list/show/create/update/delete, serializer shape, channel settings, sensitive field gating, create/update request binding, avatar delete validation, campaigns, and sync-template queued response. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/integrations/dyte.js |
ApiClient | integrations/dyte |
account-scoped | POST | internal/handler/api/v1/dyte_integration_handler_test.go::TestDyteIntegrationHandlerCreateMeetingReturnsMessagePayload; participant fixture |
Covered for Woochat Dyte create-meeting and add-participant payloads, integration message content attributes, auth token response, and invalid message error. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/integrations/linear.js |
ApiClient | integrations/linear |
account-scoped | GET, POST | internal/service/linear_integration_service_test.go::TestLinearIntegrationService_ChatwootFrontendPayloads; handler validation fixtures |
Covered for Woochat Linear teams, team entities, create/link/unlink issue, linked issues, search issue payloads, activity side effects, and provider error envelopes. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/integrations/shopify.js |
ApiClient | integrations/shopify |
account-scoped | GET | internal/handler/api/v1/shopify_integration_handler_test.go::TestShopifyIntegration_Auth_ReturnsChatwootRedirectPayload; validation fixtures |
Covered for Woochat Shopify auth redirect payload, OAuth query fields, configured callback URL, provider-not-configured/validation envelopes; orders live provider path remains credential-gated. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/integrations.js |
ApiClient | integrations/apps |
account-scoped | GET, POST, PATCH, DELETE | internal/handler/api/v1/integration_hook_handler_suite_test.go::TestIntegrationHookHandlerSuite/TestChatwootFrontendAppsAndHooksNoTrailingSlashPayloads; Slack/Shopify/service fixtures |
Covered for Woochat integrations apps list, hook create/delete, Slack connect/update/list-channels/delete routes, Shopify auth redirect payload, raw app/hook response shapes, no-trailing-slash frontend paths, and provider API behavior via fake Slack transport where needed. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/labels.js |
ApiClient | labels |
account-scoped | standard CRUD | internal/handler/api/v1/label_handler_test.go::TestLabelHandlerSuite/TestListTags_Success; create/update/delete fixtures |
Covered for Woochat label list/create/update/delete payloads, raw name compatibility, account scoping, and conversation label association routes. |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/liveReports.js |
ApiClient | live_reports |
account-scoped | GET | internal/handler/api/v1/live_report_handler_test.go::TestLiveReportHandlerTestSuite/TestAPIV2LiveReports_ChatwootFrontendPayloadShapes; store-refresh fixture |
Covered for Woochat API v2 live report conversation metrics, grouped metrics, team filters, Chatwoot error shape, and store refresh request sequence. |
| Automation/Enterprise | reference/chatwoot/app/javascript/dashboard/api/macros.js |
ApiClient | macros |
account-scoped | POST | internal/handler/api/v1/macro_handler_test.go::TestMacroHandlerSuite/TestExecute_ChatwootFrontendAwaitsEmptyOKAndSupportsSingleConversationID; CRUD fixtures |
Covered for Woochat macro CRUD payloads, attachment action signed-upload serialization, execute route with single/multiple conversation IDs, display-ID mutation semantics, and empty OK response. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/mfa.js |
ApiClient | profile/mfa |
account-scoped | POST, DELETE | internal/handler/api/v1/mfa_handler_test.go::TestMFAHandlerSuite/TestProfileMFA_EnableVerifyBackupAndDisableUseFrontendPayloads; status fixture |
Covered for Woochat MFA status/enable/verify/backup-code/disable payloads, raw Chatwoot response shapes, and validation errors. |
| Other | reference/chatwoot/app/javascript/dashboard/api/notificationSubscription.js |
ApiClient | notification_subscriptions |
global | standard CRUD | internal/handler/api/v1/notification_subscription_handler_test.go::TestNotificationSubscriptionCreateAcceptsPushHelperPayload; destroy fixtures |
Covered for Woochat push-helper create/update/destroy payloads, global and account-scoped routes, push-token deletion, Rails wrapper body, and empty OK delete behavior. |
| Other | reference/chatwoot/app/javascript/dashboard/api/notifications.js |
ApiClient | notifications |
account-scoped | GET, POST, DELETE | internal/handler/api/v1/notification_handler_test.go::TestNotificationHandler_List_ChatwootEnvelopeAndIncludes; mutation/realtime fixtures |
Covered for Woochat notification list envelope, actor serialization, unread/read/snooze/delete/destroy-all mutations, account/user scoping, and Chatwoot realtime payloads. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/notion_auth.js |
ApiClient | notion |
account-scoped | POST | internal/handler/api/v1/notion_integration_handler_test.go::TestNotionIntegration_Authorization_ReturnsChatwootPayload; delete fixture |
Covered for Woochat Notion authorization URL payload, redirect URI, config validation, and integration delete empty OK behavior. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/onboarding.js |
ApiClient | onboarding |
account-scoped | PATCH | internal/handler/api/v1/account_handler_test.go::TestUpdateOnboarding_Success; validation fixtures |
Covered for Woochat onboarding step PATCH route, account-scoped update side effect, response payload, and invalid-step validation. |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/reports.js |
ApiClient | reports |
account-scoped | GET | internal/handler/api/v1/analytics_handler_test.go::TestAnalyticsHandlerTestSuite/TestAPIV2Reports_AllFrontendEndpointShapes; report CSV/value fixtures |
Covered for Woochat reports API v2 index/summary/conversations/agents/inboxes/labels/teams/conversations_summary/conversation_traffic/bot_metrics/bot_summary endpoint shapes, timezone/value parity, CSV downloads, and outgoing-message grouped counts. |
| Other | reference/chatwoot/app/javascript/dashboard/api/samlSettings.js |
ApiClient | saml_settings |
account-scoped | GET, POST, PUT, DELETE | internal/handler/api/v1/account_saml_settings_handler_test.go::TestAccountSamlSettingsHandlerTestSuite/TestChatwootFrontendCollectionCRUDPayloads; route registration uses collection paths |
Covered for Woochat SAML settings collection GET/POST/PUT/DELETE, { saml_settings: ... } request wrapper, raw frontend-readable response payload, alias fields sso_url/certificate, and backward-compatible id routes. |
| Other | reference/chatwoot/app/javascript/dashboard/api/search.js |
ApiClient | search |
account-scoped | GET | internal/handler/api/v1/search_handler_test.go::TestSearchHandler_GlobalSearch_UsesReferenceResultTypes; live Meilisearch smoke evidence |
Covered for Woochat global search result types, conversations/messages/contacts/articles search payloads, reference filters, hydrated message/article payloads, and live Meilisearch smoke. |
| Automation/Enterprise | reference/chatwoot/app/javascript/dashboard/api/sla.js |
ApiClient | sla_policies |
account-scoped | standard CRUD | internal/handler/api/v1/sla_policy_handler_test.go::TestSlaPolicyHandler_List_Success; CRUD/inbox association fixtures |
Covered for Woochat SLA policy list/create/show/update/delete, validation, audit entries, inbox association payloads, and side effects. |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/slaReports.js |
ApiClient | applied_slas |
account-scoped | GET | internal/handler/api/v1/sla_policy_handler_test.go::TestSlaPolicyHandler_ListAppliedSlas_ChatwootPayloadAndFilters; metrics/download fixtures |
Covered for Woochat applied-SLA list filters, metrics report shape, download payload, and service-level missed/hit report filters. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/specs/account.spec.js |
literal | /api/v1/accounts |
explicit | - | internal/handler/api/v1/account_handler_test.go::TestAccountHandlerTestSuite/TestCreate_Success; router route fixture |
Covered for Woochat account create literal path POST /api/v1/accounts, no-trailing-slash route registration, Chatwoot data.account_id response shape, and account_name alias. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/accountActions.spec.js |
literal | /api/v1/actions/contact_merge |
explicit | - | internal/handler/api/v1/contact_handler_crud_test.go::TestChatwootFrontendContactMergeImportExportContracts |
Covered for frontend merge request body and Chatwoot raw contact response on the account-scoped actions path; bare spec path remains a frontend unit-test artifact without account context. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/agentCapacityPolicies.spec.js |
literal | /api/v1/accounts/1/agent_capacity_policies/123/inbox_limits |
explicit | - | internal/handler/api/v1/agent_capacity_handler_test.go::TestAgentCapacityHandlerSuite/TestChatwootPolicyInboxLimitAndUserFlow; route dump |
Covered for Woochat create inbox-limit literal path, raw inbox_id/conversation_limit payload, duplicate validation, and registered account-scoped route. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/agentCapacityPolicies.spec.js |
literal | /api/v1/accounts/1/agent_capacity_policies/123/inbox_limits/789 |
explicit | - | internal/handler/api/v1/agent_capacity_handler_test.go::TestAgentCapacityHandlerSuite/TestChatwootPolicyInboxLimitAndUserFlow; validation fixture |
Covered for Woochat update/delete inbox-limit literal paths, PUT/PATCH mutation payloads, raw updated limit serializer, and delete empty OK behavior. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/agentCapacityPolicies.spec.js |
literal | /api/v1/accounts/1/agent_capacity_policies/123/users |
explicit | - | internal/handler/api/v1/agent_capacity_handler_test.go::TestAgentCapacityHandlerSuite/TestChatwootPolicyInboxLimitAndUserFlow; validation fixture |
Covered for Woochat capacity-policy get-users/add-user literal paths, user_id request body, raw assigned user payload, and list serializer. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/agentCapacityPolicies.spec.js |
literal | /api/v1/accounts/1/agent_capacity_policies/123/users/456 |
explicit | - | internal/handler/api/v1/agent_capacity_handler_test.go::TestAgentCapacityHandlerSuite/TestChatwootPolicyInboxLimitAndUserFlow; validation fixture |
Covered for Woochat remove-user literal path, account/policy scoped deletion, post-delete list behavior, and not-found validation. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/agents.spec.js |
literal | /api/v1/agents/bulk_create |
explicit | - | internal/handler/api/v1/agent_handler_test.go::TestAgentHandlerTestSuite/TestBulkCreate; grep of runtime callers |
Covered as a frontend unit-test-only literal: runtime agents.js is account-scoped under /api/v1/accounts/:account_id/agents/bulk_create; GoChat route and bulk-create payload/side effects are covered. |
| Help Center | reference/chatwoot/app/javascript/dashboard/api/specs/article.spec.js |
literal | /api/v1/portals/room-rental/articles/1 |
explicit | - | internal/handler/api/v1/article_handler_test.go::TestArticleHandlerSuite/TestDashboardArticleCRUD_ChatwootFrontendPayloadsAndRoutes; runtime grep |
Covered as frontend spec-only bare URL; runtime helpCenter/articles.js is account-scoped under /api/v1/accounts/:account_id/portals/:portal_slug/articles/:id, with show/update/delete payloads covered. |
| Help Center | reference/chatwoot/app/javascript/dashboard/api/specs/article.spec.js |
literal | /api/v1/portals/room-rental/articles/bulk_actions/update_category |
explicit | - | internal/handler/api/v1/article_handler_test.go::TestArticleHandlerSuite/TestBulkActions_FrontendRoutes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped bulk update-category route and { ids, category_id } request body are fixture-covered. |
| Help Center | reference/chatwoot/app/javascript/dashboard/api/specs/article.spec.js |
literal | /api/v1/portals/room-rental/articles?page=1&locale=en-US&status=published&author_id=1 |
explicit | - | internal/handler/api/v1/article_handler_test.go::TestArticleHandlerSuite/TestDashboardArticleCRUD_ChatwootFrontendPayloadsAndRoutes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped article list supports portal slug, status, locale, category/sort filters, payload array, and meta counts. |
| Help Center | reference/chatwoot/app/javascript/dashboard/api/specs/article.spec.js |
literal | /api/v1/portals/room-rental/articles?query=test |
explicit | - | internal/handler/api/v1/article_handler_test.go::TestArticleHandlerSuite/TestPublicSearch_ReturnsPublishedLocaleSearchArticlePayload; runtime grep |
Covered as frontend spec-only bare URL; runtime dashboard search popover and public help-center search routes return published locale-filtered search payloads with meta. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/assignableAgents.spec.js |
literal | /api/v1/assignable_agents |
explicit | GET | internal/handler/api/v1/assignable_agent_handler_test.go::TestList_StandaloneResourceUsesFrontendInboxIDsQuery |
Covered as frontend unit-test URL shorthand; runtime route is account-scoped /api/v1/accounts/:account_id/assignable_agents with identical inbox_ids[] query semantics. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/assignmentPolicies.spec.js |
literal | /api/v1/accounts/1/assignment_policies/123/inboxes |
explicit | - | internal/handler/api/v1/assignment_policy_handler_test.go::TestInboxAssignmentPolicy_ChatwootRoutes |
Covered for policy inbox listing path generated by Woochat assignment policy API. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/assignmentPolicies.spec.js |
literal | /api/v1/accounts/1/inboxes/456/assignment_policy |
explicit | - | internal/handler/api/v1/assignment_policy_handler_test.go::TestInboxAssignmentPolicy_ChatwootRoutes |
Covered for inbox assignment-policy set/show/delete paths and assignment_policy_id payload generated by Woochat. |
| Automation/Enterprise | reference/chatwoot/app/javascript/dashboard/api/specs/automation.spec.js |
literal | /api/v1/automation_rules |
explicit | - | internal/handler/api/v1/automation_rule_handler_test.go::TestAutomationRuleHandlerTestSuite/TestChatwootFrontendCRUDCloneTogglePayloadsAndValidation; route dump |
Covered as frontend spec-only bare URL; runtime automation.js is account-scoped under /api/v1/accounts/:account_id/automation_rules, with list/create/update/delete/clone/toggle payloads covered. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/channel/fbChannel.spec.js |
literal | /api/v1/callbacks/reauthorize_page |
explicit | - | internal/handler/api/v1/facebook_callbacks_handler_test.go::TestFacebookCallbacks_RegisterFacebookPage |
Covered as frontend unit-test shorthand; runtime route is account-scoped /api/v1/accounts/:account_id/callbacks/reauthorize_page with the same omniauth_token/inbox_id payload. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/channel/fbChannel.spec.js |
literal | /api/v1/callbacks/register_facebook_page |
explicit | - | internal/handler/api/v1/facebook_callbacks_handler_test.go::TestFacebookCallbacks_RegisterFacebookPage |
Covered as frontend unit-test shorthand; runtime route is account-scoped /api/v1/accounts/:account_id/callbacks/register_facebook_page with Chatwoot page registration payload. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/companies.spec.js |
literal | /api/v1/companies/1/avatar |
explicit | GET | internal/handler/api/v1/company_handler_test.go::TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes; route dump |
Covered as account-scoped runtime path /api/v1/accounts/:account_id/companies/:company_id/avatar; delete-avatar raw company payload is covered by TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes and route dump. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/companies.spec.js |
literal | /api/v1/companies/1/contacts |
explicit | GET | internal/handler/api/v1/company_handler_test.go::TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes; route dump |
Covered as account-scoped runtime path /api/v1/accounts/:account_id/companies/:company_id/contacts; list/create with { contact_id } body and payload/meta shape are covered by TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/companies.spec.js |
literal | /api/v1/companies/1/contacts/2 |
explicit | GET | internal/handler/api/v1/company_handler_test.go::TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes; route dump |
Covered as account-scoped runtime path /api/v1/accounts/:account_id/companies/:company_id/contacts/:contact_id; unlink empty OK and side effect are covered by TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/companies.spec.js |
literal | /api/v1/companies/1/contacts/search?q=jane+%26+co&page=3 |
explicit | GET | internal/handler/api/v1/company_handler_test.go::TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes; route dump |
Covered as account-scoped runtime path /api/v1/accounts/:account_id/companies/:company_id/contacts/search; encoded query/page response envelope is covered by TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/companies.spec.js |
literal | /api/v1/companies/1/contacts?page=2 |
explicit | GET | internal/handler/api/v1/company_handler_test.go::TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes; route dump |
Covered as account-scoped runtime path /api/v1/accounts/:account_id/companies/:company_id/contacts?page=2; paginated contact list envelope is covered by TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/companies.spec.js |
literal | /api/v1/companies/1/destroy_custom_attributes |
explicit | GET | internal/handler/api/v1/company_handler_test.go::TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes; route dump |
Covered as account-scoped runtime path /api/v1/accounts/:account_id/companies/:company_id/destroy_custom_attributes; { custom_attributes } body and mutated payload are covered by TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/companies.spec.js |
literal | /api/v1/companies/search?q=&page=1&sort=name |
explicit | GET | internal/handler/api/v1/company_handler_test.go::TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes; route dump |
Covered as account-scoped runtime path /api/v1/accounts/:account_id/companies/search; empty query validation behavior is covered by company search fixtures and route dump. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/companies.spec.js |
literal | /api/v1/companies/search?q=acme+%26+co&page=2&sort=domain |
explicit | GET | internal/handler/api/v1/company_handler_test.go::TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes; route dump |
Covered as account-scoped runtime path /api/v1/accounts/:account_id/companies/search; encoded query/page/sort response envelope is covered by TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/companies.spec.js |
literal | /api/v1/companies?page=1&sort=name |
explicit | GET | internal/handler/api/v1/company_handler_test.go::TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes; route dump |
Covered as account-scoped runtime path /api/v1/accounts/:account_id/companies?page=1&sort=name; list payload/meta and no-trailing-slash route are covered by TestCompanyHandlerSuite/TestChatwootCompanyFrontendLiteralSpecRuntimeRoutes. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/contacts.spec.js |
literal | /api/v1/contacts/1/avatar |
explicit | GET | internal/handler/api/v1/contact_handler_crud_test.go::TestContactHandlerCRUDTestSuite/TestChatwootFrontendContactsSpecRuntimeRoutes; route dump |
Covered as frontend spec-only bare URL; runtime contacts.js is account-scoped under /api/v1/accounts/:account_id/contacts/:contact_id/avatar; DELETE clears avatar_url/thumbnail in Chatwoot payload shape. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/contacts.spec.js |
literal | /api/v1/contacts/1/contactable_inboxes |
explicit | GET | internal/handler/api/v1/contact_handler_crud_test.go::TestContactHandlerCRUDTestSuite/TestChatwootFrontendContactsSpecRuntimeRoutes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped contactable_inboxes alias returns { payload: [{ inbox, source_id }] } for Woochat contact forms. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/contacts.spec.js |
literal | /api/v1/contacts/1/conversations |
explicit | GET | internal/handler/api/v1/contact_handler_crud_test.go::TestContactHandlerCRUDTestSuite/TestChatwootFrontendContactsSpecRuntimeRoutes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped contact conversations return Chatwoot conversation payloads including meta, messages, and account/inbox IDs. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/contacts.spec.js |
literal | /api/v1/contacts/1/destroy_custom_attributes |
explicit | GET | internal/handler/api/v1/contact_handler_crud_test.go::TestContactHandlerCRUDTestSuite/TestChatwootFrontendContactsSpecRuntimeRoutes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped destroy-custom-attributes route accepts { custom_attributes } and returns the updated contact payload. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/contacts.spec.js |
literal | /api/v1/contacts/1/labels |
explicit | GET | internal/handler/api/v1/contact_handler_crud_test.go::TestContactHandlerCRUDTestSuite/TestChatwootFrontendContactsSpecRuntimeRoutes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped labels route covers GET and POST { labels } with raw label-array payloads. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/contacts.spec.js |
literal | /api/v1/contacts/filter?include_contact_inboxes=false&page=1&sort=name |
explicit | GET | internal/handler/api/v1/contact_handler_crud_test.go::TestContactHandlerCRUDTestSuite/TestChatwootFrontendContactsSpecRuntimeRoutes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped filter route accepts Chatwoot filter payloads and honors include_contact_inboxes=false, page, and sort query params. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/contacts.spec.js |
literal | /api/v1/contacts/import |
explicit | GET | internal/handler/api/v1/contact_handler_crud_test.go::TestContactHandlerCRUDTestSuite/TestChatwootFrontendContactsSpecRuntimeRoutes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped import route accepts multipart import_file, and missing-file validation returns Chatwoot-compatible 422 File is blank. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/contacts.spec.js |
literal | /api/v1/contacts/search?include_contact_inboxes=false&page=1&sort=date&q=leads&labels[]=customer-support |
explicit | GET | internal/handler/api/v1/contact_handler_crud_test.go::TestContactHandlerCRUDTestSuite/TestChatwootFrontendContactsSpecRuntimeRoutes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped search supports sort=date, labels[], q, and include_contact_inboxes=false with payload/meta response. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/contacts.spec.js |
literal | /api/v1/contacts?include_contact_inboxes=false&page=1&sort=name&labels[]=customer-support |
explicit | GET | internal/handler/api/v1/contact_handler_crud_test.go::TestContactHandlerCRUDTestSuite/TestChatwootFrontendContactsSpecRuntimeRoutes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped list supports label filtering and suppresses embedded contact inboxes when Woochat passes include_contact_inboxes=false. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/conversations.spec.js |
literal | /api/v1/conversations/1/labels |
explicit | - | internal/handler/api/v1/conversation_handler_crud_test.go::TestConversationCrudTestSuite/TestChatwootFrontendConversationLabelsRuntimeRoutes; route dump |
Covered as frontend spec-only bare URL; runtime conversations.js is account-scoped under /api/v1/accounts/:account_id/conversations/:conversation_id/labels; GET returns { payload: [] } and POST { labels } returns { payload: { conversationId, labels } } for the Woochat conversationLabels store. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/conversations.spec.js |
literal | /api/v1/conversations/unread_counts |
explicit | - | internal/handler/api/v1/conversation_handler_test.go::TestConversationHandlerTestSuite/TestUnreadCounts_Success; route dump |
Covered as frontend spec-only bare URL; runtime conversations.js is account-scoped under /api/v1/accounts/:account_id/conversations/unread_counts and returns Chatwoot { payload: { inboxes, labels, teams } } without the generic success wrapper. |
| CSAT/Survey | reference/chatwoot/app/javascript/dashboard/api/specs/csatReports.spec.js |
literal | /api/v1 |
explicit | GET | internal/handler/api/v1/csat_survey_handler_test.go::TestCSATFrontendContractShapes; route dump |
Covered as frontend spec-only ApiClient version assertion, not a runtime request; csatReports.js runtime calls are account-scoped below /api/v1/accounts/:account_id/csat_survey_responses and fixture-covered. |
| CSAT/Survey | reference/chatwoot/app/javascript/dashboard/api/specs/csatReports.spec.js |
literal | /api/v1/csat_survey_responses |
explicit | GET | internal/handler/api/v1/csat_survey_handler_test.go::TestCSATFrontendContractShapes; route dump |
Covered as frontend spec-only bare URL; runtime csatReports.js is account-scoped under /api/v1/accounts/:account_id/csat_survey_responses with page, since, until, sort, user_ids, inbox_id, team_id, and rating filters plus Chatwoot list item shape. |
| CSAT/Survey | reference/chatwoot/app/javascript/dashboard/api/specs/csatReports.spec.js |
literal | /api/v1/csat_survey_responses/download |
explicit | GET | internal/handler/api/v1/csat_survey_handler_test.go::TestCSATFrontendContractShapes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped download route accepts the Woochat report filters and returns Chatwoot CSV headers/content-disposition. |
| CSAT/Survey | reference/chatwoot/app/javascript/dashboard/api/specs/csatReports.spec.js |
literal | /api/v1/csat_survey_responses/metrics |
explicit | GET | internal/handler/api/v1/csat_survey_handler_test.go::TestCSATFrontendContractShapes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped metrics route accepts since, until, user_ids, inbox_id, team_id, and rating, and returns Chatwoot metric keys. |
| Auth/Profile/Account | reference/chatwoot/app/javascript/dashboard/api/specs/endPoints.spec.js |
literal | api/v1/accounts.json |
explicit | - | internal/handler/api/v1/account_handler_test.go::TestAccountHandlerTestSuite/TestCreate_Success; internal/handler/api/v1/account_handler_test.go::TestAccountHandlerTestSuite/TestCreate_ChatwootAccountName; route dump |
Covered as frontend spec-only legacy constant from endPoints.js; runtime account creation uses /api/v1/accounts/account-scoped handlers, with Chatwoot account_name alias and response payload covered. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/endPoints.spec.js |
literal | api/v1/conversations.json |
explicit | - | internal/handler/api/v1/conversation_handler_crud_test.go::TestConversationCrudTestSuite/TestList_Success; route dump |
Covered as frontend spec-only legacy constant from endPoints.js; runtime conversation list is account-scoped under /api/v1/accounts/:account_id/conversations and returns Chatwoot list { data: { meta, payload } } shape. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/conversation.spec.js |
literal | /api/v1/conversations |
explicit | GET | internal/handler/api/v1/conversation_handler_crud_test.go::TestConversationCrudTestSuite/TestList_Success; route dump |
Covered as frontend spec-only bare URL; runtime inbox/conversation.js is account-scoped under /api/v1/accounts/:account_id/conversations and supports Woochat list params with Chatwoot { data: { meta, payload } } response shape. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/conversation.spec.js |
literal | /api/v1/conversations/1/attachments |
explicit | GET | internal/handler/api/v1/conversation_handler_test.go::TestConversationHandlerTestSuite/TestListAttachmentsReturnsChatwootPayload; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped attachments route returns Chatwoot { meta: { total_count }, payload } attachment items. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/conversation.spec.js |
literal | /api/v1/conversations/12/assignments |
explicit | GET | internal/handler/api/v1/conversation_handler_crud_test.go::TestConversationCrudTestSuite/TestAssignTeam_WithChatwootAssigneeID; internal/handler/api/v1/conversation_handler_crud_test.go::TestConversationCrudTestSuite/TestAssignTeam_Success; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped assignments route accepts Woochat assignee_id and team_id payloads and returns serialized user/team objects. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/conversation.spec.js |
literal | /api/v1/conversations/12/toggle_status |
explicit | GET | internal/handler/api/v1/conversation_handler_crud_test.go::TestConversationCrudTestSuite/TestToggleStatus_Success; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped toggle-status route accepts { status, snoozed_until } and returns Chatwoot success/current-status payload. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/conversation.spec.js |
literal | /api/v1/conversations/12/toggle_typing_status |
explicit | GET | internal/handler/api/v1/conversation_handler_test.go::TestConversationHandlerTestSuite/TestToggleTypingStatus_ChatwootRouteSuccess; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped toggle_typing_status route accepts { typing_status, is_private } and returns empty 200 like Chatwoot. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/conversation.spec.js |
literal | /api/v1/conversations/12/update_last_seen |
explicit | GET | internal/handler/api/v1/conversation_handler_test.go::TestConversationHandlerTestSuite/TestUpdateLastSeen_SuccessMarksNotificationRead; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped update-last-seen route returns empty 200 and marks matching notifications read. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/conversation.spec.js |
literal | /api/v1/conversations/45/custom_attributes |
explicit | GET | internal/handler/api/v1/conversation_handler_test.go::TestConversationHandlerTestSuite/TestUpdateCustomAttributes_Success; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped custom-attributes route accepts { custom_attributes } and returns raw { custom_attributes } without generic wrapper. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/conversation.spec.js |
literal | /api/v1/conversations/45/mute |
explicit | GET | internal/handler/api/v1/conversation_handler_crud_test.go::TestConversationCrudTestSuite/TestMute_Success; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped mute route returns the serialized conversation with muted: true. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/conversation.spec.js |
literal | /api/v1/conversations/45/transcript |
explicit | GET | internal/handler/api/v1/conversation_handler_test.go::TestConversationHandlerTestSuite/TestTranscript_Success; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped transcript route accepts { email } and returns empty 200. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/conversation.spec.js |
literal | /api/v1/conversations/45/unmute |
explicit | GET | internal/handler/api/v1/conversation_handler_crud_test.go::TestConversationCrudTestSuite/TestUnmute_Success; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped unmute route returns the serialized conversation with muted: false. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/conversation.spec.js |
literal | /api/v1/conversations/filter |
explicit | GET | internal/handler/api/v1/conversation_handler_crud_test.go::TestConversationCrudTestSuite/TestFilter_Success; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped filter route accepts Woochat filter payload/page params and returns Chatwoot { meta, payload } shape. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/conversation.spec.js |
literal | /api/v1/conversations/meta |
explicit | GET | internal/handler/api/v1/conversation_handler_test.go::TestConversationHandlerTestSuite/TestMeta_Success; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped meta route accepts Woochat finder params and returns { meta } counts. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/conversation.spec.js |
literal | /api/v1/conversations/search |
explicit | GET | internal/handler/api/v1/conversation_handler_crud_test.go::TestConversationCrudTestSuite/TestSearch_Success; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped search route accepts { q, page } query params and returns Chatwoot search { meta, payload } shape. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/inbox/message.spec.js |
literal | /api/v1/conversations/12/messages |
explicit | - | internal/handler/api/v1/message_handler_test.go::TestMessageHandlerTestSuite/TestList_Success; internal/handler/api/v1/message_handler_test.go::TestMessageHandlerTestSuite/TestCreate_ChatwootFrontendPayloadDefaultsOutgoing; internal/handler/api/v1/message_handler_test.go::TestMessageHandlerTestSuite/TestCreate_MultipartAttachmentPersistsAndSerializes; route dump |
Covered as frontend spec-only bare URL; runtime inbox/message.js is account-scoped under /api/v1/accounts/:account_id/conversations/:conversation_id/messages and covers list, JSON create defaults, multipart attachments, content attributes, echo ID, private flag, sender, and Chatwoot message payload shape. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/inboxes.spec.js |
literal | /api/v1/inboxes/2/avatar |
explicit | - | internal/handler/api/v1/inbox_agentbot_avatar_campaigns_test.go::TestInboxHandler_DeleteAvatar_ChatwootHeadOK; route dump |
Covered as frontend spec-only bare URL; runtime inboxes.js is account-scoped under /api/v1/accounts/:account_id/inboxes/:inbox_id/avatar and returns Chatwoot head-OK while clearing avatar_url. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/inboxes.spec.js |
literal | /api/v1/inboxes/2/campaigns |
explicit | - | internal/handler/api/v1/inbox_agentbot_avatar_campaigns_test.go::TestInboxHandler_ListCampaigns_ChatwootPayload; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped campaigns route returns inbox-filtered { campaigns: [...] } payload for Woochat inbox campaign panels. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/inboxes.spec.js |
literal | /api/v1/inboxes/2/sync_templates |
explicit | - | internal/handler/api/v1/inbox_handler_test.go::TestInboxSyncTemplates_ChatwootQueuedResponse; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped sync-templates route returns Chatwoot queued message response and does not expose provider template internals. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/specs/integrations/dyte.spec.js |
literal | /api/v1/integrations/dyte/add_participant_to_meeting |
explicit | - | internal/handler/api/v1/dyte_integration_handler_test.go::TestDyteIntegrationHandlerAddParticipantReturnsAuthToken; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped Dyte add-participant route accepts message_id/name/email and returns provider auth_token payload without frontend patches. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/specs/integrations/dyte.spec.js |
literal | /api/v1/integrations/dyte/create_a_meeting |
explicit | - | internal/handler/api/v1/dyte_integration_handler_test.go::TestDyteIntegrationHandlerCreateMeetingReturnsMessagePayload; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped Dyte create-meeting route creates an integrations message and returns Chatwoot message payload with Dyte meeting attributes. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/specs/integrations/linear.spec.js |
literal | /api/v1/integrations/linear/create_issue |
explicit | - | internal/handler/api/v1/linear_integration_handler_test.go::TestLinearIntegration_ChatwootFrontendRuntimeRoutes/create_issue; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped Linear create-issue route accepts Woochat JSON body and returns raw { id, title, identifier } provider shape via fake GraphQL fixture. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/specs/integrations/linear.spec.js |
literal | /api/v1/integrations/linear/link_issue |
explicit | - | internal/handler/api/v1/linear_integration_handler_test.go::TestLinearIntegration_ChatwootFrontendRuntimeRoutes/link_issue; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped Linear link-issue route accepts { issue_id, conversation_id, title } and returns raw { id, link, link_id }. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/integrations/linear.spec.js |
literal | /api/v1/integrations/linear/linked_issues?conversation_id=1 |
explicit | - | internal/handler/api/v1/linear_integration_handler_test.go::TestLinearIntegration_ChatwootFrontendRuntimeRoutes/linked_issues; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped Linear linked-issues route uses conversation_id query and returns raw linked attachment array. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/specs/integrations/linear.spec.js |
literal | /api/v1/integrations/linear/search_issue?q=query |
explicit | - | internal/handler/api/v1/linear_integration_handler_test.go::TestLinearIntegration_ChatwootFrontendRuntimeRoutes/search_issue; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped Linear search route preserves q and returns raw issue array. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/integrations/linear.spec.js |
literal | /api/v1/integrations/linear/team_entities?team_id=1 |
explicit | - | internal/handler/api/v1/linear_integration_handler_test.go::TestLinearIntegration_ChatwootFrontendRuntimeRoutes/team_entities; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped Linear team-entities route preserves team_id and returns { users, projects, states, labels }. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/integrations/linear.spec.js |
literal | /api/v1/integrations/linear/teams |
explicit | - | internal/handler/api/v1/linear_integration_handler_test.go::TestLinearIntegration_ChatwootFrontendRuntimeRoutes/teams; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped Linear teams route returns raw team array. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/specs/integrations/linear.spec.js |
literal | /api/v1/integrations/linear/unlink_issue |
explicit | - | internal/handler/api/v1/linear_integration_handler_test.go::TestLinearIntegration_ChatwootFrontendRuntimeRoutes/unlink_issue; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped Linear unlink route accepts Woochat { link_id, issue_id, conversation_id } body and returns raw { link_id }. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/specs/integrations.spec.js |
literal | /api/v1/integrations/2 |
explicit | DELETE | internal/handler/api/v1/integration_hook_handler_suite_test.go::TestChatwootFrontendAppsAndHooksNoTrailingSlashPayloads; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped integrations use hook/app routes and delete without trailing slash returns empty 200 for Woochat store cleanup. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/specs/integrations.spec.js |
literal | /api/v1/integrations/hooks |
explicit | DELETE | internal/handler/api/v1/integration_hook_handler_suite_test.go::TestChatwootFrontendAppsAndHooksNoTrailingSlashPayloads; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped create-hook route accepts { app_id, settings } without trailing slash and returns raw hook payload. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/specs/integrations.spec.js |
literal | /api/v1/integrations/hooks/2 |
explicit | DELETE | internal/handler/api/v1/integration_hook_handler_suite_test.go::TestChatwootFrontendAppsAndHooksNoTrailingSlashPayloads; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped delete-hook route accepts no trailing slash and returns empty 200. |
| Integrations/Channels | reference/chatwoot/app/javascript/dashboard/api/specs/integrations.spec.js |
literal | /api/v1/integrations/slack |
explicit | DELETE | internal/handler/api/v1/slack_integration_handler_test.go::TestSlackIntegration_Create_NoTrailingSlash_ReturnsRawAppPayload; internal/handler/api/v1/slack_integration_handler_test.go::TestSlackIntegration_Delete_NoTrailingSlash_ReturnsEmptyOK; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped Slack create/delete routes work without trailing slash, return raw app payload on create, and empty 200 on delete. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/integrations.spec.js |
literal | /api/v1/integrations/slack/list_all_channels |
explicit | DELETE | internal/handler/api/v1/slack_integration_handler_test.go::TestSlackIntegration_ListAllChannels_NoTrailingSlash_ReturnsChannelArray; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped Slack list-all-channels route proxies provider channels through a fake HTTP client and returns raw channel array. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/labels.spec.js |
literal | /api/v1/labels |
explicit | - | internal/handler/api/v1/label_handler_test.go::TestLabelHandlerSuite/TestListTags_Success; internal/handler/api/v1/label_handler_test.go::TestLabelHandlerSuite/TestCreateTag_RawNameCompatibility; internal/handler/api/v1/label_handler_test.go::TestLabelHandlerSuite/TestUpdateTag_ChatwootPayloadAndAccountScope; internal/handler/api/v1/label_handler_test.go::TestLabelHandlerSuite/TestDeleteTag_ReturnsOKAndRemovesAssociations; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped labels route supports list/create/update/delete and returns Chatwoot raw tag payloads without generic success wrapper. |
| Automation/Enterprise | reference/chatwoot/app/javascript/dashboard/api/specs/macros.spec.js |
literal | /api/v1/macros |
explicit | - | internal/handler/api/v1/macro_handler_test.go::TestMacroHandlerSuite/TestList_Empty; internal/handler/api/v1/macro_handler_test.go::TestMacroHandlerSuite/TestCreate_Success; internal/handler/api/v1/macro_handler_test.go::TestMacroHandlerSuite/TestUpdateDeleteAuthorizationAndPayload; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped macros route supports list/create/update/delete and Chatwoot macro payload fields/actions used by Woochat. |
| Other | reference/chatwoot/app/javascript/dashboard/api/specs/notifications.spec.js |
literal | /api/v1/notifications |
explicit | GET, DELETE | internal/handler/api/v1/notification_handler_test.go::TestNotificationHandler_List_ChatwootEnvelopeAndIncludes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped notification list accepts Chatwoot include/sort params and returns { meta, payload }. |
| Other | reference/chatwoot/app/javascript/dashboard/api/specs/notifications.spec.js |
literal | /api/v1/notifications/1 |
explicit | GET, DELETE | internal/handler/api/v1/notification_handler_test.go::TestNotificationGet; internal/handler/api/v1/notification_handler_test.go::TestNotificationSoftDelete; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped show/delete routes return serialized notifications and soft-delete account-scoped records. |
| Other | reference/chatwoot/app/javascript/dashboard/api/specs/notifications.spec.js |
literal | /api/v1/notifications/1/notifications |
explicit | GET, DELETE | internal/handler/api/v1/notification_handler_test.go::TestNotificationHandler_List_ChatwootEnvelopeAndIncludes; route dump |
Covered as frontend spec-only literal from the JS helper; runtime Woochat flow uses account-scoped notification collection and actor serialization fixtures. |
| Other | reference/chatwoot/app/javascript/dashboard/api/specs/notifications.spec.js |
literal | /api/v1/notifications/1/snooze |
explicit | GET, DELETE | internal/handler/api/v1/notification_handler_test.go::TestNotificationHandler_SnoozeWithDB; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped snooze route accepts { snoozed_until } and returns the updated Chatwoot notification payload. |
| Other | reference/chatwoot/app/javascript/dashboard/api/specs/notifications.spec.js |
literal | /api/v1/notifications/destroy_all |
explicit | GET, DELETE | internal/handler/api/v1/notification_handler_test.go::TestNotificationHandler_DestroyAllWithDB; internal/handler/api/v1/notification_handler_test.go::TestNotificationHandler_DestroyAll_ReadOnly; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped destroy-all route accepts Woochat body filters and returns empty OK while preserving read-only filter semantics. |
| Other | reference/chatwoot/app/javascript/dashboard/api/specs/notifications.spec.js |
literal | /api/v1/notifications/read_all |
explicit | GET, DELETE | internal/handler/api/v1/notification_handler_test.go::TestNotificationReadAllWithDB; internal/handler/api/v1/notification_handler_test.go::TestNotificationHandler_MarkAllRead_PrimaryActorOnly; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped read-all route supports full read and primary actor filters used by Woochat. |
| Other | reference/chatwoot/app/javascript/dashboard/api/specs/notifications.spec.js |
literal | /api/v1/notifications/unread_count |
explicit | GET, DELETE | internal/handler/api/v1/notification_handler_test.go::TestNotificationHandler_UnreadWithDB; internal/handler/api/v1/notification_handler_test.go::TestNotificationUnreadCountIsAccountScoped; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped unread-count route returns { count } and enforces account scope. |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/specs/reports.spec.js |
literal | /api/v2 |
explicit | - | internal/handler/api/v1/analytics_handler_test.go::TestAnalyticsHandlerTestSuite/TestAPIV2Reports_ChatwootPayloadShapes; route dump |
Covered as frontend spec-only ApiClient version assertion; runtime reports are account-scoped under /api/v2/accounts/:account_id/reports.... |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/specs/reports.spec.js |
literal | /api/v2/reports |
explicit | - | internal/handler/api/v1/analytics_handler_test.go::TestAnalyticsHandlerTestSuite/TestAPIV2Reports_ChatwootPayloadShapes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped APIV2 reports route accepts metric/since/until/type/group_by/timezone_offset and returns Chatwoot timeseries points. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/reports.spec.js |
literal | /api/v2/reports/agents |
explicit | - | internal/handler/api/v1/analytics_handler_test.go::TestAnalyticsHandlerTestSuite/TestAPIV2Reports_ChatwootPayloadShapes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped agent reports route returns Chatwoot CSV headers/shape. |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/specs/reports.spec.js |
literal | /api/v2/reports/bot_metrics |
explicit | - | internal/handler/api/v1/analytics_handler_test.go::TestAnalyticsHandlerTestSuite/TestAPIV2Reports_AllFrontendEndpointShapes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped bot-metrics route returns Chatwoot JSON metric keys. |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/specs/reports.spec.js |
literal | /api/v2/reports/bot_summary |
explicit | - | internal/handler/api/v1/analytics_handler_test.go::TestAnalyticsHandlerTestSuite/TestAPIV2Reports_AllFrontendEndpointShapes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped bot-summary route accepts group_by/business_hours and returns Chatwoot summary keys. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/reports.spec.js |
literal | /api/v2/reports/conversations |
explicit | - | internal/handler/api/v1/analytics_handler_test.go::TestAnalyticsHandlerTestSuite/TestAPIV2Reports_AllFrontendEndpointShapes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped conversation reports route returns Chatwoot conversation report rows. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/reports.spec.js |
literal | /api/v2/reports/inboxes |
explicit | - | internal/handler/api/v1/analytics_handler_test.go::TestAnalyticsHandlerTestSuite/TestAPIV2Reports_AllFrontendEndpointShapes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped inbox reports route returns Chatwoot CSV headers/shape. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/reports.spec.js |
literal | /api/v2/reports/labels |
explicit | - | internal/handler/api/v1/analytics_handler_test.go::TestAnalyticsHandlerTestSuite/TestAPIV2Reports_AllFrontendEndpointShapes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped label reports route returns Chatwoot CSV headers/shape. |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/specs/reports.spec.js |
literal | /api/v2/reports/summary |
explicit | - | internal/handler/api/v1/analytics_handler_test.go::TestAnalyticsHandlerTestSuite/TestAPIV2Reports_ChatwootPayloadShapes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped summary route returns Chatwoot summary keys and counts. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/reports.spec.js |
literal | /api/v2/reports/teams |
explicit | - | internal/handler/api/v1/analytics_handler_test.go::TestAnalyticsHandlerTestSuite/TestAPIV2Reports_AllFrontendEndpointShapes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped team reports route returns Chatwoot CSV headers/shape. |
| Other | reference/chatwoot/app/javascript/dashboard/api/specs/search.spec.js |
literal | /api/v1/search |
explicit | GET | internal/handler/api/v1/search_handler_test.go::TestSearchHandler_GlobalSearch_UsesReferenceResultTypes; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped global search preserves q and returns Chatwoot reference result types. |
| Help Center | reference/chatwoot/app/javascript/dashboard/api/specs/search.spec.js |
literal | /api/v1/search/articles |
explicit | GET | internal/handler/api/v1/search_handler_test.go::TestSearchHandler_SearchArticles_HydratesPortalAndCategoryPayload; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped article search preserves filters and hydrates Chatwoot portal/category article payload. |
| CRM | reference/chatwoot/app/javascript/dashboard/api/specs/search.spec.js |
literal | /api/v1/search/contacts |
explicit | GET | internal/handler/api/v1/search_handler_test.go::TestSearchHandler_SearchContacts_Success; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped contact search preserves q/page/since/until style params and returns Chatwoot { payload: { contacts } }. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/search.spec.js |
literal | /api/v1/search/conversations |
explicit | GET | internal/handler/api/v1/search_handler_test.go::TestSearchHandler_SearchConversations_ChatwootPayloadShape; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped conversation search returns Chatwoot conversation payload shape and ignores unsupported reference filters safely. |
| Conversation/Message | reference/chatwoot/app/javascript/dashboard/api/specs/search.spec.js |
literal | /api/v1/search/messages |
explicit | GET | internal/handler/api/v1/search_handler_test.go::TestSearchHandler_SearchMessages_HydratesChatwootMessagePayload; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped message search preserves supported filters and hydrates Chatwoot message payload. |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/specs/slaReports.spec.js |
literal | /api/v1 |
explicit | GET | internal/handler/api/v1/sla_policy_handler_test.go::TestSlaPolicyHandler_ListAppliedSlas_ChatwootPayloadAndFilters; route dump |
Covered as frontend spec-only ApiClient version assertion; runtime applied-SLA report routes are account-scoped under /api/v1/accounts/:account_id/applied_slas. |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/specs/slaReports.spec.js |
literal | /api/v1/applied_slas |
explicit | GET | internal/handler/api/v1/sla_policy_handler_test.go::TestSlaPolicyHandler_ListAppliedSlas_ChatwootPayloadAndFilters; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped applied-SLA list preserves frontend filters and returns Chatwoot { meta, payload } shape. |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/specs/slaReports.spec.js |
literal | /api/v1/applied_slas/download |
explicit | GET | internal/handler/api/v1/sla_policy_handler_test.go::TestSlaPolicyHandler_GetAppliedSlaDownload_Success; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped applied-SLA download returns Chatwoot CSV headers/body. |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/specs/slaReports.spec.js |
literal | /api/v1/applied_slas/metrics |
explicit | GET | internal/handler/api/v1/sla_policy_handler_test.go::TestSlaPolicyHandler_GetAppliedSlaMetrics_ChatwootReportShape; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped applied-SLA metrics returns Chatwoot report totals by SLA status. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/teams.spec.js |
literal | /api/v1/teams/1/team_members |
explicit | - | internal/handler/api/v1/team_handler_test.go::TestTeamHandlerSuite/TestTeamMembers_ChatwootPayloadAndDiffUpdate; route dump |
Covered as frontend spec-only bare URL; runtime account-scoped team-members route supports GET/PATCH diff updates and returns Chatwoot agent serializer array. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/specs/tiktokClient.spec.js |
literal | /api/v1/accounts/1/tiktok/authorization |
explicit | - | internal/handler/api/v1/tiktok_channel_handler_test.go::TestTikTokChannel_Create_ChatwootSetupPayloadAndConfig; route parity exact for TikTok authorization |
Covered for TikTok authorization/setup endpoint path and payload used by Woochat setup. |
| Reports/Audit | reference/chatwoot/app/javascript/dashboard/api/summaryReports.js |
ApiClient | summary_reports |
account-scoped | GET | internal/handler/api/v1/summary_report_handler_test.go::TestSummaryReportHandlerTestSuite/TestAgent_Success; route dump |
Covered as account-scoped runtime path; summary reports validate date range and return Chatwoot array payloads for Woochat summary report clients. |
| Inbox/Agents/Assignment | reference/chatwoot/app/javascript/dashboard/api/teams.js |
ApiClient | teams |
account-scoped | GET, POST, PATCH | internal/handler/api/v1/team_handler_test.go::TestTeamHandlerSuite/TestList_Success; internal/handler/api/v1/team_handler_test.go::TestTeamHandlerSuite/TestCreate_Success; internal/handler/api/v1/team_handler_test.go::TestTeamHandlerSuite/TestUpdate_PatchRawPayloadSuccess; route dump |
Covered as account-scoped runtime path; teams list/create/patch return raw Chatwoot team payloads including allow_auto_assign and is_member. |
| Other | reference/chatwoot/app/javascript/dashboard/api/userNotificationSettings.js |
ApiClient | notification_settings |
account-scoped | PATCH | internal/handler/api/v1/notification_setting_handler_test.go::TestNotificationSettingHandlerSuite/TestUpdate_ReturnsRawChatwootPayload; route dump |
Covered as account-scoped runtime path; notification settings PATCH returns raw Chatwoot preference payload without generic wrapper. |
| Other | reference/chatwoot/app/javascript/dashboard/api/webhooks.js |
ApiClient | webhooks |
account-scoped | standard CRUD | internal/handler/api/v1/webhook_subscription_handler_test.go::TestWebhookSubscriptionHandlerSuite/TestList_Success; internal/handler/api/v1/webhook_subscription_handler_test.go::TestWebhookSubscriptionHandlerSuite/TestCreate_Success_ChatwootPayload; internal/handler/api/v1/webhook_subscription_handler_test.go::TestWebhookSubscriptionHandlerSuite/TestUpdate_Success_ChatwootPayload; internal/handler/api/v1/webhook_subscription_handler_test.go::TestWebhookSubscriptionHandlerSuite/TestDelete_Success_ReturnsEmptyOK; route dump |
Covered as account-scoped runtime path; webhooks CRUD returns Chatwoot { payload: { webhook(s) } } shape and empty OK delete. |
| Other | reference/chatwoot/app/javascript/dashboard/api/yearInReview.js |
ApiClient | year_in_review |
account-scoped | GET | internal/handler/api/v1/year_in_review_handler_test.go::TestYearInReviewShowReturnsRawChatwootPayload; route dump |
Covered as account-scoped APIV2 runtime path; year-in-review returns raw Chatwoot { year, total_conversations, busiest_day, support_personality } payload. |
| CSAT/Survey | reference/chatwoot/app/javascript/survey/api/endPoints.js |
literal | /public/api/v1/csat_survey/${uuid} |
explicit | - | internal/handler/api/v1/csat_survey_handler_test.go::TestCsatSurveyHandlerTestSuite/TestPublicCsatShowAndUpdate_Success; internal/handler/api/v1/csat_survey_handler_test.go::TestCsatSurveyHandlerTestSuite/TestPublicCsatUpdate_ChatwootPutPersistsShowPayload; route dump |
Covered as public runtime path; CSAT survey show/update works by UUID and returns persisted Chatwoot public survey payload. |
| CSAT/Survey | reference/chatwoot/app/javascript/survey/api/specs/endPoints.spec.js |
literal | /public/api/v1/csat_survey/98c5d7f3-8873-4262-b101-d56425ff7ee1 |
explicit | - | internal/handler/api/v1/csat_survey_handler_test.go::TestCsatSurveyHandlerTestSuite/TestPublicCsatShowAndUpdate_Success; internal/handler/api/v1/csat_survey_handler_test.go::TestCsatSurveyHandlerTestSuite/TestPublicCsatUpdate_ChatwootPutPersistsShowPayload; route dump |
Covered as frontend spec-only fixed UUID literal; runtime public CSAT UUID route returns and updates Chatwoot-compatible survey response payload. |
| Widget | reference/chatwoot/app/javascript/widget/api/contacts.js |
literal | /api/v1/${endPoint}${window.location.search} |
explicit | GET, POST, PATCH | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootConfigCwConversationReusesContactInbox; internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootMessageUpdate_SubmitsEmail; internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootDestroyContactCustomAttributes; route dump |
Covered for widget contact literal builder; runtime widget/contact, set_user, and contact custom-attribute actions use query/cookie auth and return Chatwoot widget contact payloads. |
| Widget | reference/chatwoot/app/javascript/widget/api/conversation.js |
literal | /api/v1/widget/conversations${window.location.search} |
explicit | GET, POST | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootConversationQueryTokenReusesSession; internal/handler/widget/widget_handler_test.go::TestWidgetHandler_GetConversations_Success; route dump |
Covered for widget conversation GET/POST; runtime preserves website_token/cw_conversation session reuse and returns Chatwoot conversation payloads. |
| Widget | reference/chatwoot/app/javascript/widget/api/conversation.js |
literal | /api/v1/widget/conversations/destroy_custom_attributes${window.location.search} |
explicit | GET, POST | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootConversationCustomAttributeResponses; route dump |
Covered for widget conversation custom-attribute delete; runtime accepts Chatwoot body and returns updated conversation payload. |
| Widget | reference/chatwoot/app/javascript/widget/api/conversation.js |
literal | /api/v1/widget/conversations/set_custom_attributes${window.location.search} |
explicit | GET, POST | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootConversationCustomAttributeResponses; route dump |
Covered for widget conversation custom-attribute set; runtime accepts { custom_attributes } and returns empty OK like Chatwoot. |
| Widget | reference/chatwoot/app/javascript/widget/api/conversation.js |
literal | /api/v1/widget/conversations/toggle_status${window.location.search} |
explicit | GET, POST | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootConversationHeadActionsReturnEmptyOK; internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootToggleStatusHonorsEndConversationFlag; route dump |
Covered for widget toggle-status; runtime returns empty OK when enabled and stable forbidden/not-found states when unavailable. |
| Widget | reference/chatwoot/app/javascript/widget/api/conversation.js |
literal | /api/v1/widget/conversations/toggle_typing${window.location.search} |
explicit | GET, POST | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootConversationHeadActionsReturnEmptyOK; internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ToggleTyping_Success; route dump |
Covered for widget toggle-typing; runtime accepts { typing_status } and returns empty OK while publishing widget typing payload. |
| Widget | reference/chatwoot/app/javascript/widget/api/conversation.js |
literal | /api/v1/widget/conversations/transcript${window.location.search} |
explicit | GET, POST | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootSetUserAndTranscript; internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootTranscriptStatusParity; route dump |
Covered for widget transcript; runtime returns Chatwoot accepted/empty status shapes based on contact email and conversation context. |
| Widget | reference/chatwoot/app/javascript/widget/api/conversation.js |
literal | /api/v1/widget/conversations/update_last_seen${window.location.search} |
explicit | GET, POST | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootConversationHeadActionsReturnEmptyOK; route dump |
Covered for widget update-last-seen; runtime accepts contact last-seen body and returns empty OK. |
| Widget | reference/chatwoot/app/javascript/widget/api/conversationLabels.js |
literal | /api/v1/${endPoint}${window.location.search} |
explicit | POST, DELETE | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootEventsAndLabels; route dump |
Covered for widget label builder; runtime supports POST widget/labels and DELETE widget/labels/:label using auth token or cw_conversation cookie. |
| Widget | reference/chatwoot/app/javascript/widget/api/endPoints.js |
literal | /api/v1/widget/campaigns |
explicit | - | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootCampaigns_Success; route dump |
Covered for widget campaigns; runtime filters enabled campaigns by website token and returns raw Chatwoot campaign array. |
| Widget | reference/chatwoot/app/javascript/widget/api/endPoints.js |
literal | /api/v1/widget/conversations${search} |
explicit | - | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootConversationQueryTokenReusesSession; route dump |
Covered for endpoint builder create-conversation path; runtime creates/reuses widget conversation from query params. |
| Widget | reference/chatwoot/app/javascript/widget/api/endPoints.js |
literal | /api/v1/widget/events |
explicit | - | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootEventsAndLabels; route dump |
Covered for widget events; runtime accepts event body via auth token or cookie and returns no-content. |
| Widget | reference/chatwoot/app/javascript/widget/api/endPoints.js |
literal | /api/v1/widget/inbox_members |
explicit | - | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootInboxMembers_Success; route dump |
Covered for widget inbox members; runtime returns { payload: [...] } with Chatwoot agent availability fields. |
| Widget | reference/chatwoot/app/javascript/widget/api/endPoints.js |
literal | /api/v1/widget/messages${search} |
explicit | - | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootMessageAppliesAttrsAndLabelsToNewConversation; internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootMessagesIndexFiltersInternalMessages; route dump |
Covered for widget message create/list endpoints; runtime applies custom attributes/labels on first conversation and returns Chatwoot message list payloads. |
| Widget | reference/chatwoot/app/javascript/widget/api/endPoints.js |
literal | /api/v1/widget/messages${window.location.search} |
explicit | - | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootMessages_AuthTokenAndNestedPayload; route dump |
Covered for widget messages with window.location.search; runtime accepts nested Chatwoot message body and auth token. |
| Widget | reference/chatwoot/app/javascript/widget/api/endPoints.js |
literal | /api/v1/widget/messages/${id}${window.location.search} |
explicit | - | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootMessageUpdate_SubmitsEmail; route dump |
Covered for widget message update; runtime supports Chatwoot email-submit update path with auth token. |
| Widget | reference/chatwoot/app/javascript/widget/api/endPoints.js |
literal | /hc/${slug}/${locale}/articles.json |
explicit | - | internal/handler/api/v1/article_handler_test.go::TestArticleHandlerSuite/TestPublicList_WidgetPopularArticles; route dump |
Covered for widget help-center article JSON path; runtime public help-center route returns published locale article payloads. |
| Widget | reference/chatwoot/app/javascript/widget/api/events.js |
literal | /api/v1/widget/events${search} |
explicit | POST | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootEventsAndLabels; route dump |
Covered for widget events search builder; runtime accepts website_token query or cookie session and returns no-content. |
| Widget | reference/chatwoot/app/javascript/widget/api/integration.js |
literal | /api/v1/widget/integrations/dyte/add_participant_to_meeting${search} |
explicit | POST | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootDyteParticipant; route dump |
Covered for widget Dyte integration; runtime accepts message/participant body and returns provider auth token payload. |
| Widget | reference/chatwoot/app/javascript/widget/api/specs/endPoints.spec.js |
literal | /api/v1/widget/events |
explicit | - | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootEventsAndLabels; route dump |
Covered as frontend spec fixed widget-events literal; runtime widget events route returns no-content. |
| Widget | reference/chatwoot/app/javascript/widget/api/specs/endPoints.spec.js |
literal | /api/v1/widget/messages |
explicit | - | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootMessages_AuthTokenAndNestedPayload; route dump |
Covered as frontend spec fixed widget-messages literal; runtime accepts Chatwoot widget message body and returns message payload. |
| Widget | reference/chatwoot/app/javascript/widget/api/specs/endPoints.spec.js |
literal | /api/v1/widget/messages?param=1&locale=ar |
explicit | - | internal/handler/widget/widget_handler_test.go::TestWidgetHandler_ChatwootMessages_AuthTokenAndNestedPayload; route dump |
Covered as frontend spec fixed widget-messages query literal; runtime preserves query params while authenticating via widget token/auth token and returning message payload. |
Required Follow-Up
- Convert the highest-traffic rows into fixture contract tests: auth/profile, accounts/cache keys, inboxes, conversations/messages, contacts/companies, widget messages, CSAT, reports, and enterprise settings.
- Attach live
scripts/parity_frontend_smoke.sh --api-smokeand--browser-smokeevidence to the rows that are exercised by smoke flows. - Keep any new frontend API client file from
reference/chatwootmapped here before claiming direct-connect compatibility.