718 lines
19 KiB
JSON
718 lines
19 KiB
JSON
{
|
|
"registrations": [
|
|
{
|
|
"file": "app/core/hooks.py",
|
|
"hook_name": "contact.before_create"
|
|
},
|
|
{
|
|
"file": "app/core/hooks.py",
|
|
"hook_name": "contact.format_display_name"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/plugin.py",
|
|
"hook_name": "dms_file.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/plugin.py",
|
|
"hook_name": "dms_file.after_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/plugin.py",
|
|
"hook_name": "dms_file.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/plugin.py",
|
|
"hook_name": "mail.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/plugin.py",
|
|
"hook_name": "mail.after_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/plugin.py",
|
|
"hook_name": "mail.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/wiki/plugin.py",
|
|
"hook_name": "wiki"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/contacts/plugin.py",
|
|
"hook_name": "contact.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/contacts/plugin.py",
|
|
"hook_name": "contact.after_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/contacts/plugin.py",
|
|
"hook_name": "contact.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tasks/plugin.py",
|
|
"hook_name": "task.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tasks/plugin.py",
|
|
"hook_name": "task.after_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tasks/plugin.py",
|
|
"hook_name": "task.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/plugin.py",
|
|
"hook_name": "calendar_entry.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/plugin.py",
|
|
"hook_name": "calendar_entry.after_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/plugin.py",
|
|
"hook_name": "calendar_entry.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/knowledge/plugin.py",
|
|
"hook_name": "wiki.article.created"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/knowledge/plugin.py",
|
|
"hook_name": "wiki.article.updated"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/knowledge/plugin.py",
|
|
"hook_name": "knowledge"
|
|
}
|
|
],
|
|
"triggers": [
|
|
{
|
|
"file": "app/routes/companies.py",
|
|
"hook_name": "company.before_create"
|
|
},
|
|
{
|
|
"file": "app/routes/companies.py",
|
|
"hook_name": "company.after_create"
|
|
},
|
|
{
|
|
"file": "app/routes/companies.py",
|
|
"hook_name": "company.before_update"
|
|
},
|
|
{
|
|
"file": "app/routes/companies.py",
|
|
"hook_name": "company.after_update"
|
|
},
|
|
{
|
|
"file": "app/routes/companies.py",
|
|
"hook_name": "company.before_delete"
|
|
},
|
|
{
|
|
"file": "app/routes/companies.py",
|
|
"hook_name": "company.after_delete"
|
|
},
|
|
{
|
|
"file": "app/ai/agent_loop.py",
|
|
"hook_name": "agent.step"
|
|
},
|
|
{
|
|
"file": "app/ai/agent_loop.py",
|
|
"hook_name": "agent.step"
|
|
},
|
|
{
|
|
"file": "app/services/contact_service.py",
|
|
"hook_name": "contact.before_create"
|
|
},
|
|
{
|
|
"file": "app/services/contact_service.py",
|
|
"hook_name": "contact.after_create"
|
|
},
|
|
{
|
|
"file": "app/services/contact_service.py",
|
|
"hook_name": "contact.before_update"
|
|
},
|
|
{
|
|
"file": "app/services/contact_service.py",
|
|
"hook_name": "contact.after_update"
|
|
},
|
|
{
|
|
"file": "app/services/contact_service.py",
|
|
"hook_name": "contact.before_delete"
|
|
},
|
|
{
|
|
"file": "app/services/contact_service.py",
|
|
"hook_name": "contact.after_delete"
|
|
},
|
|
{
|
|
"file": "app/services/contact_service.py",
|
|
"hook_name": "contact.format_display_name"
|
|
},
|
|
{
|
|
"file": "app/services/auth_service.py",
|
|
"hook_name": "auth.after_login"
|
|
},
|
|
{
|
|
"file": "app/services/auth_service.py",
|
|
"hook_name": "auth.before_login"
|
|
},
|
|
{
|
|
"file": "app/services/workflow_service.py",
|
|
"hook_name": "workflow.before_start"
|
|
},
|
|
{
|
|
"file": "app/services/workflow_service.py",
|
|
"hook_name": "workflow.after_start"
|
|
},
|
|
{
|
|
"file": "app/services/workflow_service.py",
|
|
"hook_name": "workflow.after_complete"
|
|
},
|
|
{
|
|
"file": "app/services/workflow_service.py",
|
|
"hook_name": "workflow.after_cancel"
|
|
},
|
|
{
|
|
"file": "app/services/user_service.py",
|
|
"hook_name": "user.before_create"
|
|
},
|
|
{
|
|
"file": "app/services/user_service.py",
|
|
"hook_name": "user.after_create"
|
|
},
|
|
{
|
|
"file": "app/core/hooks.py",
|
|
"hook_name": "contact.before_create"
|
|
},
|
|
{
|
|
"file": "app/core/hooks.py",
|
|
"hook_name": "contact.before_create"
|
|
},
|
|
{
|
|
"file": "app/core/hooks.py",
|
|
"hook_name": "contact.format_display_name"
|
|
},
|
|
{
|
|
"file": "app/core/hooks.py",
|
|
"hook_name": "contact.format_name"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/automation/agent_runner.py",
|
|
"hook_name": "agent.before_run"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/automation/agent_runner.py",
|
|
"hook_name": "agent.after_run"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.folder.before_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.folder.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.folder.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.folder.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.after_upload"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms_file.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.before_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.after_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms_file.after_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms_file.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.before_restore"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.after_restore"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.before_upload"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.after_receive"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.after_send"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.after_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.before_move"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.after_move"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.before_send"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tasks/services.py",
|
|
"hook_name": "task.before_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tasks/services.py",
|
|
"hook_name": "task.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tasks/services.py",
|
|
"hook_name": "task.before_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tasks/services.py",
|
|
"hook_name": "task.after_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tasks/services.py",
|
|
"hook_name": "task.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tasks/services.py",
|
|
"hook_name": "task.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar.before_appointment"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar.after_appointment"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar_entry.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar.before_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar.after_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar_entry.after_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar_entry.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/unified_search/search_engine.py",
|
|
"hook_name": "search.before_search"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/unified_search/search_engine.py",
|
|
"hook_name": "search.after_search"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.conversation.before_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.conversation.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.before_message"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.after_message"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.before_edit"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.after_edit"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.before_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.before_assign"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.after_assign"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.before_unassign"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.after_unassign"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.after_delete"
|
|
}
|
|
],
|
|
"orphan_registrations": [
|
|
{
|
|
"file": "app/plugins/builtins/wiki/plugin.py",
|
|
"hook_name": "wiki"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/knowledge/plugin.py",
|
|
"hook_name": "wiki.article.created"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/knowledge/plugin.py",
|
|
"hook_name": "wiki.article.updated"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/knowledge/plugin.py",
|
|
"hook_name": "knowledge"
|
|
}
|
|
],
|
|
"orphan_triggers": [
|
|
{
|
|
"file": "app/routes/companies.py",
|
|
"hook_name": "company.before_create"
|
|
},
|
|
{
|
|
"file": "app/routes/companies.py",
|
|
"hook_name": "company.after_create"
|
|
},
|
|
{
|
|
"file": "app/routes/companies.py",
|
|
"hook_name": "company.before_update"
|
|
},
|
|
{
|
|
"file": "app/routes/companies.py",
|
|
"hook_name": "company.after_update"
|
|
},
|
|
{
|
|
"file": "app/routes/companies.py",
|
|
"hook_name": "company.before_delete"
|
|
},
|
|
{
|
|
"file": "app/routes/companies.py",
|
|
"hook_name": "company.after_delete"
|
|
},
|
|
{
|
|
"file": "app/ai/agent_loop.py",
|
|
"hook_name": "agent.step"
|
|
},
|
|
{
|
|
"file": "app/ai/agent_loop.py",
|
|
"hook_name": "agent.step"
|
|
},
|
|
{
|
|
"file": "app/services/contact_service.py",
|
|
"hook_name": "contact.before_update"
|
|
},
|
|
{
|
|
"file": "app/services/contact_service.py",
|
|
"hook_name": "contact.before_delete"
|
|
},
|
|
{
|
|
"file": "app/services/auth_service.py",
|
|
"hook_name": "auth.after_login"
|
|
},
|
|
{
|
|
"file": "app/services/auth_service.py",
|
|
"hook_name": "auth.before_login"
|
|
},
|
|
{
|
|
"file": "app/services/workflow_service.py",
|
|
"hook_name": "workflow.before_start"
|
|
},
|
|
{
|
|
"file": "app/services/workflow_service.py",
|
|
"hook_name": "workflow.after_start"
|
|
},
|
|
{
|
|
"file": "app/services/workflow_service.py",
|
|
"hook_name": "workflow.after_complete"
|
|
},
|
|
{
|
|
"file": "app/services/workflow_service.py",
|
|
"hook_name": "workflow.after_cancel"
|
|
},
|
|
{
|
|
"file": "app/services/user_service.py",
|
|
"hook_name": "user.before_create"
|
|
},
|
|
{
|
|
"file": "app/services/user_service.py",
|
|
"hook_name": "user.after_create"
|
|
},
|
|
{
|
|
"file": "app/core/hooks.py",
|
|
"hook_name": "contact.format_name"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/automation/agent_runner.py",
|
|
"hook_name": "agent.before_run"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/automation/agent_runner.py",
|
|
"hook_name": "agent.after_run"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.folder.before_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.folder.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.folder.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.folder.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.after_upload"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.before_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.after_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.before_restore"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.after_restore"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/dms/routes.py",
|
|
"hook_name": "dms.before_upload"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.after_receive"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.after_send"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.before_move"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.after_move"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/mail/services.py",
|
|
"hook_name": "mail.before_send"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tasks/services.py",
|
|
"hook_name": "task.before_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tasks/services.py",
|
|
"hook_name": "task.before_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tasks/services.py",
|
|
"hook_name": "task.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar.before_appointment"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar.after_appointment"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar.before_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar.after_update"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/calendar/routes.py",
|
|
"hook_name": "calendar.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/unified_search/search_engine.py",
|
|
"hook_name": "search.before_search"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/unified_search/search_engine.py",
|
|
"hook_name": "search.after_search"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.conversation.before_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.conversation.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.before_message"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.after_message"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.before_edit"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.after_edit"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/kommunikation/services.py",
|
|
"hook_name": "comm.after_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.before_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.after_create"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.before_assign"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.after_assign"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.before_unassign"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.after_unassign"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.before_delete"
|
|
},
|
|
{
|
|
"file": "app/plugins/builtins/tags/routes.py",
|
|
"hook_name": "tag.after_delete"
|
|
}
|
|
]
|
|
} |