"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7152],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var s=n.createContext({}),p=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},k=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,l=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=p(a),k=o,m=d["".concat(s,".").concat(k)]||d[k]||u[k]||l;return a?n.createElement(m,r(r({ref:t},c),{},{components:a})):n.createElement(m,r({ref:t},c))}));function m(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var l=a.length,r=new Array(l);r[0]=k;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[d]="string"==typeof e?e:o,r[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>u,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var n=a(87462),o=(a(67294),a(3905));const l={title:"Webhooks",description:"Webhooks allows user to trigger on certain operations on following database operations"},r=void 0,i={unversionedId:"developer-resources/webhooks",id:"version-0.109.7/developer-resources/webhooks",title:"Webhooks",description:"Webhooks allows user to trigger on certain operations on following database operations",source:"@site/versioned_docs/version-0.109.7/040.developer-resources/040.webhooks.md",sourceDirName:"040.developer-resources",slug:"/developer-resources/webhooks",permalink:"/0.109.7/developer-resources/webhooks",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/040.developer-resources/040.webhooks.md",tags:[],version:"0.109.7",sidebarPosition:40,frontMatter:{title:"Webhooks",description:"Webhooks allows user to trigger on certain operations on following database operations"},sidebar:"tutorialSidebar",previous:{title:"NocoDB SDK",permalink:"/0.109.7/developer-resources/sdk"},next:{title:"Upload via API",permalink:"/0.109.7/developer-resources/upload-via-api"}},s={},p=[{value:"Overview",id:"overview",level:2},{value:"Open View menu, click on Webhooks",id:"open-view-menu-click-on-webhooks",level:3},{value:"Click Add New Webhook",id:"click-add-new-webhook",level:3},{value:"Configure Webhook",id:"configure-webhook",level:3},{value:"Call Log",id:"call-log",level:2},{value:"Triggers",id:"triggers",level:2},{value:"Applications/services",id:"applicationsservices",level:3},{value:"Accessing Data: Handlebars",id:"accessing-data-handlebars",level:2},{value:"Example",id:"example",level:3},{value:"JSON format",id:"json-format",level:3},{value:"Additional references:",id:"additional-references",level:3},{value:"Discord",id:"discord",level:2},{value:"1. Create WebHook",id:"1-create-webhook",level:3},{value:"2. Install Plugin",id:"2-install-plugin",level:3},{value:"3. Configure",id:"3-configure",level:3},{value:"Slack",id:"slack",level:2},{value:"1. Create WebHook",id:"1-create-webhook-1",level:3},{value:"2. Install Plugin",id:"2-install-plugin-1",level:3},{value:"3. Configure Webhook",id:"3-configure-webhook",level:3},{value:"Microsoft Teams",id:"microsoft-teams",level:2},{value:"1. Create WebHook",id:"1-create-webhook-2",level:3},{value:"2. Install Plugin",id:"2-install-plugin-2",level:3},{value:"3. Configure",id:"3-configure-1",level:3},{value:"Webhook V2",id:"webhook-v2",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...a}=e;return(0,o.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"overview"},"Overview"),(0,o.kt)("p",null,"Some types of notifications can be triggered by a webhook after a particular event."),(0,o.kt)("h3",{id:"open-view-menu-click-on-webhooks"},"Open ",(0,o.kt)("inlineCode",{parentName:"h3"},"View menu"),", click on ",(0,o.kt)("inlineCode",{parentName:"h3"},"Webhooks")),(0,o.kt)("img",{width:"442",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194849113-910ddafa-4b05-4492-a7a6-d9259d892eb9.png"}),(0,o.kt)("h3",{id:"click-add-new-webhook"},"Click ",(0,o.kt)("inlineCode",{parentName:"h3"},"Add New Webhook")),(0,o.kt)("img",{width:"686",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194849248-1d0b80c6-f65b-4075-8ebd-af7dc735c2c3.png"}),(0,o.kt)("h3",{id:"configure-webhook"},"Configure Webhook"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"General configurations",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Webhook Name"),(0,o.kt)("li",{parentName:"ul"},"Webhook Trigger"),(0,o.kt)("li",{parentName:"ul"},"Webhook Type"))),(0,o.kt)("li",{parentName:"ul"},"Webhook Type specific configuration : additional configuration details depending on webhook type selected"),(0,o.kt)("li",{parentName:"ul"},"Webhook Conditional Trigger",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Only records meeting the criteria will trigger webhook ")))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/230288581-c613e591-1c32-4151-a2d1-df2bbf1367fd.png",alt:"Screenshot 2023-04-06 at 11 39 49 AM"})),(0,o.kt)("h2",{id:"call-log"},"Call Log"),(0,o.kt)("p",null,"Call Log allows user to check the call history of the hook. By default, it has been disabled. However, it can be configured by using environment variable ",(0,o.kt)("inlineCode",{parentName:"p"},"NC_AUTOMATION_LOG_LEVEL"),"."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"NC_AUTOMATION_LOG_LEVEL=OFF"),": No logs will be displayed and no history will be inserted to meta database."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"NC_AUTOMATION_LOG_LEVEL=ERROR"),": only error logs will be displayed and history of error logs will be inserted to meta database."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"NC_AUTOMATION_LOG_LEVEL=ALL"),": Both error and success logs will be displayed and history of both types of logs will be inserted to meta database. ",(0,o.kt)("strong",{parentName:"li"},"This option is only available for Enterprise Edition."))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/228790148-1e3f21c7-9385-413a-843f-b93073ca6bea.png",alt:"image"})),(0,o.kt)("h2",{id:"triggers"},"Triggers"),(0,o.kt)("p",null,"Webhooks allows user to trigger on certain operations on following database operations"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"AFTER INSERT"),(0,o.kt)("li",{parentName:"ul"},"AFTER UPDATE"),(0,o.kt)("li",{parentName:"ul"},"AFTER DELETE")),(0,o.kt)("p",null,"The triggers will trigger asynchronously without blocking the actual operation."),(0,o.kt)("h3",{id:"applicationsservices"},"Applications/services"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Trigger"),(0,o.kt)("th",{parentName:"tr",align:null},"Details"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Email"),(0,o.kt)("td",{parentName:"tr",align:null},"Send email to certain email addresses")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Slack"),(0,o.kt)("td",{parentName:"tr",align:null},"Notify via Slack channel")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Microsoft Teams"),(0,o.kt)("td",{parentName:"tr",align:null},"Notify via Microsoft Teams channel")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Discord"),(0,o.kt)("td",{parentName:"tr",align:null},"Notify via Discord channel")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Mattermost"),(0,o.kt)("td",{parentName:"tr",align:null},"Notify via Mattermost channel")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Twilio"),(0,o.kt)("td",{parentName:"tr",align:null},"Send SMS to certain mobile numbers")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Whatsapp Twilio"),(0,o.kt)("td",{parentName:"tr",align:null},"Send Whatsapp messages to numbers using Twilio")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"URL"),(0,o.kt)("td",{parentName:"tr",align:null},"Invoke an HTTP API")))),(0,o.kt)("h2",{id:"accessing-data-handlebars"},"Accessing Data: Handlebars"),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"You can access data using handlebars for v1 webhooks only.")),(0,o.kt)("p",null,"The current row data and other details will be available in the hooks payload so the user can use ",(0,o.kt)("a",{parentName:"p",href:"https://handlebarsjs.com/guide/#simple-expressions"},"handlebar syntax")," to use data."),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"We are using ",(0,o.kt)("a",{parentName:"p",href:"https://handlebarsjs.com/"},"Handlebars")," library to parse the payload internally.")),(0,o.kt)("h3",{id:"example"},"Example"),(0,o.kt)("p",null,"For a table with column names (id, title, created_at, updated_at).",(0,o.kt)("br",{parentName:"p"}),"\n","For INSERT/ UPDATE based triggers, use following handlebars to access corresponding ",(0,o.kt)("strong",{parentName:"p"},"data")," fields."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"{{ ",(0,o.kt)("strong",{parentName:"li"},"data"),".id }}"),(0,o.kt)("li",{parentName:"ul"},"{{ ",(0,o.kt)("strong",{parentName:"li"},"data"),".title }}"),(0,o.kt)("li",{parentName:"ul"},"{{ ",(0,o.kt)("strong",{parentName:"li"},"data"),".created_at }}"),(0,o.kt)("li",{parentName:"ul"},"{{ ",(0,o.kt)("strong",{parentName:"li"},"data"),".updated_at }} ")),(0,o.kt)("p",null,"Note that, for Update trigger - all the fields in the ROW will be accessible, not just the field updated.\nFor DELETE based triggers, ",(0,o.kt)("strong",{parentName:"p"},"only")," {{ data.id }} is accessible representing ID of the column deleted."),(0,o.kt)("h3",{id:"json-format"},"JSON format"),(0,o.kt)("p",null,"Use {{ json data }} to dump complete data & user information available in JSON format"),(0,o.kt)("h3",{id:"additional-references"},"Additional references:"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://handlebarsjs.com/guide/"},"Handlebar Guide"),"."),(0,o.kt)("h1",{id:"application-guide"},"Application Guide"),(0,o.kt)("h2",{id:"discord"},"Discord"),(0,o.kt)("h3",{id:"1-create-webhook"},"1. Create WebHook"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"On Discord, open your Server Settings and head into the Integrations tab:"),(0,o.kt)("li",{parentName:"ul"},'Click the "Create Webhook" button to create a new webhook!')),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/155087088-8f9fd762-9ff9-41a6-aed4-0f22add77fe6.png",alt:"Screenshot 2022-02-22 at 1 21 59 PM"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Choose channel to which this webhook will post to."),(0,o.kt)("li",{parentName:"ul"},"Copy webhook URL")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/155087126-c2cdd7b2-518a-46a5-82a5-aa90fe51a709.png",alt:"Screenshot 2022-02-22 at 1 23 18 PM"})),(0,o.kt)("p",null,"(Sample webhook URL: ",(0,o.kt)("a",{parentName:"p",href:"https://discord.com/api/webhooks/945558283756908644/GNUtiGuzfOky6wZ4ce30XuXc1sbPK3Od7EC-4t6hihh5Fovv6oU9OsdT6mGuoL1QlTzj"},"https://discord.com/api/webhooks/945558283756908644/GNUtiGuzfOky6wZ4ce30XuXc1sbPK3Od7EC-4t6hihh5Fovv6oU9OsdT6mGuoL1QlTzj"),").",(0,o.kt)("br",{parentName:"p"}),"\n","Detailed procedure for discord webhook described ",(0,o.kt)("a",{parentName:"p",href:"https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks"},"here"),"."),(0,o.kt)("h3",{id:"2-install-plugin"},"2. Install Plugin"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Open 'App Store' (under Settings), hover over Discord tile. Click 'Install'.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/190066333-04bab4eb-f114-48e5-b3f9-6327cadb1ca7.png",alt:"Screenshot 2022-09-14 at 10 47 59 AM"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Provide a name of your choice (not to be confused with Discord Channel name)."),(0,o.kt)("li",{parentName:"ul"},"Paste Discord Webhook URL copied from Step (1.) above.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/190066365-90e3136b-db24-4514-aa89-c1fb371b33ee.png",alt:"Screenshot 2022-09-14 at 10 52 14 AM"})),(0,o.kt)("h3",{id:"3-configure"},"3. Configure"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Open project and choose a table."),(0,o.kt)("li",{parentName:"ul"},"Click 'More' > 'Webhooks'."),(0,o.kt)("li",{parentName:"ul"},"Click 'Create webhook'"),(0,o.kt)("li",{parentName:"ul"},"Configure webhook",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Title"),": Name of your choice to identify this Webhook."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Event"),": Trigger event. Choose between.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"After Insert: Trigger event for new ROW insertion."),(0,o.kt)("li",{parentName:"ul"},"After Update: Trigger event for existing ROW updation."),(0,o.kt)("li",{parentName:"ul"},"After Delete: Trigger event for ROW deletion"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"On Condition"),": ","[Optional]"," Enable if you wish to associate additional condition/constraint with the trigger configured above."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Notification"),": Select 'Discord'."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Select Discord Channels"),": Select from the drop down list, channel name configured in Step (2). Please click on 'Reload' if drop down list is empty."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Body"),": Message to be posted over Discord channel, via webhooks on trigger of configured event.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Body can contain plain text &"),(0,o.kt)("li",{parentName:"ul"},"Handlebars {{ }}")))))),(0,o.kt)("h2",{id:"slack"},"Slack"),(0,o.kt)("h3",{id:"1-create-webhook-1"},"1. Create WebHook"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Details to create slack webhook are captured ",(0,o.kt)("a",{parentName:"li",href:"https://api.slack.com/messaging/webhooks"},"here"))),(0,o.kt)("h3",{id:"2-install-plugin-1"},"2. Install Plugin"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Procedure remain same as listed for DISCORD channel configuration above")),(0,o.kt)("h3",{id:"3-configure-webhook"},"3. Configure Webhook"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Procedure remain same as listed for DISCORD channel configuration above")),(0,o.kt)("h2",{id:"microsoft-teams"},"Microsoft Teams"),(0,o.kt)("h3",{id:"1-create-webhook-2"},"1. Create WebHook"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"On Teams, open your channel, click on three-dots menu (far right) and select 'Connectors'")),(0,o.kt)("img",{width:"319",alt:"154971352-6912d53b-cf71-4edd-a319-1c85be85f0c5",src:"https://user-images.githubusercontent.com/86527202/155095745-91abd708-834f-4f0e-a33c-ac362e60af0f.png"}),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Select incoming webhook & click 'Configure'")),(0,o.kt)("img",{width:"442",alt:"154971434-0ced97f7-205a-4e2e-8f88-17092cb7771a",src:"https://user-images.githubusercontent.com/86527202/155095741-b23ad6b2-1276-46e3-8ada-0d0a871115bb.png"}),"- Create webhook, Copy webhook URL ![154971683-db16be7f-4f07-4447-8f2e-ac50e133bef8](https://user-images.githubusercontent.com/86527202/155095733-c339a914-5d78-408c-8f1e-9cd75a7783e8.png)",(0,o.kt)("h3",{id:"2-install-plugin-2"},"2. Install Plugin"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Open 'App Store' (under Settings), hover over 'Microsoft Teams' tile. Click 'Install'.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/190066409-03311add-3b36-4521-acf7-dba5ffdef3fb.png",alt:"Screenshot 2022-09-14 at 10 53 22 AM"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Provide a name of your choice (not to be confused with Teams Channel name)."),(0,o.kt)("li",{parentName:"ul"},"Paste MS Teams Webhook URL copied from Step (1.) above.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/190066430-838eaa69-ac2c-49ce-a0eb-d84c97964f8b.png",alt:"Screenshot 2022-09-14 at 10 53 31 AM"})),(0,o.kt)("h3",{id:"3-configure-1"},"3. Configure"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Open project and choose a table."),(0,o.kt)("li",{parentName:"ul"},"Click 'More' > 'Webhooks'."),(0,o.kt)("li",{parentName:"ul"},"Click 'Create webhook'"),(0,o.kt)("li",{parentName:"ul"},"Configure webhook",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Title"),": Name of your choice to identify this Webhook."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Event"),": Trigger event. Choose between.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"After Insert: Trigger event for new ROW insertion."),(0,o.kt)("li",{parentName:"ul"},"After Update: Trigger event for existing ROW updation."),(0,o.kt)("li",{parentName:"ul"},"After Delete: Trigger event for ROW deletion"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"On Condition"),": ","[Optional]"," Enable if you wish to associate additional condition/constraint with the trigger configured above."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Notification"),": Select 'Microsoft Teams'."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Select Teams Channels"),": Select from the drop down list, channel name configured in Step (2). Please click on 'Reload' if drop down list is empty."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Body"),": Message to be posted over Teams channel, via webhooks on trigger of configured event.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Body can contain plain text &"),(0,o.kt)("li",{parentName:"ul"},"Handlebars {{ }}")))))),(0,o.kt)("h2",{id:"webhook-v2"},"Webhook V2"),(0,o.kt)("p",null,"Webhook v2 is available after v0.106.0. Here's the differences."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Response Payload has been predefined and cannot configure in Body using Handlebars. The payload can be referenced under ",(0,o.kt)("inlineCode",{parentName:"li"},"Sample Payload")," in Hook detail page."),(0,o.kt)("li",{parentName:"ul"},"Support the following bulk operations:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"AFTER BULK INSERT"),(0,o.kt)("li",{parentName:"ul"},"AFTER BULK UPDATE"),(0,o.kt)("li",{parentName:"ul"},"AFTER BULK DELETE")))))}u.isMDXComponent=!0}}]);