Restructure the monorepo into clear top-level directories: - backend/: Go module root (cmd, internal, pkg, configs, migrations, docs/swagger, scripts, tests, go.mod, Makefile, .air.toml) - deploy/: Docker (Dockerfile, docker-compose*), quickstart, fluentd - docs/: project documentation + reports/ (moved from repo root) - AGENTS.md: new AI coding-agent guide at repo root Update all references to the new layout: - Dockerfile: COPY backend/go.mod, COPY backend/ (context = repo root) - docker-compose files: context ../.., dockerfile deploy/docker/Dockerfile, env_file ../../.env, volume mounts ../../backend:/app - deploy/quickstart/compose.yaml: dockerfile deploy/docker/Dockerfile - CI: working-directory: backend for go commands, file deploy/docker/Dockerfile, coverage path backend/coverage.out, health_check backend/scripts/ - backend/Makefile: docker target uses -f ../deploy/docker/Dockerfile ../ - README: architecture tree, quickstart, config paths updated Move root stray scripts (rename_models.*, run_m11_tests.sh, verify_build.sh, gorm_bool_main.go) to backend/scripts/legacy/. All moves via git mv to preserve history. Build, vet, SQLite tests, and docker compose config verified.
39 KiB
39 KiB
GoChat vs Chatwoot 路由差距报告
生成时间: 2026-06-03T15:09:00.174781
概览
- Chatwoot路由总数: 473
- GoChat路由总数: 0
- 已覆盖: 0 (0.0%)
- 缺失: 473
- GoChat额外: 0
缺失路由清单
Enterprise API (5条)
GET /enterprise/api/v1/accounts/:id/limits→ enterprise/accounts#limitsPOST /enterprise/api/v1/accounts/:id/checkout→ enterprise/accounts#checkoutPOST /enterprise/api/v1/accounts/:id/subscription→ enterprise/accounts#subscriptionPOST /enterprise/api/v1/accounts/:id/toggle_deletion→ enterprise/accounts#toggle_deletionPOST /enterprise/api/v1/accounts/:id/topup_checkout→ enterprise/accounts#topup_checkout
Platform API (21条)
DELETE /platform/api/v1/accounts/:id→ platform/accounts#destroyDELETE /platform/api/v1/accounts/:account_id/account_users→ platform/account_users#destroyDELETE /platform/api/v1/agent_bots/:id→ platform/agent_bots#destroyDELETE /platform/api/v1/agent_bots/:id/avatar→ platform/agent_bots#delete_avatarDELETE /platform/api/v1/users/:id→ platform/users#destroyGET /platform/api/v1/accounts→ platform/accounts#indexGET /platform/api/v1/accounts/:id→ platform/accounts#showGET /platform/api/v1/accounts/:account_id/account_users→ platform/account_users#indexGET /platform/api/v1/agent_bots→ platform/agent_bots#indexGET /platform/api/v1/agent_bots/:id→ platform/agent_bots#showGET /platform/api/v1/users/:id→ platform/users#showGET /platform/api/v1/users/:id/login→ platform/users#loginPOST /platform/api/v1/accounts→ platform/accounts#createPOST /platform/api/v1/accounts/:account_id/account_users→ platform/account_users#createPOST /platform/api/v1/accounts/:account_id/email_channel_migrations→ platform/email_channel_migrations#createPOST /platform/api/v1/agent_bots→ platform/agent_bots#createPOST /platform/api/v1/users→ platform/users#createPOST /platform/api/v1/users/:id/token→ platform/users#tokenPUT /platform/api/v1/accounts/:id→ platform/accounts#updatePUT /platform/api/v1/agent_bots/:id→ platform/agent_bots#updatePUT /platform/api/v1/users/:id→ platform/users#update
Public API (15条)
GET /public/api/v1/contacts/:id→ public/contacts#showGET /public/api/v1/conversations→ public/conversations#indexGET /public/api/v1/conversations/:id→ public/conversations#showGET /public/api/v1/conversations/:id/messages→ public/messages#indexGET /public/api/v1/csat_survey→ public/csat_survey#showGET /public/api/v1/inboxes→ public/inboxes#indexPATCH /public/api/v1/contacts/:id→ public/contacts#updatePATCH /public/api/v1/conversations/:id/messages/:message_id→ public/messages#updatePATCH /public/api/v1/csat_survey→ public/csat_survey#updatePOST /public/api/v1/contacts→ public/contacts#createPOST /public/api/v1/conversations→ public/conversations#createPOST /public/api/v1/conversations/:id/messages→ public/messages#createPOST /public/api/v1/conversations/:id/toggle_status→ public/conversations#toggle_statusPOST /public/api/v1/conversations/:id/toggle_typing→ public/conversations#toggle_typingPOST /public/api/v1/conversations/:id/update_last_seen→ public/conversations#update_last_seen
V1 Account级-其他 (335条)
DELETE /api/v1/accounts/:account_id/agent_bots/:id→ agent_bots#destroyDELETE /api/v1/accounts/:account_id/agent_bots/:id/avatar→ agent_bots#delete_avatarDELETE /api/v1/accounts/:account_id/agent_capacity_policies/:id→ agent_capacity_policies#destroyDELETE /api/v1/accounts/:account_id/agents/:id→ agents#destroyDELETE /api/v1/accounts/:account_id/assignment_policies/:id→ assignment_policies#destroyDELETE /api/v1/accounts/:account_id/assignment_policies/:assignment_policy_id/inboxes/:inbox_id→ assignment_policies/inboxes#destroyDELETE /api/v1/accounts/:account_id/automation_rules/:id→ automation_rules#destroyDELETE /api/v1/accounts/:account_id/campaigns/:id→ campaigns#destroyDELETE /api/v1/accounts/:account_id/canned_responses/:id→ canned_responses#destroyDELETE /api/v1/accounts/:account_id/captain/assistants/:id→ captain/assistants#destroyDELETE /api/v1/accounts/:account_id/captain/assistants/:assistant_id/inboxes/:inbox_id→ captain/assistants/inboxes#destroyDELETE /api/v1/accounts/:account_id/captain/assistants/:assistant_id/scenarios/:id→ captain/scenarios#destroyDELETE /api/v1/accounts/:account_id/captain/custom_tools/:id→ captain/custom_tools#destroyDELETE /api/v1/accounts/:account_id/captain/documents/:id→ captain/documents#destroyDELETE /api/v1/accounts/:account_id/companies/:id→ companies#destroyDELETE /api/v1/accounts/:account_id/companies/:id/avatar→ companies#delete_avatarDELETE /api/v1/accounts/:account_id/companies/:id/contacts/:contact_id→ companies/contacts#destroyDELETE /api/v1/accounts/:account_id/contacts/:id→ contacts#destroyDELETE /api/v1/accounts/:account_id/contacts/:id/avatar→ contacts#delete_avatarDELETE /api/v1/accounts/:account_id/contacts/:id/notes/:note_id→ contacts/notes#destroyDELETE /api/v1/accounts/:account_id/conversations/:id→ conversations#destroyDELETE /api/v1/accounts/:account_id/conversations/:conversation_id/draft_messages→ conversations/draft_messages#destroyDELETE /api/v1/accounts/:account_id/conversations/:conversation_id/messages/:id→ conversations/messages#destroyDELETE /api/v1/accounts/:account_id/conversations/:conversation_id/participants→ conversations/participants#destroyDELETE /api/v1/accounts/:account_id/custom_attribute_definitions/:id→ custom_attribute_definitions#destroyDELETE /api/v1/accounts/:account_id/custom_filters/:id→ custom_filters#destroyDELETE /api/v1/accounts/:account_id/custom_roles/:id→ custom_roles#destroyDELETE /api/v1/accounts/:account_id/dashboard_apps/:id→ dashboard_apps#destroyDELETE /api/v1/accounts/:account_id/inbox_limits/:id→ inbox_limits#destroyDELETE /api/v1/accounts/:account_id/inbox_members→ inbox_members#destroyDELETE /api/v1/accounts/:account_id/inboxes/:id→ inboxes#destroyDELETE /api/v1/accounts/:account_id/inboxes/:inbox_id/assignment_policy→ inboxes/assignment_policy#destroyDELETE /api/v1/accounts/:account_id/inboxes/:id/avatar→ inboxes#delete_avatarDELETE /api/v1/accounts/:account_id/inboxes/:inbox_id/instagram_comments/:comment_id→ instagram_channel#delete_commentDELETE /api/v1/accounts/:account_id/integrations/hooks/:id→ integrations/hooks#destroyDELETE /api/v1/accounts/:account_id/integrations/linear→ integrations/linear#destroyDELETE /api/v1/accounts/:account_id/integrations/notion→ integrations/notion#destroyDELETE /api/v1/accounts/:account_id/integrations/shopify→ integrations/shopify#destroyDELETE /api/v1/accounts/:account_id/integrations/slack→ integrations/slack#destroyDELETE /api/v1/accounts/:account_id/labels/:id→ labels#destroyDELETE /api/v1/accounts/:account_id/macros/:id→ macros#destroyDELETE /api/v1/accounts/:account_id/notifications/:id→ notifications#destroyDELETE /api/v1/accounts/:account_id/portals/:id→ portals#destroyDELETE /api/v1/accounts/:account_id/portals/:portal_id/articles/:id→ articles#destroyDELETE /api/v1/accounts/:account_id/portals/:portal_id/categories/:id→ categories#destroyDELETE /api/v1/accounts/:account_id/portals/:id/logo→ portals#delete_logoDELETE /api/v1/accounts/:account_id/portals/articles/bulk_actions/delete_articles→ articles/bulk_actions#delete_articlesDELETE /api/v1/accounts/:account_id/sla_policies/:id→ sla_policies#destroyDELETE /api/v1/accounts/:account_id/teams/:id→ teams#destroyDELETE /api/v1/accounts/:account_id/teams/:team_id/team_members→ team_members#destroyDELETE /api/v1/accounts/:account_id/webhooks/:id→ webhooks#destroyGET /api/v1/accounts/:account_id→ accounts#showGET /api/v1/accounts/:account_id/agent_bots→ agent_bots#indexGET /api/v1/accounts/:account_id/agent_bots/:id→ agent_bots#showGET /api/v1/accounts/:account_id/agent_capacity_policies→ agent_capacity_policies#indexGET /api/v1/accounts/:account_id/agent_capacity_policies/:id→ agent_capacity_policies#showGET /api/v1/accounts/:account_id/agents→ agents#indexGET /api/v1/accounts/:account_id/applied_slas→ applied_slas#indexGET /api/v1/accounts/:account_id/applied_slas/download→ applied_slas#downloadGET /api/v1/accounts/:account_id/applied_slas/metrics→ applied_slas#metricsGET /api/v1/accounts/:account_id/assignable_agents→ assignable_agents#indexGET /api/v1/accounts/:account_id/assignment_policies→ assignment_policies#indexGET /api/v1/accounts/:account_id/assignment_policies/:id→ assignment_policies#showGET /api/v1/accounts/:account_id/assignment_policies/:assignment_policy_id/inboxes→ assignment_policies/inboxes#indexGET /api/v1/accounts/:account_id/automation_rules→ automation_rules#indexGET /api/v1/accounts/:account_id/automation_rules/:id→ automation_rules#showGET /api/v1/accounts/:account_id/cache_keys→ accounts#cache_keysGET /api/v1/accounts/:account_id/campaigns→ campaigns#indexGET /api/v1/accounts/:account_id/campaigns/:id→ campaigns#showGET /api/v1/accounts/:account_id/canned_responses→ canned_responses#indexGET /api/v1/accounts/:account_id/captain/assistant_responses→ captain/assistant_responses#indexGET /api/v1/accounts/:account_id/captain/assistants→ captain/assistants#indexGET /api/v1/accounts/:account_id/captain/assistants/:id→ captain/assistants#showGET /api/v1/accounts/:account_id/captain/assistants/:assistant_id/inboxes→ captain/assistants/inboxes#indexGET /api/v1/accounts/:account_id/captain/assistants/:assistant_id/scenarios→ captain/scenarios#indexGET /api/v1/accounts/:account_id/captain/assistants/:assistant_id/scenarios/:id→ captain/scenarios#showGET /api/v1/accounts/:account_id/captain/assistants/tools→ captain/assistants#toolsGET /api/v1/accounts/:account_id/captain/copilot_threads→ captain/copilot_threads#indexGET /api/v1/accounts/:account_id/captain/copilot_threads/:id/copilot_messages→ captain/copilot_messages#indexGET /api/v1/accounts/:account_id/captain/custom_tools→ captain/custom_tools#indexGET /api/v1/accounts/:account_id/captain/custom_tools/:id→ captain/custom_tools#showGET /api/v1/accounts/:account_id/captain/documents→ captain/documents#indexGET /api/v1/accounts/:account_id/captain/documents/:id→ captain/documents#showGET /api/v1/accounts/:account_id/captain/preferences→ captain/preferences#showGET /api/v1/accounts/:account_id/companies→ companies#indexGET /api/v1/accounts/:account_id/companies/:id→ companies#showGET /api/v1/accounts/:account_id/companies/:id/contacts→ companies/contacts#indexGET /api/v1/accounts/:account_id/companies/:id/contacts/search→ companies/contacts#searchGET /api/v1/accounts/:account_id/companies/:id/conversations→ companies/conversations#indexGET /api/v1/accounts/:account_id/companies/:id/notes→ companies/notes#indexGET /api/v1/accounts/:account_id/companies/search→ companies#searchGET /api/v1/accounts/:account_id/contact_inboxes/filter→ contact_inboxes#filterGET /api/v1/accounts/:account_id/contacts→ contacts#indexGET /api/v1/accounts/:account_id/contacts/:id→ contacts#showGET /api/v1/accounts/:account_id/contacts/:id/attachments→ contacts/attachments#indexGET /api/v1/accounts/:account_id/contacts/:id/contactable_inboxes→ contacts#contactable_inboxesGET /api/v1/accounts/:account_id/contacts/:id/conversations→ contacts/conversations#indexGET /api/v1/accounts/:account_id/contacts/:id/labels→ contacts/labels#indexGET /api/v1/accounts/:account_id/contacts/:id/notes→ contacts/notes#indexGET /api/v1/accounts/:account_id/contacts/:id/notes/:note_id→ contacts/notes#showGET /api/v1/accounts/:account_id/contacts/active→ contacts#activeGET /api/v1/accounts/:account_id/contacts/search→ contacts#searchGET /api/v1/accounts/:account_id/conversations→ conversations#indexGET /api/v1/accounts/:account_id/conversations/:id→ conversations#showGET /api/v1/accounts/:account_id/conversations/:id/attachments→ conversations#attachmentsGET /api/v1/accounts/:account_id/conversations/:conversation_id/draft_messages→ conversations/draft_messages#showGET /api/v1/accounts/:account_id/conversations/:conversation_id/labels→ conversations/labels#indexGET /api/v1/accounts/:account_id/conversations/:conversation_id/messages→ conversations/messages#indexGET /api/v1/accounts/:account_id/conversations/:conversation_id/participants→ conversations/participants#showGET /api/v1/accounts/:account_id/conversations/meta→ conversations#metaGET /api/v1/accounts/:account_id/conversations/search→ conversations#searchGET /api/v1/accounts/:account_id/conversations/unread_counts→ conversations/unread_counts#indexGET /api/v1/accounts/:account_id/csat_survey_responses→ csat_survey_responses#indexGET /api/v1/accounts/:account_id/csat_survey_responses/download→ csat_survey_responses#downloadGET /api/v1/accounts/:account_id/csat_survey_responses/metrics→ csat_survey_responses#metricsGET /api/v1/accounts/:account_id/custom_attribute_definitions→ custom_attribute_definitions#indexGET /api/v1/accounts/:account_id/custom_attribute_definitions/:id→ custom_attribute_definitions#showGET /api/v1/accounts/:account_id/custom_filters→ custom_filters#indexGET /api/v1/accounts/:account_id/custom_filters/:id→ custom_filters#showGET /api/v1/accounts/:account_id/custom_roles→ custom_roles#indexGET /api/v1/accounts/:account_id/custom_roles/:id→ custom_roles#showGET /api/v1/accounts/:account_id/dashboard_apps→ dashboard_apps#indexGET /api/v1/accounts/:account_id/dashboard_apps/:id→ dashboard_apps#showGET /api/v1/accounts/:account_id/google/callback→ google_channels#oauth_callbackGET /api/v1/accounts/:account_id/google/oauth→ google_channels#authorizationGET /api/v1/accounts/:account_id/google/webhooks→ google_channels#list_webhooksGET /api/v1/accounts/:account_id/inbox_limits→ inbox_limits#indexGET /api/v1/accounts/:account_id/inbox_limits/:id→ inbox_limits#showGET /api/v1/accounts/:account_id/inbox_members/:inbox_id→ inbox_members#showGET /api/v1/accounts/:account_id/inboxes→ inboxes#indexGET /api/v1/accounts/:account_id/inboxes/:id→ inboxes#showGET /api/v1/accounts/:account_id/inboxes/:id/agent_bot→ inboxes#agent_botGET /api/v1/accounts/:account_id/inboxes/:id/assignable_agents→ inboxes#assignable_agentsGET /api/v1/accounts/:account_id/inboxes/:inbox_id/assignment_policy→ inboxes/assignment_policy#showGET /api/v1/accounts/:account_id/inboxes/:id/campaigns→ inboxes#campaignsGET /api/v1/accounts/:account_id/inboxes/:id/csat_template→ inbox_csat_templates#showGET /api/v1/accounts/:account_id/inboxes/:id/health→ inboxes#healthGET /api/v1/accounts/:account_id/inboxes/:inbox_id/instagram_comments/:comment_id/replies→ instagram_channel#get_comment_repliesGET /api/v1/accounts/:account_id/inboxes/:inbox_id/instagram_comments/media/:media_id→ instagram_channel#get_commentsGET /api/v1/accounts/:account_id/integrations/apps→ integrations/apps#indexGET /api/v1/accounts/:account_id/integrations/apps/:id→ integrations/apps#showGET /api/v1/accounts/:account_id/integrations/hooks/:id→ integrations/hooks#showGET /api/v1/accounts/:account_id/integrations/linear/linked_issues→ integrations/linear#linked_issuesGET /api/v1/accounts/:account_id/integrations/linear/search_issue→ integrations/linear#search_issueGET /api/v1/accounts/:account_id/integrations/linear/team_entities→ integrations/linear#team_entitiesGET /api/v1/accounts/:account_id/integrations/linear/teams→ integrations/linear#teamsGET /api/v1/accounts/:account_id/integrations/shopify/orders→ integrations/shopify#ordersGET /api/v1/accounts/:account_id/integrations/slack/list_all_channels→ integrations/slack#list_all_channelsGET /api/v1/accounts/:account_id/labels→ labels#indexGET /api/v1/accounts/:account_id/labels/:id→ labels#showGET /api/v1/accounts/:account_id/macros→ macros#indexGET /api/v1/accounts/:account_id/macros/:id→ macros#showGET /api/v1/accounts/:account_id/notification_settings→ notification_settings#showGET /api/v1/accounts/:account_id/notifications→ notifications#indexGET /api/v1/accounts/:account_id/notifications/unread_count→ notifications#unread_countGET /api/v1/accounts/:account_id/portals→ portals#indexGET /api/v1/accounts/:account_id/portals/:id→ portals#showGET /api/v1/accounts/:account_id/portals/:portal_id/articles→ articles#indexGET /api/v1/accounts/:account_id/portals/:portal_id/articles/:id→ articles#showGET /api/v1/accounts/:account_id/portals/:portal_id/categories→ categories#indexGET /api/v1/accounts/:account_id/portals/:portal_id/categories/:id→ categories#showGET /api/v1/accounts/:account_id/portals/:id/ssl_status→ portals#ssl_statusGET /api/v1/accounts/:account_id/reporting_events→ reporting_events#indexGET /api/v1/accounts/:account_id/search→ search#indexGET /api/v1/accounts/:account_id/search/contacts→ search#contactsGET /api/v1/accounts/:account_id/search/conversations→ search#conversationsGET /api/v1/accounts/:account_id/search/messages→ search#messagesGET /api/v1/accounts/:account_id/sla_policies→ sla_policies#indexGET /api/v1/accounts/:account_id/sla_policies/:id→ sla_policies#showGET /api/v1/accounts/:account_id/teams→ teams#indexGET /api/v1/accounts/:account_id/teams/:id→ teams#showGET /api/v1/accounts/:account_id/teams/:team_id/team_members→ team_members#indexGET /api/v1/accounts/:account_id/webhooks→ webhooks#indexGET /api/v1/accounts/:account_id/whatsapp_calls/:id→ whatsapp_calls#showPATCH /api/v1/accounts/:account_id/contacts/:id/notes/:note_id→ contacts/notes#updatePATCH /api/v1/accounts/:account_id/conversations/:id→ conversations#updatePATCH /api/v1/accounts/:account_id/conversations/:conversation_id/draft_messages→ conversations/draft_messages#updatePATCH /api/v1/accounts/:account_id/conversations/:conversation_id/messages/:id→ conversations/messages#updatePATCH /api/v1/accounts/:account_id/conversations/:conversation_id/participants→ conversations/participants#updatePATCH /api/v1/accounts/:account_id/inbox_members→ inbox_members#updatePATCH /api/v1/accounts/:account_id/portals/:id/archive→ portals#archivePATCH /api/v1/accounts/:account_id/portals/articles/bulk_actions/update_status→ articles/bulk_actions#update_statusPATCH /api/v1/accounts/:account_id/teams/:team_id/team_members→ team_members#updatePOST /api/v1/accounts→ accounts#createPOST /api/v1/accounts/:account_id/actions/contact_merge→ contact_merges#createPOST /api/v1/accounts/:account_id/agent_bots→ agent_bots#createPOST /api/v1/accounts/:account_id/agent_bots/:id/reset_access_token→ agent_bots#reset_access_tokenPOST /api/v1/accounts/:account_id/agent_bots/:id/reset_secret→ agent_bots#reset_secretPOST /api/v1/accounts/:account_id/agent_capacity_policies→ agent_capacity_policies#createPOST /api/v1/accounts/:account_id/agents→ agents#createPOST /api/v1/accounts/:account_id/agents/bulk_create→ agents#bulk_createPOST /api/v1/accounts/:account_id/assignment_policies→ assignment_policies#createPOST /api/v1/accounts/:account_id/assignment_policies/:assignment_policy_id/inboxes→ assignment_policies/inboxes#createPOST /api/v1/accounts/:account_id/automation_rules→ automation_rules#createPOST /api/v1/accounts/:account_id/automation_rules/:id/clone→ automation_rules#clonePOST /api/v1/accounts/:account_id/bulk_actions→ bulk_actions#createPOST /api/v1/accounts/:account_id/callbacks/register_facebook_page→ callbacks#register_facebook_pagePOST /api/v1/accounts/:account_id/callbacks/verify_facebook_page→ callbacks#verify_facebook_pagePOST /api/v1/accounts/:account_id/campaigns→ campaigns#createPOST /api/v1/accounts/:account_id/canned_responses→ canned_responses#createPOST /api/v1/accounts/:account_id/captain/assistants→ captain/assistants#createPOST /api/v1/accounts/:account_id/captain/assistants/:assistant_id/inboxes→ captain/assistants/inboxes#createPOST /api/v1/accounts/:account_id/captain/assistants/:id/playground→ captain/assistants#playgroundPOST /api/v1/accounts/:account_id/captain/assistants/:assistant_id/scenarios→ captain/scenarios#createPOST /api/v1/accounts/:account_id/captain/bulk_actions→ captain/bulk_actions#createPOST /api/v1/accounts/:account_id/captain/copilot_threads→ captain/copilot_threads#createPOST /api/v1/accounts/:account_id/captain/copilot_threads/:id/copilot_messages→ captain/copilot_messages#createPOST /api/v1/accounts/:account_id/captain/custom_tools→ captain/custom_tools#createPOST /api/v1/accounts/:account_id/captain/custom_tools/test→ captain/custom_tools#testPOST /api/v1/accounts/:account_id/captain/documents→ captain/documents#createPOST /api/v1/accounts/:account_id/captain/documents/:id/sync→ captain/documents#syncPOST /api/v1/accounts/:account_id/captain/tasks/rewrite→ captain/tasks#rewritePOST /api/v1/accounts/:account_id/channels/twilio_channel→ twilio_channels#createPOST /api/v1/accounts/:account_id/companies→ companies#createPOST /api/v1/accounts/:account_id/companies/:id/contacts→ companies/contacts#createPOST /api/v1/accounts/:account_id/companies/:id/destroy_custom_attributes→ companies#destroy_custom_attributesPOST /api/v1/accounts/:account_id/contacts→ contacts#createPOST /api/v1/accounts/:account_id/contacts/:id/contact_inboxes→ contacts/contact_inboxes#createPOST /api/v1/accounts/:account_id/contacts/:id/destroy_custom_attributes→ contacts#destroy_custom_attributesPOST /api/v1/accounts/:account_id/contacts/:id/labels→ contacts/labels#createPOST /api/v1/accounts/:account_id/contacts/:id/notes→ contacts/notes#createPOST /api/v1/accounts/:account_id/contacts/export→ contacts#exportPOST /api/v1/accounts/:account_id/contacts/filter→ contacts#filterPOST /api/v1/accounts/:account_id/contacts/import→ contacts#importPOST /api/v1/accounts/:account_id/conversations→ conversations#createPOST /api/v1/accounts/:account_id/conversations/:conversation_id/assignments→ conversations/assignments#createPOST /api/v1/accounts/:account_id/conversations/:id/custom_attributes→ conversations#custom_attributesPOST /api/v1/accounts/:account_id/conversations/:conversation_id/direct_uploads→ conversations/direct_uploads#createPOST /api/v1/accounts/:account_id/conversations/:conversation_id/labels→ conversations/labels#createPOST /api/v1/accounts/:account_id/conversations/:conversation_id/messages→ conversations/messages#createPOST /api/v1/accounts/:account_id/conversations/:conversation_id/messages/:id/retry→ conversations/messages#retryPOST /api/v1/accounts/:account_id/conversations/:conversation_id/messages/:id/translate→ conversations/messages#translatePOST /api/v1/accounts/:account_id/conversations/:id/mute→ conversations#mutePOST /api/v1/accounts/:account_id/conversations/:conversation_id/participants→ conversations/participants#createPOST /api/v1/accounts/:account_id/conversations/:id/toggle_priority→ conversations#toggle_priorityPOST /api/v1/accounts/:account_id/conversations/:id/toggle_status→ conversations#toggle_statusPOST /api/v1/accounts/:account_id/conversations/:id/toggle_typing_status→ conversations#toggle_typing_statusPOST /api/v1/accounts/:account_id/conversations/:id/transcript→ conversations#transcriptPOST /api/v1/accounts/:account_id/conversations/:id/unmute→ conversations#unmutePOST /api/v1/accounts/:account_id/conversations/:id/unread→ conversations#unreadPOST /api/v1/accounts/:account_id/conversations/:id/update_last_seen→ conversations#update_last_seenPOST /api/v1/accounts/:account_id/conversations/filter→ conversations#filterPOST /api/v1/accounts/:account_id/custom_attribute_definitions→ custom_attribute_definitions#createPOST /api/v1/accounts/:account_id/custom_filters→ custom_filters#createPOST /api/v1/accounts/:account_id/custom_roles→ custom_roles#createPOST /api/v1/accounts/:account_id/dashboard_apps→ dashboard_apps#createPOST /api/v1/accounts/:account_id/direct_uploads→ upload#direct_uploadsPOST /api/v1/accounts/:account_id/google/authorization→ google/authorization#createPOST /api/v1/accounts/:account_id/google/webhooks→ google_channels#register_webhookPOST /api/v1/accounts/:account_id/inbox_limits→ inbox_limits#createPOST /api/v1/accounts/:account_id/inbox_members→ inbox_members#createPOST /api/v1/accounts/:account_id/inboxes→ inboxes#createPOST /api/v1/accounts/:account_id/inboxes/:inbox_id/assignment_policy→ inboxes/assignment_policy#createPOST /api/v1/accounts/:account_id/inboxes/:id/csat_template→ inbox_csat_templates#createPOST /api/v1/accounts/:account_id/inboxes/:id/csat_template/analyze→ inbox_csat_templates#analyzePOST /api/v1/accounts/:account_id/inboxes/:inbox_id/instagram_comments/:comment_id/hide→ instagram_channel#hide_commentPOST /api/v1/accounts/:account_id/inboxes/:inbox_id/instagram_comments/:comment_id/reply→ instagram_channel#reply_to_commentPOST /api/v1/accounts/:account_id/inboxes/:id/register_webhook→ inboxes#register_webhookPOST /api/v1/accounts/:account_id/inboxes/:id/reset_secret→ inboxes#reset_secretPOST /api/v1/accounts/:account_id/inboxes/:id/set_agent_bot→ inboxes#set_agent_botPOST /api/v1/accounts/:account_id/inboxes/:id/sync_templates→ inboxes#sync_templatesPOST /api/v1/accounts/:account_id/instagram/authorization→ instagram/authorization#createPOST /api/v1/accounts/:account_id/integrations/dyte/add_participant_to_meeting→ integrations/dyte#add_participant_to_meetingPOST /api/v1/accounts/:account_id/integrations/dyte/create_a_meeting→ integrations/dyte#create_a_meetingPOST /api/v1/accounts/:account_id/integrations/hooks→ integrations/hooks#createPOST /api/v1/accounts/:account_id/integrations/hooks/:id/process_event→ integrations/hooks#process_eventPOST /api/v1/accounts/:account_id/integrations/linear/create_issue→ integrations/linear#create_issuePOST /api/v1/accounts/:account_id/integrations/linear/link_issue→ integrations/linear#link_issuePOST /api/v1/accounts/:account_id/integrations/linear/unlink_issue→ integrations/linear#unlink_issuePOST /api/v1/accounts/:account_id/integrations/shopify/auth→ integrations/shopify#authPOST /api/v1/accounts/:account_id/integrations/slack→ integrations/slack#createPOST /api/v1/accounts/:account_id/labels→ labels#createPOST /api/v1/accounts/:account_id/macros→ macros#createPOST /api/v1/accounts/:account_id/macros/:id/execute→ macros#executePOST /api/v1/accounts/:account_id/microsoft/authorization→ microsoft/authorization#createPOST /api/v1/accounts/:account_id/notifications/:id/snooze→ notifications#snoozePOST /api/v1/accounts/:account_id/notifications/:id/unread→ notifications#unreadPOST /api/v1/accounts/:account_id/notifications/destroy_all→ notifications#destroy_allPOST /api/v1/accounts/:account_id/notifications/read_all→ notifications#read_allPOST /api/v1/accounts/:account_id/notion/authorization→ notion/authorization#createPOST /api/v1/accounts/:account_id/portals→ portals#createPOST /api/v1/accounts/:account_id/portals/:portal_id/articles→ articles#createPOST /api/v1/accounts/:account_id/portals/:portal_id/articles/reorder→ articles#reorderPOST /api/v1/accounts/:account_id/portals/:portal_id/categories→ categories#createPOST /api/v1/accounts/:account_id/portals/:portal_id/categories/reorder→ categories#reorderPOST /api/v1/accounts/:account_id/portals/:id/send_instructions→ portals#send_instructionsPOST /api/v1/accounts/:account_id/portals/articles/bulk_actions/translate→ articles/bulk_actions#translatePOST /api/v1/accounts/:account_id/sla_policies→ sla_policies#createPOST /api/v1/accounts/:account_id/teams→ teams#createPOST /api/v1/accounts/:account_id/teams/:team_id/team_members→ team_members#createPOST /api/v1/accounts/:account_id/tiktok/authorization→ tiktok/authorization#createPOST /api/v1/accounts/:account_id/twitter/authorization→ twitter/authorization#createPOST /api/v1/accounts/:account_id/update_active_at→ accounts#update_active_atPOST /api/v1/accounts/:account_id/upload→ upload#createPOST /api/v1/accounts/:account_id/webhooks→ webhooks#createPOST /api/v1/accounts/:account_id/whatsapp/authorization→ whatsapp/authorization#createPOST /api/v1/accounts/:account_id/whatsapp_calls/:id/accept→ whatsapp_calls#acceptPOST /api/v1/accounts/:account_id/whatsapp_calls/:id/reject→ whatsapp_calls#rejectPOST /api/v1/accounts/:account_id/whatsapp_calls/:id/terminate→ whatsapp_calls#terminatePOST /api/v1/accounts/:account_id/whatsapp_calls/:id/upload_recording→ whatsapp_calls#upload_recordingPOST /api/v1/accounts/:account_id/whatsapp_calls/initiate→ whatsapp_calls#initiatePOST /resend_confirmation→ resend_confirmations#createPUT /api/v1/accounts/:account_id→ accounts#updatePUT /api/v1/accounts/:account_id/agent_bots/:id→ agent_bots#updatePUT /api/v1/accounts/:account_id/agent_capacity_policies/:id→ agent_capacity_policies#updatePUT /api/v1/accounts/:account_id/agents/:id→ agents#updatePUT /api/v1/accounts/:account_id/assignment_policies/:id→ assignment_policies#updatePUT /api/v1/accounts/:account_id/automation_rules/:id→ automation_rules#updatePUT /api/v1/accounts/:account_id/campaigns/:id→ campaigns#updatePUT /api/v1/accounts/:account_id/canned_responses/:id→ canned_responses#updatePUT /api/v1/accounts/:account_id/captain/assistants/:id→ captain/assistants#updatePUT /api/v1/accounts/:account_id/captain/assistants/:assistant_id/scenarios/:id→ captain/scenarios#updatePUT /api/v1/accounts/:account_id/captain/custom_tools/:id→ captain/custom_tools#updatePUT /api/v1/accounts/:account_id/captain/preferences→ captain/preferences#updatePUT /api/v1/accounts/:account_id/companies/:id→ companies#updatePUT /api/v1/accounts/:account_id/contacts/:id→ contacts#updatePUT /api/v1/accounts/:account_id/custom_attribute_definitions/:id→ custom_attribute_definitions#updatePUT /api/v1/accounts/:account_id/custom_filters/:id→ custom_filters#updatePUT /api/v1/accounts/:account_id/custom_roles/:id→ custom_roles#updatePUT /api/v1/accounts/:account_id/dashboard_apps/:id→ dashboard_apps#updatePUT /api/v1/accounts/:account_id/inbox_limits/:id→ inbox_limits#updatePUT /api/v1/accounts/:account_id/inboxes/:id→ inboxes#updatePUT /api/v1/accounts/:account_id/integrations/hooks/:id→ integrations/hooks#updatePUT /api/v1/accounts/:account_id/integrations/slack→ integrations/slack#updatePUT /api/v1/accounts/:account_id/labels/:id→ labels#updatePUT /api/v1/accounts/:account_id/macros/:id→ macros#updatePUT /api/v1/accounts/:account_id/notification_settings→ notification_settings#updatePUT /api/v1/accounts/:account_id/notifications/:id→ notifications#updatePUT /api/v1/accounts/:account_id/portals/:id→ portals#updatePUT /api/v1/accounts/:account_id/portals/:portal_id/articles/:id→ articles#updatePUT /api/v1/accounts/:account_id/portals/:portal_id/categories/:id→ categories#updatePUT /api/v1/accounts/:account_id/settings→ accounts#update_settingsPUT /api/v1/accounts/:account_id/sla_policies/:id→ sla_policies#updatePUT /api/v1/accounts/:account_id/teams/:id→ teams#updatePUT /api/v1/accounts/:account_id/webhooks/:id→ webhooks#update
V1非Account级 (24条)
DELETE /api/v1/notification_subscriptions→ notification_subscriptions#destroyDELETE /api/v1/profile/avatar→ profile#delete_avatarDELETE /api/v1/profile/mfa→ mfa#destroyDELETE /auth→ auth#destroy (logout)DELETE /auth/sign_out→ sessions#destroyGET /api/v1/profile→ profile#showGET /api/v1/profile/mfa→ mfa#showPOST /api/v1/auth/saml_login→ auth#saml_loginPOST /api/v1/integrations/webhooks→ integrations/webhooks#createPOST /api/v1/notification_subscriptions→ notification_subscriptions#createPOST /api/v1/profile/auto_offline→ profile#auto_offlinePOST /api/v1/profile/availability→ profile#availabilityPOST /api/v1/profile/mfa→ mfa#createPOST /api/v1/profile/mfa/backup_codes→ mfa#backup_codesPOST /api/v1/profile/mfa/verify→ mfa#verifyPOST /api/v1/profile/resend_confirmation→ profile#resend_confirmationPOST /api/v1/profile/reset_access_token→ profile#reset_access_tokenPOST /auth→ auth#create (login)POST /auth/password→ passwords#createPOST /auth/password/reset→ passwords#resetPOST /auth/sign_in→ sessions#createPUT /api/v1/profile→ profile#updatePUT /api/v1/profile/set_active_account→ profile#set_active_accountPUT /auth/password→ passwords#update
V2报表 (22条)
GET /api/v2/accounts/:account_id/live_reports/conversation_metrics→ live_reports#conversation_metricsGET /api/v2/accounts/:account_id/live_reports/grouped_conversation_metrics→ live_reports#grouped_conversation_metricsGET /api/v2/accounts/:account_id/reports→ reports#indexGET /api/v2/accounts/:account_id/reports/agents→ reports#agentsGET /api/v2/accounts/:account_id/reports/bot_metrics→ reports#bot_metricsGET /api/v2/accounts/:account_id/reports/bot_summary→ reports#bot_summaryGET /api/v2/accounts/:account_id/reports/conversation_traffic→ reports#conversation_trafficGET /api/v2/accounts/:account_id/reports/conversations→ reports#conversationsGET /api/v2/accounts/:account_id/reports/conversations_summary→ reports#conversations_summaryGET /api/v2/accounts/:account_id/reports/first_response_time_distribution→ reports#first_response_time_distributionGET /api/v2/accounts/:account_id/reports/inbox_label_matrix→ reports#inbox_label_matrixGET /api/v2/accounts/:account_id/reports/inboxes→ reports#inboxesGET /api/v2/accounts/:account_id/reports/labels→ reports#labelsGET /api/v2/accounts/:account_id/reports/outgoing_messages_count→ reports#outgoing_messages_countGET /api/v2/accounts/:account_id/reports/summary→ reports#summaryGET /api/v2/accounts/:account_id/reports/teams→ reports#teamsGET /api/v2/accounts/:account_id/summary_reports/agent→ summary_reports#agentGET /api/v2/accounts/:account_id/summary_reports/channel→ summary_reports#channelGET /api/v2/accounts/:account_id/summary_reports/inbox→ summary_reports#inboxGET /api/v2/accounts/:account_id/summary_reports/label→ summary_reports#labelGET /api/v2/accounts/:account_id/summary_reports/team→ summary_reports#teamGET /api/v2/accounts/:account_id/year_in_review→ year_in_review#show
WebSocket/Health (11条)
GET /cable→ websocket#serve_cableGET /hc/:slug→ public/portals#showGET /hc/:slug/:locale→ public/portals#showGET /hc/:slug/:locale/articles→ public/articles#indexGET /hc/:slug/:locale/categories→ public/categories#indexGET /hc/:slug/:locale/categories/:category_slug→ public/categories#showGET /hc/:slug/:locale/categories/:category_slug/articles→ public/articles#indexGET /hc/:slug/articles/:article_slug→ public/articles#showGET /hc/:slug/sitemap.xml→ public/portals#sitemapGET /health→ health#checkGET /ws→ websocket#serve
Webhooks (18条)
GET /webhooks/email/:inbox_id/verification→ email_webhook#verificationGET /webhooks/facebook/:page_id→ facebook_webhook#verifyGET /webhooks/tiktok/:business_id→ tiktok_webhook#verifyGET /webhooks/twitter/webhook→ twitter_webhook#crcGET /webhooks/whatsapp/:phone_number_id→ whatsapp_webhook#verifyPOST /webhooks/email/:inbox_id→ email_webhook#eventPOST /webhooks/facebook/:page_id→ facebook_webhook#eventPOST /webhooks/firecrawl→ enterprise/webhooks/firecrawl#process_payloadPOST /webhooks/line/:channel_id→ line_webhook#eventPOST /webhooks/microsoft/events→ microsoft_webhook#eventPOST /webhooks/microsoft/validation→ microsoft_webhook#validationPOST /webhooks/stripe→ enterprise/webhooks/stripe#process_payloadPOST /webhooks/telegram/:bot_token→ telegram_webhook#eventPOST /webhooks/tiktok/:business_id→ tiktok_webhook#eventPOST /webhooks/twilio/sms/:phone_number→ twilio_webhook#inbound_smsPOST /webhooks/twilio/status/:phone_number→ twilio_webhook#delivery_statusPOST /webhooks/twitter/webhook→ twitter_webhook#eventPOST /webhooks/whatsapp/:phone_number_id→ whatsapp_webhook#event
Widget (22条)
DELETE /widget/labels→ widget/labels#destroyGET /widget/campaigns→ widget/campaigns#indexGET /widget/contact→ widget/contact#showGET /widget/conversations→ widget/conversations#indexGET /widget/conversations/toggle_status→ widget/conversations#toggle_statusGET /widget/inbox_members→ widget/inbox_members#indexGET /widget/messages→ widget/messages#indexPATCH /widget/contact→ widget/contact#updatePATCH /widget/contact/set_user→ widget/contact#set_userPATCH /widget/messages→ widget/messages#updatePOST /widget/config→ widget/config#createPOST /widget/contact/destroy_custom_attributes→ widget/contact#destroy_custom_attributesPOST /widget/conversations→ widget/conversations#createPOST /widget/conversations/destroy_custom_attributes→ widget/conversations#destroy_custom_attributesPOST /widget/conversations/set_custom_attributes→ widget/conversations#set_custom_attributesPOST /widget/conversations/toggle_typing→ widget/conversations#toggle_typingPOST /widget/conversations/transcript→ widget/conversations#transcriptPOST /widget/conversations/update_last_seen→ widget/conversations#update_last_seenPOST /widget/direct_uploads→ widget/direct_uploads#createPOST /widget/events→ widget/events#createPOST /widget/labels→ widget/labels#createPOST /widget/messages→ widget/messages#create