1"use strict";(self.webpackChunkconduit_site=self.webpackChunkconduit_site||[]).push([[5406],{1707:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>u,contentTitle:()=>p,default:()=>m,frontMatter:()=>x,metadata:()=>r,toc:()=>j});const r=JSON.parse('{"id":"using/processors/builtin/webhook.http","title":"webhook.http","description":"Trigger an HTTP request for every record.","source":"@site/docs/1-using/6-processors/1-builtin/webhook.http.mdx","sourceDirName":"1-using/6-processors/1-builtin","slug":"/using/processors/builtin/webhook.http","permalink":"/docs/using/processors/builtin/webhook.http","draft":false,"unlisted":false,"editUrl":"https://github.com/conduitio/conduitio.github.io/edit/main/docs/1-using/6-processors/1-builtin/webhook.http.mdx","tags":[],"version":"current","lastUpdatedAt":1751451129000,"sidebarPosition":24,"frontMatter":{"IMPORTANT":"This file was generated using src/processorgen/main.go. DO NOT EDIT.","title":"webhook.http","sidebar_position":24},"sidebar":"docsSidebar","previous":{"title":"unwrap.opencdc","permalink":"/docs/using/processors/builtin/unwrap.opencdc"},"next":{"title":"Conditional Execution","permalink":"/docs/using/processors/conditions"}}');var t=n(74848),d=n(28453),i=n(82514),o=n.n(i),c=n(44744),l=n(96300),h=n(11470),a=n(19365);const x={IMPORTANT:"This file was generated using src/processorgen/main.go. DO NOT EDIT.",title:"webhook.http",sidebar_position:24},p="webhook.http",u={},j=[{value:"Description",id:"description",level:2},{value:"Configuration parameters",id:"configuration-parameters",level:2},{value:"Examples",id:"examples",level:2},{value:"Send a request to an HTTP server",id:"send-a-request-to-an-http-server",level:3},{value:"Configuration parameters",id:"configuration-parameters-1",level:4},{value:"Record difference",id:"record-difference",level:4},{value:"Send a request to an HTTP server with a dynamic URL",id:"send-a-request-to-an-http-server-with-a-dynamic-url",level:3},{value:"Configuration parameters",id:"configuration-parameters-2",level:4},{value:"Record difference",id:"record-difference-1",level:4}];function f(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",p:"p",pre:"pre",...(0,d.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.header,{children:(0,t.jsx)(s.h1,{id:"webhookhttp",children:(0,t.jsx)(s.code,{children:"webhook.http"})})}),"\n",(0,t.jsx)(s.p,{children:"Trigger an HTTP request for every record."}),"\n",(0,t.jsx)(s.h2,{id:"description",children:"Description"}),"\n",(0,t.jsx)(s.p,{children:"A processor that sends an HTTP request to the specified URL, retries on error and\nsaves the response body and, optionally, the response status."}),"\n",(0,t.jsx)(s.p,{children:"A status code over 500 is regarded as an error and will cause the processor to retry the request.\nThe processor will retry the request according to the backoff configuration."}),"\n",(0,t.jsx)(s.h2,{id:"configuration-parameters",children:"Configuration parameters"}),"\n",(0,t.jsxs)(h.A,{groupId:"config-params",children:[(0,t.jsx)(a.A,{value:"yaml",label:"YAML",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-yaml",children:'version: 2.2\npipelines:\n - id: example\n status: running\n connectors:\n # define source and destination ...\n processors:\n - id: example\n plugin: "webhook.http"\n settings:\n # Maximum number of retries for an individual record when backing off\n # following an error.\n # Type: float\n backoffRetry.count: "0"\n # The multiplying factor for each increment step.\n # Type: float\n backoffRetry.factor: "2"\n # The maximum waiting time before retrying.\n # Type: duration\n backoffRetry.max: "5s"\n # The minimum waiting time before retrying.\n # Type: duration\n backoffRetry.min: "100ms"\n # Headers to add to the request, use `headers.*` to specify the header\n # and its value (e.g. `headers.Authorization: "Bearer key"`).\n # Type: string\n headers.*: ""\n # Specifies the body that will be sent in the HTTP request. The field\n # accepts a Go [templates](https://pkg.go.dev/text/template) that\'s\n # evaluated using the\n # [opencdc.Record](https://pkg.go.dev/github.com/conduitio/conduit-commons/opencdc#Record)\n # as input. By default, the body is empty.\n # To send the whole record as JSON you can use `{{ toJson . }}`.\n # Type: string\n request.body: ""\n # Deprecated: use `headers.Content-Type` instead.\n # Type: string\n request.contentType: ""\n # Method is the HTTP request method to be used.\n # Type: string\n request.method: "GET"\n # URL is a Go template expression for the URL used in the HTTP\n # request, using Go [templates](https://pkg.go.dev/text/template). The\n # value provided to the template is\n # [opencdc.Record](https://pkg.go.dev/github.com/conduitio/conduit-commons/opencdc#Record),\n # so the template has access to all its fields (e.g. `.Position`,\n # `.Key`, `.Metadata`, and so on). We also inject all template\n # functions provided by [sprig](https://masterminds.github.io/sprig/)\n # to make it easier to write templates.\n # Type: string\n request.url: ""\n # Specifies in which field should the response body be saved.\n # For more information about the format, see [Referencing\n # fields](https://conduitio.github.io/docs/using/processors/referencing-fields).\n # Type: string\n response.body: ".Payload.After"\n # Specifies in which field should the response status be saved. If no\n # value is set, then the response status will NOT be saved.\n # For more information about the format, see [Referencing\n # fields](https://conduitio.github.io/docs/using/processors/referencing-fields).\n # Type: string\n response.status: ""\n # Whether to decode the record key using its corresponding schema from\n # the schema registry.\n # Type: bool\n sdk.schema.decode.key.enabled: "true"\n # Whether to decode the record payload using its corresponding schema\n # from the schema registry.\n # Type: bool\n sdk.schema.decode.payload.enabled: "true"\n # Whether to encode the record key using its corresponding schema from\n # the schema registry.\n # Type: bool\n sdk.schema.encode.key.enabled: "true"\n # Whether to encode the record payload using its corresponding schema\n # from the schema registry.\n # Type: bool\n sdk.schema.encode.payload.enabled: "true"\n'})})}),(0,t.jsx)(a.A,{value:"table",label:"Table",children:(0,t.jsxs)("table",{class:"no-margin-table",children:[(0,t.jsxs)("tr",{children:[(0,t.jsx)("th",{children:"Name"}),(0,t.jsx)("th",{children:"Type"}),(0,t.jsx)("th",{children:"Default"}),(0,t.jsx)("th",{children:"Description"})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"backoffRetry.count"})}),(0,t.jsx)("td",{children:"float"}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"0"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.p,{children:"Maximum number of retries for an individual record when backing off following an error."})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"backoffRetry.factor"})}),(0,t.jsx)("td",{children:"float"}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"2"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.p,{children:"The multiplying factor for each increment step."})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"backoffRetry.max"})}),(0,t.jsx)("td",{children:"duration"}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"5s"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.p,{children:"The maximum waiting time before retrying."})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"backoffRetry.min"})}),(0,t.jsx)("td",{children:"duration"}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"100ms"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.p,{children:"The minimum waiting time before retrying."})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"headers.*"})}),(0,t.jsx)("td",{children:"string"}),(0,t.jsx)("td",{children:(0,t.jsx)(c.A,{label:"null"})}),(0,t.jsx)("td",{children:(0,t.jsxs)(s.p,{children:["Headers to add to the request, use ",(0,t.jsx)(s.code,{children:"headers.*"})," to specify the header and its value (e.g. ",(0,t.jsx)(s.code,{children:'headers.Authorization: "Bearer key"'}),")."]})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"request.body"})}),(0,t.jsx)("td",{children:"string"}),(0,t.jsx)("td",{children:(0,t.jsx)(c.A,{label:"null"})}),(0,t.jsxs)("td",{children:[(0,t.jsxs)(s.p,{children:["Specifies the body that will be sent in the HTTP request. The field accepts\na Go ",(0,t.jsx)(s.a,{href:"https://pkg.go.dev/text/template",children:"templates"})," that's evaluated using the\n",(0,t.jsx)(s.a,{href:"https://pkg.go.dev/github.com/conduitio/conduit-commons/opencdc#Record",children:"opencdc.Record"}),"\nas input. By default, the body is empty."]}),(0,t.jsxs)(s.p,{children:["To send the whole record as JSON you can use ",(0,t.jsx)(s.code,{children:"{{ toJson . }}"}),"."]})]})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"request.contentType"})}),(0,t.jsx)("td",{children:"string"}),(0,t.jsx)("td",{children:(0,t.jsx)(c.A,{label:"null"})}),(0,t.jsx)("td",{children:(0,t.jsxs)(s.p,{children:["Deprecated: use ",(0,t.jsx)(s.code,{children:"headers.Content-Type"})," instead."]})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"request.method"})}),(0,t.jsx)("td",{children:"string"}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"GET"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.p,{children:"Method is the HTTP request method to be used."})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"request.url"})}),(0,t.jsx)("td",{children:"string"}),(0,t.jsx)("td",{children:(0,t.jsx)(c.A,{label:"null"})}),(0,t.jsx)("td",{children:(0,t.jsxs)(s.p,{children:["URL is a Go template expression for the URL used in the HTTP request, using Go ",(0,t.jsx)(s.a,{href:"https://pkg.go.dev/text/template",children:"templates"}),".\nThe value provided to the template is ",(0,t.jsx)(s.a,{href:"https://pkg.go.dev/github.com/conduitio/conduit-commons/opencdc#Record",children:"opencdc.Record"}),",\nso the template has access to all its fields (e.g. ",(0,t.jsx)(s.code,{children:".Position"}),", ",(0,t.jsx)(s.code,{children:".Key"}),", ",(0,t.jsx)(s.code,{children:".Metadata"}),", and so on). We also inject all template functions provided by ",(0,t.jsx)(s.a,{href:"https://masterminds.github.io/sprig/",children:"sprig"}),"\nto make it easier to write templates."]})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"response.body"})}),(0,t.jsx)("td",{children:"string"}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:".Payload.After"})}),(0,t.jsxs)("td",{children:[(0,t.jsx)(s.p,{children:"Specifies in which field should the response body be saved."}),(0,t.jsxs)(s.p,{children:["For more information about the format, see ",(0,t.jsx)(s.a,{href:"https://conduitio.github.io/docs/using/processors/referencing-fields",children:"Referencing fields"}),"."]})]})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"response.status"})}),(0,t.jsx)("td",{children:"string"}),(0,t.jsx)("td",{children:(0,t.jsx)(c.A,{label:"null"})}),(0,t.jsxs)("td",{children:[(0,t.jsx)(s.p,{children:"Specifies in which field should the response status be saved. If no value\nis set, then the response status will NOT be saved."}),(0,t.jsxs)(s.p,{children:["For more information about the format, see ",(0,t.jsx)(s.a,{href:"https://conduitio.github.io/docs/using/processors/referencing-fields",children:"Referencing fields"}),"."]})]})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"sdk.schema.decode.key.enabled"})}),(0,t.jsx)("td",{children:"bool"}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"true"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.p,{children:"Whether to decode the record key using its corresponding schema from the schema registry."})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"sdk.schema.decode.payload.enabled"})}),(0,t.jsx)("td",{children:"bool"}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"true"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.p,{children:"Whether to decode the record payload using its corresponding schema from the schema registry."})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"sdk.schema.encode.key.enabled"})}),(0,t.jsx)("td",{children:"bool"}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"true"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.p,{children:"Whether to encode the record key using its corresponding schema from the schema registry."})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"sdk.schema.encode.payload.enabled"})}),(0,t.jsx)("td",{children:"bool"}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"true"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.p,{children:"Whether to encode the record payload using its corresponding schema from the schema registry."})})]})]})})]}),"\n",(0,t.jsx)(s.h2,{id:"examples",children:"Examples"}),"\n",(0,t.jsx)(s.h3,{id:"send-a-request-to-an-http-server",children:"Send a request to an HTTP server"}),"\n",(0,t.jsxs)(s.p,{children:["This example shows how to use the HTTP processor to send a record's ",(0,t.jsx)(s.code,{children:".Payload.After"})," field as a string to a dummy\nHTTP server that replies back
1with a greeting."]}),"\n",(0,t.jsxs)(s.p,{children:["The record's ",(0,t.jsx)(s.code,{children:".Payload.After"})," is overwritten with the response. Additionally, the example shows how to set a request\nheader and how to store the value of the HTTP response's code in the metadata field ",(0,t.jsx)(s.code,{children:"http_status"}),"."]}),"\n",(0,t.jsx)(s.h4,{id:"configuration-parameters-1",children:"Configuration parameters"}),"\n",(0,t.jsxs)(h.A,{groupId:"config-params",children:[(0,t.jsx)(a.A,{value:"yaml",label:"YAML",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-yaml",children:'version: 2.2\npipelines:\n - id: example\n status: running\n connectors:\n # define source and destination ...\n processors:\n - id: example\n plugin: "webhook.http"\n settings:\n backoffRetry.count: "0"\n backoffRetry.factor: "2"\n backoffRetry.max: "5s"\n backoffRetry.min: "100ms"\n headers.content-type: "application/json"\n request.body: "{{ printf "%s" .Payload.After }}"\n request.method: "GET"\n request.url: "http://127.0.0.1:54321"\n response.body: ".Payload.After"\n response.status: ".Metadata["http_status"]"\n'})})}),(0,t.jsx)(a.A,{value:"table",label:"Table",children:(0,t.jsxs)("table",{class:"no-margin-table",children:[(0,t.jsxs)("tr",{children:[(0,t.jsx)("th",{children:"Name"}),(0,t.jsx)("th",{children:"Value"})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"backoffRetry.count"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"0"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"backoffRetry.factor"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"2"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"backoffRetry.max"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"5s"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"backoffRetry.min"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"100ms"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"headers.content-type"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"application/json"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"request.body"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:'{{ printf "%s" .Payload.After }}'})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"request.method"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"GET"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"request.url"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"http://127.0.0.1:54321"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"response.body"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:".Payload.After"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"response.status"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:'.Metadata["http_status"]'})})]})]})})]}),"\n",(0,t.jsx)(s.h4,{id:"record-difference",children:"Record difference"}),"\n",(0,t.jsx)(l.A,{className:"diff-viewer",children:(0,t.jsx)(o(),{styles:{diffContainer:{overflowX:"auto",overflowY:"hidden"}},leftTitle:"Before",rightTitle:"After",oldValue:'{\n "position": "cG9zLTE=",\n "operation": "update",\n "metadata": null,\n "key": null,\n "payload": {\n "before": null,\n "after": "world"\n }\n}',newValue:'{\n "position": "cG9zLTE=",\n "operation": "update",\n "metadata": {\n "http_status": "200"\n },\n "key": null,\n "payload": {\n "before": null,\n "after": "hello, world"\n }\n}',hideLineNumbers:!1,showDiffOnly:!1,splitView:!0})}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsx)(s.h3,{id:"send-a-request-to-an-http-server-with-a-dynamic-url",children:"Send a request to an HTTP server with a dynamic URL"}),"\n",(0,t.jsxs)(s.p,{children:["This example shows how to use the HTTP processor to use a record's ",(0,t.jsx)(s.code,{children:".Payload.After.name"})," field in the URL path,\nsend it to a dummy HTTP server, and get a greeting with the name back."]}),"\n",(0,t.jsxs)(s.p,{children:["The response will be written under the record's ",(0,t.jsx)(s.code,{children:".Payload.After.response"}),"."]}),"\n",(0,t.jsx)(s.h4,{id:"configuration-parameters-2",children:"Configuration parameters"}),"\n",(0,t.jsxs)(h.A,{groupId:"config-params",children:[(0,t.jsx)(a.A,{value:"yaml",label:"YAML",children:(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-yaml",children:'version: 2.2\npipelines:\n - id: example\n status: running\n connectors:\n # define source and destination ...\n processors:\n - id: example\n plugin: "webhook.http"\n settings:\n backoffRetry.count: "0"\n backoffRetry.factor: "2"\n backoffRetry.max: "5s"\n backoffRetry.min: "100ms"\n request.method: "GET"\n request.url: "http://127.0.0.1:54321/{{.Payload.After.name}}"\n response.body: ".Payload.After.response"\n'})})}),(0,t.jsx)(a.A,{value:"table",label:"Table",children:(0,t.jsxs)("table",{class:"no-margin-table",children:[(0,t.jsxs)("tr",{children:[(0,t.jsx)("th",{children:"Name"}),(0,t.jsx)("th",{children:"Value"})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"backoffRetry.count"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"0"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"backoffRetry.factor"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"2"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"backoffRetry.max"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"5s"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"backoffRetry.min"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"100ms"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"request.method"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"GET"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"request.url"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"http://127.0.0.1:54321/{{.Payload.After.name}}"})})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:"response.body"})}),(0,t.jsx)("td",{children:(0,t.jsx)(s.code,{children:".Payload.After.response"})})]})]})})]}),"\n",(0,t.jsx)(s.h4,{id:"record-difference-1",children:"Record difference"}),"\n",(0,t.jsx)(l.A,{className:"diff-viewer",children:(0,t.jsx)(o(),{styles:{diffContainer:{overflowX:"auto",overflowY:"hidden"}},leftTitle:"Before",rightTitle:"After",oldValue:'{\n "position": "cG9zLTE=",\n "operation": "create",\n "metadata": null,\n "key": null,\n "payload": {\n "before": null,\n "after": {\n "name": "foo"\n }\n }\n}',newValue:'{\n "position": "cG9zLTE=",\n "operation": "create",\n "metadata": null,\n "key": null,\n "payload": {\n "before": null,\n "after": {\n "name": "foo",\n "response": "aGVsbG8sIGZvbyE="\n }\n }\n}',hideLineNumbers:!1,showDiffOnly:!1,splitView:!0})})]})}function m(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(f,{...e})}):f(e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.