PageSourceSearch

https://conduitio.github.io/assets/js/b2e29919.b98bc83f.js

js conduitio.github.io collected 2026-10-03 08:51:57 UTC 21,763 bytes, 1 lines download raw bytes

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.