[{"data":1,"prerenderedAt":10512},["ShallowReactive",2],{"docs-navigation":3,"content-query-rirMHTqHCN":342},[4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145,148,151,154,157,160,163,166,169,172,175,178,181,184,187,190,193,196,199,202,205,208,211,214,217,220,223,226,229,232,235,238,241,244,247,250,253,256,259,262,265,268,271,274,277,280,283,285,288,291,294,297,300,303,306,309,312,315,318,321,324,327,330,333,336,339],{"_path":5,"title":6},"/docs/account/account-management","Account management",{"_path":8,"title":9},"/docs/account/mfa","Multi-factor authentication (MFA)",{"_path":11,"title":12},"/docs/account/team","Teams and sub-accounts",{"_path":14,"title":15},"/docs/account/billing-and-subscriptions","Billing & subscriptions",{"_path":17,"title":18},"/docs/account/access-tokens","Webhook Relay access tokens: permissions and subscription scopes",{"_path":20,"title":21},"/docs/clawhub","Webhook Relay on ClawHub",{"_path":23,"title":24},"/docs/email","Receive emails as webhooks",{"_path":26,"title":27},"/docs/email/payload","Email webhook payload",{"_path":29,"title":30},"/docs/email/filtering-and-policy","Sender filtering & policy",{"_path":32,"title":33},"/docs/email/cli","Create & poll email addresses from the CLI",{"_path":35,"title":36},"/docs","Getting Started",{"_path":38,"title":39},"/docs/installation/cli","CLI",{"_path":41,"title":42},"/docs/installation/docker","Docker container",{"_path":44,"title":45},"/docs/installation/docker-compose","Docker Compose",{"_path":47,"title":48},"/docs/installation/kubernetes","Kubernetes",{"_path":50,"title":51},"/docs/installation/autostart-windows","Autostart (Windows)",{"_path":53,"title":54},"/docs/installation/autostart-linux","Autostart (Linux)",{"_path":56,"title":57},"/docs/installation/autostart-macos","Autostart (MacOS)",{"_path":59,"title":60},"/docs/installation/behind-proxy","HTTP proxy configuration",{"_path":62,"title":63},"/docs/mcp","MCP Server",{"_path":65,"title":66},"/docs/outbound","Outbound Gateway: send webhooks to your customers",{"_path":68,"title":69},"/docs/outbound/setup","Set up the Outbound Gateway",{"_path":71,"title":72},"/docs/outbound/receiving","Receive and verify outbound webhooks",{"_path":74,"title":75},"/docs/outbound/operating","Monitor, retry and recover deliveries",{"_path":77,"title":78},"/docs/outbound/migrate","Migrate to the Outbound Gateway",{"_path":80,"title":81},"/docs/outbound/migrate/svix","Migrate from Svix",{"_path":83,"title":84},"/docs/outbound/migrate/hookdeck-outpost","Migrate from Hookdeck Outpost",{"_path":86,"title":87},"/docs/outbound/migrate/convoy","Migrate from Convoy",{"_path":89,"title":90},"/docs/outbound/migrate/hook0","Migrate from Hook0",{"_path":92,"title":93},"/docs/outbound/migrate/diy","Migrate a homegrown webhook sender",{"_path":95,"title":96},"/docs/security","Security & Tech",{"_path":98,"title":99},"/docs/service-connections","Service Connections",{"_path":101,"title":102},"/docs/service-connections/ai-providers","AI provider connections",{"_path":104,"title":105},"/docs/service-connections/aws_s3","AWS S3",{"_path":107,"title":108},"/docs/service-connections/aws_sns","AWS SNS",{"_path":110,"title":111},"/docs/service-connections/aws_sqs","AWS SQS",{"_path":113,"title":114},"/docs/service-connections/azure","Azure",{"_path":116,"title":117},"/docs/service-connections/gcp_gcs","GCP Cloud Storage",{"_path":119,"title":120},"/docs/service-connections/gcp_pubsub","GCP Pub/Sub",{"_path":122,"title":123},"/docs/service-connections/secrets","Secrets",{"_path":125,"title":126},"/docs/skills","Agent Skills",{"_path":128,"title":129},"/docs/skills-cli","skills.sh — the Agent Skills CLI",{"_path":131,"title":132},"/docs/tunnels/demoing-your-website","Demoing your website",{"_path":134,"title":135},"/docs/tunnels/regions","Regions",{"_path":137,"title":138},"/docs/tutorials/cicd/jenkins-bitbucket","Jenkins and Bitbucket",{"_path":140,"title":141},"/docs/tutorials/cicd/jenkins-github","Jenkins and GitHub",{"_path":143,"title":144},"/docs/tutorials/cicd/jenkins-plugin","Jenkins Plugin",{"_path":146,"title":147},"/docs/tutorials/cicd/jenkins-plugin-multibranch","Jenkins Multibranch Pipelines",{"_path":149,"title":150},"/docs/tutorials/cicd/kubernetes-operator","Kubernetes Operator",{"_path":152,"title":153},"/docs/tutorials/cicd/terraform-atlantis","Terraform Atlantis",{"_path":155,"title":156},"/docs/tutorials/cicd/webhook-exec","Execute scripts on webhook",{"_path":158,"title":159},"/docs/tutorials/edge/home-assistant","Home Assistant",{"_path":161,"title":162},"/docs/tutorials/edge/javascript-app","JavaScript app",{"_path":164,"title":165},"/docs/tutorials/edge/node-red","Node-RED",{"_path":167,"title":168},"/docs/tutorials/email/airtable","Email to Airtable",{"_path":170,"title":171},"/docs/tutorials/email/api","Email to API",{"_path":173,"title":174},"/docs/tutorials/email/database","Email to Database",{"_path":176,"title":177},"/docs/tutorials/email/discord","Email to Discord",{"_path":179,"title":180},"/docs/tutorials/email/google-sheets","Email to Google Sheets",{"_path":182,"title":183},"/docs/tutorials/email/microsoft-teams","Email to Microsoft Teams",{"_path":185,"title":186},"/docs/tutorials/email/notion","Email to Notion",{"_path":188,"title":189},"/docs/tutorials/email/slack","Email to Slack",{"_path":191,"title":192},"/docs/tutorials","Tutorials",{"_path":194,"title":195},"/docs/tutorials/n8n/email-trigger","n8n Email Trigger (Inbound Email)",{"_path":197,"title":198},"/docs/tutorials/n8n/webhook-trigger","n8n Webhook Trigger (No Public IP)",{"_path":200,"title":201},"/docs/tutorials/n8n/whatsapp-cloud-api-webhook","n8n WhatsApp Cloud API Webhook Setup",{"_path":203,"title":204},"/docs/tutorials/outbound/send-webhooks-nodejs","Send webhooks to your customers from a Node.js / TypeScript app",{"_path":206,"title":207},"/docs/tutorials/outbound/send-webhooks-go","Send webhooks to your customers from a Go service",{"_path":209,"title":210},"/docs/tutorials/outbound/nextjs-saas-webhooks","Add webhooks to a Next.js SaaS app",{"_path":212,"title":213},"/docs/tutorials/transform/docker-to-slack","DockerHub webhook to Slack notification",{"_path":215,"title":216},"/docs/tutorials/transform/enrich-webhooks","Enrich webhooks from APIs",{"_path":218,"title":219},"/docs/tutorials/transform/stripe-to-plain","Sync Stripe subscriptions to Plain.com tenants",{"_path":221,"title":222},"/docs/tutorials/warehouse/bigquery","GCP BigQuery",{"_path":224,"title":225},"/docs/webhooks/alerts","Alerts",{"_path":227,"title":228},"/docs/webhooks/auth/username-password","Username and password",{"_path":230,"title":231},"/docs/webhooks/auth/hmac","HMAC",{"_path":233,"title":234},"/docs/webhooks/auth/jwt","JWT authentication",{"_path":236,"title":237},"/docs/webhooks/auth/http-method","Auth using request method",{"_path":239,"title":240},"/docs/webhooks/cors","CORS for webhooks",{"_path":242,"title":243},"/docs/webhooks/cron/using-cron-webhooks","Schedule recurring webhooks",{"_path":245,"title":246},"/docs/webhooks/custom-domains","Custom webhook domains",{"_path":248,"title":249},"/docs/webhooks/custom-subdomains","Custom webhook subdomains",{"_path":251,"title":252},"/docs/webhooks/custom-webhook-response","Custom response to webhooks",{"_path":254,"title":255},"/docs/webhooks/durable-webhooks","Durable webhooks: reliable delivery with automatic retries",{"_path":257,"title":258},"/docs/webhooks/functions/manipulating-json","JSON encoding",{"_path":260,"title":261},"/docs/webhooks/functions/make-http-request","Make HTTP request",{"_path":263,"title":264},"/docs/webhooks/functions/modify-request","Modify webhook headers, body, method and path",{"_path":266,"title":267},"/docs/webhooks/functions/multipart-form-data","Multipart form to JSON",{"_path":269,"title":270},"/docs/webhooks/functions/url-encoded-data","URL Encoded Form",{"_path":272,"title":273},"/docs/webhooks/functions/working-with-time","Working with time",{"_path":275,"title":276},"/docs/webhooks/functions/send-emails","Sending emails",{"_path":278,"title":279},"/docs/webhooks/functions/crypto-functions","Base64, encryption",{"_path":281,"title":282},"/docs/webhooks/functions/integrate-into-cicd","Integrating into CI/CD",{"_path":284,"title":222},"/docs/webhooks/functions/big-query",{"_path":286,"title":287},"/docs/webhooks/functions/accessing-metadata","Accessing metadata",{"_path":289,"title":290},"/docs/webhooks/functions/response-functions","Response (post-delivery) functions",{"_path":292,"title":293},"/docs/webhooks/functions/alerting","Alerting from functions",{"_path":295,"title":296},"/docs/webhooks/functions/helper-libraries","Helper libraries",{"_path":298,"title":299},"/docs/webhooks/functions/transform-webhook-payload","Transform a webhook payload",{"_path":301,"title":302},"/docs/webhooks/functions/filter-webhooks","Filter or drop webhooks before forwarding",{"_path":304,"title":305},"/docs/webhooks/functions/provider-helpers","Provider-aware function helpers",{"_path":307,"title":308},"/docs/webhooks/functions","Webhook transformations (functions): modify body, headers, method and path",{"_path":310,"title":311},"/docs/webhooks/internal/localhost","Receive webhooks on localhost with the relay CLI",{"_path":313,"title":314},"/docs/webhooks/large-webhooks","Large Webhooks",{"_path":316,"title":317},"/docs/webhooks/outbound-throttling","Outbound throttling: control webhook delivery speed",{"_path":319,"title":320},"/docs/webhooks/polling-webhooks","Polling webhooks with /v1/events",{"_path":322,"title":323},"/docs/webhooks/public/public-destination","Forward to public URL",{"_path":325,"title":326},"/docs/webhooks/public/multiple-destination-urls","Forward webhooks to multiple destinations",{"_path":328,"title":329},"/docs/webhooks/replay-on-agent-connect","Webhook replay on agent connect: recover missed webhooks",{"_path":331,"title":332},"/docs/webhooks/static-ip-address","Static IP Address",{"_path":334,"title":335},"/docs/webhooks/tls-ssl-errors","Fix TLS/SSL handshake errors: unsupported protocol, wrong version number, handshake failure",{"_path":337,"title":338},"/docs/webhooks/websocket-server","Connecting to websocket server",{"_path":340,"title":341},"/docs/webhooks/zero-retention-buckets","Zero Retention Buckets",{"_path":92,"_dir":343,"_draft":344,"_partial":344,"_locale":345,"title":93,"description":346,"intro":347,"layout":348,"tags":349,"faq":355,"body":371,"_type":10505,"_id":10506,"_source":10507,"_file":10508,"_stem":10509,"_extension":10510,"sitemap":10511},"migrate",false,"","Replace a homegrown webhook sender (Postgres outbox, cron job, SQS, Sidekiq or Celery retry worker) with the Webhook Relay Outbound Gateway: what maps to what, publishing from your worker, importing the signing secrets you already issued, the signature change, a dual-publish cutover with rollback and an import script.","If you send webhooks with your own queue and retry worker, the Outbound Gateway replaces the delivery half: the HTTP call, retries, signing, rate limits, health tracking and delivery log. Your code keeps deciding what happened and publishes it once.","doc",[350,351,352,353,354],"Outbound webhooks","Webhook migration","Transactional outbox","Webhook retries","Standard Webhooks",[356,359,362,365,368],{"q":357,"a":358},"Should I keep my outbox table when I move to Webhook Relay?","Keeping it is the safest option. Your transaction still writes the event to the outbox, and the worker that used to POST to customer endpoints publishes to Webhook Relay instead, using the outbox row ID as the idempotency key. If the worker crashes after publishing, the retry returns the original receipt and nothing is published twice. Webhook Relay then owns delivery, retries, signing and history.",{"q":360,"a":361},"Is there a Python or Ruby SDK for the Outbound Gateway?","Not yet. The SDKs are TypeScript and Go. From Python, Ruby or any other language, call the REST API directly: POST /v1/outbound/messages with HTTP Basic authentication, a JSON body and an Idempotency-Key header.",{"q":363,"a":364},"What happens to the signing secrets I issued to my customers?","If a secret is 32 to 100 standard base64 characters (decoding to a key of at least 24 bytes, with or without the whsec_ prefix), pass it as the secret field when you create the endpoint and your customer keeps the same secret value. Hex secrets usually fit because hex digits are valid base64 characters. URL-safe base64, UUIDs with hyphens and shorter keys don't fit, and those endpoints get a new whsec_ secret. Deliveries are signed with the Standard Webhooks scheme either way, so unless you already sign with Standard Webhooks, your customers switch their verification code once.",{"q":366,"a":367},"If my secret is imported, do my customers still change their receiver?","Only if your current signature scheme isn't Standard Webhooks. Standard Webhooks base64-decodes the secret to get the HMAC key, while many homegrown senders use the raw secret string as the key. An imported secret therefore keeps the same value in your customer's configuration, but they verify it with a Standard Webhooks library instead of your old HMAC code. If you already sign with Standard Webhooks, receivers change nothing.",{"q":369,"a":370},"Can I keep my own retry schedule?","No. The Outbound Gateway retries on a fixed schedule: after 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours, 10 hours and 10 hours, for up to eight attempts within 48 hours, honoring Retry-After on 429 and 503 responses. You can also retry one delivery, re-send failed deliveries or replay skipped ones for 35 days.",{"type":372,"children":373,"toc":10491},"root",[374,397,426,433,762,767,773,780,785,1189,1194,1448,1453,1760,1766,1779,1919,2057,2062,2277,2290,2296,2308,2453,2560,2566,2585,2709,2784,2810,2815,2857,3232,3237,3243,3390,3396,3782,3788,3800,3819,10361,10382,10388,10448,10454,10485],{"type":375,"tag":376,"props":377,"children":378},"element","p",{},[379,386,388,395],{"type":375,"tag":380,"props":381,"children":382},"strong",{},[383],{"type":384,"value":385},"text","A homegrown sender usually has two halves: deciding what happened, and getting it to the customer.",{"type":384,"value":387}," The first half stays in your code. The second half (the HTTP call, the retry worker, signing, per-customer pacing, dead endpoint handling and the delivery log) moves to the Outbound Gateway. The smallest change is to keep your queue or outbox and swap the worker's HTTP ",{"type":375,"tag":389,"props":390,"children":392},"code",{"className":391},[],[393],{"type":384,"value":394},"POST",{"type":384,"value":396}," for one publish call. The signing secrets you already issued can be imported when they are in base64 form, so customers keep the secret value they have.",{"type":375,"tag":376,"props":398,"children":399},{},[400,402,408,410,416,418,424],{"type":384,"value":401},"Read the ",{"type":375,"tag":403,"props":404,"children":405},"a",{"href":77},[406],{"type":384,"value":407},"migration overview",{"type":384,"value":409}," first for the plan limits and the general cutover plan. For what the Outbound Gateway replaces and how it compares with building it yourself or using another provider, see the ",{"type":375,"tag":403,"props":411,"children":413},{"href":412},"/outbound-webhooks/",[414],{"type":384,"value":415},"Outbound Gateway overview",{"type":384,"value":417}," and the ",{"type":375,"tag":403,"props":419,"children":421},{"href":420},"/blog/webhooks-as-a-service-comparison/",[422],{"type":384,"value":423},"webhooks-as-a-service comparison",{"type":384,"value":425},".",{"type":375,"tag":427,"props":428,"children":430},"h2",{"id":429},"concept-map",[431],{"type":384,"value":432},"Concept map",{"type":375,"tag":434,"props":435,"children":436},"table",{},[437,461],{"type":375,"tag":438,"props":439,"children":440},"thead",{},[441],{"type":375,"tag":442,"props":443,"children":444},"tr",{},[445,451,456],{"type":375,"tag":446,"props":447,"children":448},"th",{},[449],{"type":384,"value":450},"Your system",{"type":375,"tag":446,"props":452,"children":453},{},[454],{"type":384,"value":455},"Outbound Gateway",{"type":375,"tag":446,"props":457,"children":458},{},[459],{"type":384,"value":460},"Notes",{"type":375,"tag":462,"props":463,"children":464},"tbody",{},[465,498,554,580,598,624,648,678,702,740],{"type":375,"tag":442,"props":466,"children":467},{},[468,488,493],{"type":375,"tag":469,"props":470,"children":471},"td",{},[472,478,480,486],{"type":375,"tag":389,"props":473,"children":475},{"className":474},[],[476],{"type":384,"value":477},"customers",{"type":384,"value":479}," / ",{"type":375,"tag":389,"props":481,"children":483},{"className":482},[],[484],{"type":384,"value":485},"accounts",{"type":384,"value":487}," row",{"type":375,"tag":469,"props":489,"children":490},{},[491],{"type":384,"value":492},"Consumer",{"type":375,"tag":469,"props":494,"children":495},{},[496],{"type":384,"value":497},"Use your customer ID as the consumer ID (up to 128 letters, numbers, dots, colons, underscores or hyphens).",{"type":375,"tag":442,"props":499,"children":500},{},[501,512,517],{"type":375,"tag":469,"props":502,"children":503},{},[504,510],{"type":375,"tag":389,"props":505,"children":507},{"className":506},[],[508],{"type":384,"value":509},"webhook_endpoints",{"type":384,"value":511}," row (URL, secret, event filter)",{"type":375,"tag":469,"props":513,"children":514},{},[515],{"type":384,"value":516},"Endpoint",{"type":375,"tag":469,"props":518,"children":519},{},[520,522,528,530,536,538,544,546,552],{"type":384,"value":521},"Public HTTPS URL and ",{"type":375,"tag":389,"props":523,"children":525},{"className":524},[],[526],{"type":384,"value":527},"event_types",{"type":384,"value":529}," (or ",{"type":375,"tag":389,"props":531,"children":533},{"className":532},[],[534],{"type":384,"value":535},"[\"*\"]",{"type":384,"value":537},"). The existing secret is ",{"type":375,"tag":403,"props":539,"children":541},{"href":540},"/docs/outbound/migrate#import-existing-signing-secrets",[542],{"type":384,"value":543},"imported",{"type":384,"value":545}," when it fits the format, otherwise the endpoint gets a new ",{"type":375,"tag":389,"props":547,"children":549},{"className":548},[],[550],{"type":384,"value":551},"whsec_",{"type":384,"value":553}," secret. Endpoints per consumer depend on your plan (10 on Basic, 25 on Business, 100 on Pro).",{"type":375,"tag":442,"props":555,"children":556},{},[557,570,575],{"type":375,"tag":469,"props":558,"children":559},{},[560,562,568],{"type":384,"value":561},"Event names in your code (",{"type":375,"tag":389,"props":563,"children":565},{"className":564},[],[566],{"type":384,"value":567},"invoice.paid",{"type":384,"value":569},")",{"type":375,"tag":469,"props":571,"children":572},{},[573],{"type":384,"value":574},"Event types",{"type":375,"tag":469,"props":576,"children":577},{},[578],{"type":384,"value":579},"Register them once.",{"type":375,"tag":442,"props":581,"children":582},{},[583,588,593],{"type":375,"tag":469,"props":584,"children":585},{},[586],{"type":384,"value":587},"Outbox row / queue message / job",{"type":375,"tag":469,"props":589,"children":590},{},[591],{"type":384,"value":592},"Message",{"type":375,"tag":469,"props":594,"children":595},{},[596],{"type":384,"value":597},"Publish with the row or job ID as the idempotency key.",{"type":375,"tag":442,"props":599,"children":600},{},[601,606,611],{"type":375,"tag":469,"props":602,"children":603},{},[604],{"type":384,"value":605},"Retry worker, backoff, dead-letter queue",{"type":375,"tag":469,"props":607,"children":608},{},[609],{"type":384,"value":610},"Retries",{"type":375,"tag":469,"props":612,"children":613},{},[614,616,622],{"type":384,"value":615},"Up to 8 attempts within 48 hours, ",{"type":375,"tag":389,"props":617,"children":619},{"className":618},[],[620],{"type":384,"value":621},"Retry-After",{"type":384,"value":623}," honored.",{"type":375,"tag":442,"props":625,"children":626},{},[627,632,643],{"type":375,"tag":469,"props":628,"children":629},{},[630],{"type":384,"value":631},"Per-customer throttling",{"type":375,"tag":469,"props":633,"children":634},{},[635,637],{"type":384,"value":636},"Endpoint ",{"type":375,"tag":389,"props":638,"children":640},{"className":639},[],[641],{"type":384,"value":642},"rate",{"type":375,"tag":469,"props":644,"children":645},{},[646],{"type":384,"value":647},"50 deliveries per second by default, up to 1,000.",{"type":375,"tag":442,"props":649,"children":650},{},[651,656,667],{"type":375,"tag":469,"props":652,"children":653},{},[654],{"type":384,"value":655},"\"Disable after N failures\" logic",{"type":375,"tag":469,"props":657,"children":658},{},[659,665],{"type":375,"tag":389,"props":660,"children":662},{"className":661},[],[663],{"type":384,"value":664},"auto_disable",{"type":384,"value":666},", endpoint states",{"type":375,"tag":469,"props":668,"children":669},{},[670,676],{"type":375,"tag":389,"props":671,"children":673},{"className":672},[],[674],{"type":384,"value":675},"failing",{"type":384,"value":677}," after 5 failures in a row; optional disable after 100 failures over at least 12 hours.",{"type":375,"tag":442,"props":679,"children":680},{},[681,692,697],{"type":375,"tag":469,"props":682,"children":683},{},[684,690],{"type":375,"tag":389,"props":685,"children":687},{"className":686},[],[688],{"type":384,"value":689},"webhook_deliveries",{"type":384,"value":691}," / attempts table",{"type":375,"tag":469,"props":693,"children":694},{},[695],{"type":384,"value":696},"Delivery history",{"type":375,"tag":469,"props":698,"children":699},{},[700],{"type":384,"value":701},"Every attempt with request headers and response, 35 days.",{"type":375,"tag":442,"props":703,"children":704},{},[705,710,715],{"type":375,"tag":469,"props":706,"children":707},{},[708],{"type":384,"value":709},"\"Resend\" button in your admin",{"type":375,"tag":469,"props":711,"children":712},{},[713],{"type":384,"value":714},"Retry, recover, replay",{"type":375,"tag":469,"props":716,"children":717},{},[718,724,726,732,733,739],{"type":375,"tag":389,"props":719,"children":721},{"className":720},[],[722],{"type":384,"value":723},"POST /v1/outbound/endpoints/{id}/retry",{"type":384,"value":725},", ",{"type":375,"tag":389,"props":727,"children":729},{"className":728},[],[730],{"type":384,"value":731},".../recover",{"type":384,"value":725},{"type":375,"tag":389,"props":734,"children":736},{"className":735},[],[737],{"type":384,"value":738},".../replay-missing",{"type":384,"value":425},{"type":375,"tag":442,"props":741,"children":742},{},[743,748,757],{"type":375,"tag":469,"props":744,"children":745},{},[746],{"type":384,"value":747},"Per-customer payload tweaks",{"type":375,"tag":469,"props":749,"children":750},{},[751],{"type":375,"tag":403,"props":752,"children":754},{"href":753},"/docs/outbound/operating#transform-or-drop-payloads-with-functions",[755],{"type":384,"value":756},"Functions",{"type":375,"tag":469,"props":758,"children":759},{},[760],{"type":384,"value":761},"Reshape the JSON body or drop the message per endpoint.",{"type":375,"tag":376,"props":763,"children":764},{},[765],{"type":384,"value":766},"Keep your own endpoint management UI. There is no embeddable consumer portal, so your product keeps calling the API when a customer adds or removes an endpoint.",{"type":375,"tag":427,"props":768,"children":770},{"id":769},"code-map",[771],{"type":384,"value":772},"Code map",{"type":375,"tag":774,"props":775,"children":777},"h3",{"id":776},"keep-the-outbox-swap-the-workers-http-call",[778],{"type":384,"value":779},"Keep the outbox, swap the worker's HTTP call",{"type":375,"tag":376,"props":781,"children":782},{},[783],{"type":384,"value":784},"Before: a worker reads the outbox, signs the body itself, POSTs to every endpoint and schedules retries.",{"type":375,"tag":786,"props":787,"children":788},"code-block",{},[789],{"type":375,"tag":790,"props":791,"children":795},"pre",{"className":792,"code":793,"language":794,"meta":345,"style":345},"language-ts shiki shiki-themes github-dark","// Before: your worker delivers and retries\nfor (const row of await db.claimOutboxRows(100)) {\n  for (const ep of await db.endpointsFor(row.customer_id, row.event_type)) {\n    const body = JSON.stringify(row.payload);\n    const sig = crypto.createHmac(\"sha256\", ep.secret).update(body).digest(\"hex\");\n    const res = await fetch(ep.url, { method: \"POST\", body, headers: { \"content-type\": \"application/json\", \"x-signature\": sig } });\n    if (!res.ok) await db.scheduleRetry(row.id, ep.id, backoff(row.attempts));\n  }\n  await db.markDone(row.id);\n}\n","ts",[796],{"type":375,"tag":389,"props":797,"children":798},{"__ignoreMap":345},[799,811,873,917,955,1026,1096,1148,1157,1180],{"type":375,"tag":800,"props":801,"children":804},"span",{"class":802,"line":803},"line",1,[805],{"type":375,"tag":800,"props":806,"children":808},{"style":807},"--shiki-default:#6A737D",[809],{"type":384,"value":810},"// Before: your worker delivers and retries\n",{"type":375,"tag":800,"props":812,"children":814},{"class":802,"line":813},2,[815,821,827,832,837,842,847,852,858,863,868],{"type":375,"tag":800,"props":816,"children":818},{"style":817},"--shiki-default:#F97583",[819],{"type":384,"value":820},"for",{"type":375,"tag":800,"props":822,"children":824},{"style":823},"--shiki-default:#E1E4E8",[825],{"type":384,"value":826}," (",{"type":375,"tag":800,"props":828,"children":829},{"style":817},[830],{"type":384,"value":831},"const",{"type":375,"tag":800,"props":833,"children":835},{"style":834},"--shiki-default:#79B8FF",[836],{"type":384,"value":487},{"type":375,"tag":800,"props":838,"children":839},{"style":817},[840],{"type":384,"value":841}," of",{"type":375,"tag":800,"props":843,"children":844},{"style":817},[845],{"type":384,"value":846}," await",{"type":375,"tag":800,"props":848,"children":849},{"style":823},[850],{"type":384,"value":851}," db.",{"type":375,"tag":800,"props":853,"children":855},{"style":854},"--shiki-default:#B392F0",[856],{"type":384,"value":857},"claimOutboxRows",{"type":375,"tag":800,"props":859,"children":860},{"style":823},[861],{"type":384,"value":862},"(",{"type":375,"tag":800,"props":864,"children":865},{"style":834},[866],{"type":384,"value":867},"100",{"type":375,"tag":800,"props":869,"children":870},{"style":823},[871],{"type":384,"value":872},")) {\n",{"type":375,"tag":800,"props":874,"children":876},{"class":802,"line":875},3,[877,882,886,890,895,899,903,907,912],{"type":375,"tag":800,"props":878,"children":879},{"style":817},[880],{"type":384,"value":881},"  for",{"type":375,"tag":800,"props":883,"children":884},{"style":823},[885],{"type":384,"value":826},{"type":375,"tag":800,"props":887,"children":888},{"style":817},[889],{"type":384,"value":831},{"type":375,"tag":800,"props":891,"children":892},{"style":834},[893],{"type":384,"value":894}," ep",{"type":375,"tag":800,"props":896,"children":897},{"style":817},[898],{"type":384,"value":841},{"type":375,"tag":800,"props":900,"children":901},{"style":817},[902],{"type":384,"value":846},{"type":375,"tag":800,"props":904,"children":905},{"style":823},[906],{"type":384,"value":851},{"type":375,"tag":800,"props":908,"children":909},{"style":854},[910],{"type":384,"value":911},"endpointsFor",{"type":375,"tag":800,"props":913,"children":914},{"style":823},[915],{"type":384,"value":916},"(row.customer_id, row.event_type)) {\n",{"type":375,"tag":800,"props":918,"children":920},{"class":802,"line":919},4,[921,926,931,936,941,945,950],{"type":375,"tag":800,"props":922,"children":923},{"style":817},[924],{"type":384,"value":925},"    const",{"type":375,"tag":800,"props":927,"children":928},{"style":834},[929],{"type":384,"value":930}," body",{"type":375,"tag":800,"props":932,"children":933},{"style":817},[934],{"type":384,"value":935}," =",{"type":375,"tag":800,"props":937,"children":938},{"style":834},[939],{"type":384,"value":940}," JSON",{"type":375,"tag":800,"props":942,"children":943},{"style":823},[944],{"type":384,"value":425},{"type":375,"tag":800,"props":946,"children":947},{"style":854},[948],{"type":384,"value":949},"stringify",{"type":375,"tag":800,"props":951,"children":952},{"style":823},[953],{"type":384,"value":954},"(row.payload);\n",{"type":375,"tag":800,"props":956,"children":958},{"class":802,"line":957},5,[959,963,968,972,977,982,986,992,997,1002,1007,1012,1016,1021],{"type":375,"tag":800,"props":960,"children":961},{"style":817},[962],{"type":384,"value":925},{"type":375,"tag":800,"props":964,"children":965},{"style":834},[966],{"type":384,"value":967}," sig",{"type":375,"tag":800,"props":969,"children":970},{"style":817},[971],{"type":384,"value":935},{"type":375,"tag":800,"props":973,"children":974},{"style":823},[975],{"type":384,"value":976}," crypto.",{"type":375,"tag":800,"props":978,"children":979},{"style":854},[980],{"type":384,"value":981},"createHmac",{"type":375,"tag":800,"props":983,"children":984},{"style":823},[985],{"type":384,"value":862},{"type":375,"tag":800,"props":987,"children":989},{"style":988},"--shiki-default:#9ECBFF",[990],{"type":384,"value":991},"\"sha256\"",{"type":375,"tag":800,"props":993,"children":994},{"style":823},[995],{"type":384,"value":996},", ep.secret).",{"type":375,"tag":800,"props":998,"children":999},{"style":854},[1000],{"type":384,"value":1001},"update",{"type":375,"tag":800,"props":1003,"children":1004},{"style":823},[1005],{"type":384,"value":1006},"(body).",{"type":375,"tag":800,"props":1008,"children":1009},{"style":854},[1010],{"type":384,"value":1011},"digest",{"type":375,"tag":800,"props":1013,"children":1014},{"style":823},[1015],{"type":384,"value":862},{"type":375,"tag":800,"props":1017,"children":1018},{"style":988},[1019],{"type":384,"value":1020},"\"hex\"",{"type":375,"tag":800,"props":1022,"children":1023},{"style":823},[1024],{"type":384,"value":1025},");\n",{"type":375,"tag":800,"props":1027,"children":1029},{"class":802,"line":1028},6,[1030,1034,1039,1043,1047,1052,1057,1062,1067,1072,1077,1082,1086,1091],{"type":375,"tag":800,"props":1031,"children":1032},{"style":817},[1033],{"type":384,"value":925},{"type":375,"tag":800,"props":1035,"children":1036},{"style":834},[1037],{"type":384,"value":1038}," res",{"type":375,"tag":800,"props":1040,"children":1041},{"style":817},[1042],{"type":384,"value":935},{"type":375,"tag":800,"props":1044,"children":1045},{"style":817},[1046],{"type":384,"value":846},{"type":375,"tag":800,"props":1048,"children":1049},{"style":854},[1050],{"type":384,"value":1051}," fetch",{"type":375,"tag":800,"props":1053,"children":1054},{"style":823},[1055],{"type":384,"value":1056},"(ep.url, { method: ",{"type":375,"tag":800,"props":1058,"children":1059},{"style":988},[1060],{"type":384,"value":1061},"\"POST\"",{"type":375,"tag":800,"props":1063,"children":1064},{"style":823},[1065],{"type":384,"value":1066},", body, headers: { ",{"type":375,"tag":800,"props":1068,"children":1069},{"style":988},[1070],{"type":384,"value":1071},"\"content-type\"",{"type":375,"tag":800,"props":1073,"children":1074},{"style":823},[1075],{"type":384,"value":1076},": ",{"type":375,"tag":800,"props":1078,"children":1079},{"style":988},[1080],{"type":384,"value":1081},"\"application/json\"",{"type":375,"tag":800,"props":1083,"children":1084},{"style":823},[1085],{"type":384,"value":725},{"type":375,"tag":800,"props":1087,"children":1088},{"style":988},[1089],{"type":384,"value":1090},"\"x-signature\"",{"type":375,"tag":800,"props":1092,"children":1093},{"style":823},[1094],{"type":384,"value":1095},": sig } });\n",{"type":375,"tag":800,"props":1097,"children":1099},{"class":802,"line":1098},7,[1100,1105,1109,1114,1119,1124,1128,1133,1138,1143],{"type":375,"tag":800,"props":1101,"children":1102},{"style":817},[1103],{"type":384,"value":1104},"    if",{"type":375,"tag":800,"props":1106,"children":1107},{"style":823},[1108],{"type":384,"value":826},{"type":375,"tag":800,"props":1110,"children":1111},{"style":817},[1112],{"type":384,"value":1113},"!",{"type":375,"tag":800,"props":1115,"children":1116},{"style":823},[1117],{"type":384,"value":1118},"res.ok) ",{"type":375,"tag":800,"props":1120,"children":1121},{"style":817},[1122],{"type":384,"value":1123},"await",{"type":375,"tag":800,"props":1125,"children":1126},{"style":823},[1127],{"type":384,"value":851},{"type":375,"tag":800,"props":1129,"children":1130},{"style":854},[1131],{"type":384,"value":1132},"scheduleRetry",{"type":375,"tag":800,"props":1134,"children":1135},{"style":823},[1136],{"type":384,"value":1137},"(row.id, ep.id, ",{"type":375,"tag":800,"props":1139,"children":1140},{"style":854},[1141],{"type":384,"value":1142},"backoff",{"type":375,"tag":800,"props":1144,"children":1145},{"style":823},[1146],{"type":384,"value":1147},"(row.attempts));\n",{"type":375,"tag":800,"props":1149,"children":1151},{"class":802,"line":1150},8,[1152],{"type":375,"tag":800,"props":1153,"children":1154},{"style":823},[1155],{"type":384,"value":1156},"  }\n",{"type":375,"tag":800,"props":1158,"children":1160},{"class":802,"line":1159},9,[1161,1166,1170,1175],{"type":375,"tag":800,"props":1162,"children":1163},{"style":817},[1164],{"type":384,"value":1165},"  await",{"type":375,"tag":800,"props":1167,"children":1168},{"style":823},[1169],{"type":384,"value":851},{"type":375,"tag":800,"props":1171,"children":1172},{"style":854},[1173],{"type":384,"value":1174},"markDone",{"type":375,"tag":800,"props":1176,"children":1177},{"style":823},[1178],{"type":384,"value":1179},"(row.id);\n",{"type":375,"tag":800,"props":1181,"children":1183},{"class":802,"line":1182},10,[1184],{"type":375,"tag":800,"props":1185,"children":1186},{"style":823},[1187],{"type":384,"value":1188},"}\n",{"type":375,"tag":376,"props":1190,"children":1191},{},[1192],{"type":384,"value":1193},"After: the worker publishes once per outbox row. Webhook Relay finds the subscribed endpoints, signs, delivers and retries.",{"type":375,"tag":786,"props":1195,"children":1196},{},[1197],{"type":375,"tag":790,"props":1198,"children":1200},{"className":792,"code":1199,"language":794,"meta":345,"style":345},"import { WebhookRelay } from \"@webhookrelay/sdk\";\n\nconst relay = new WebhookRelay(); // reads RELAY_KEY and RELAY_SECRET (\"Outbound: publish only\" token)\n\nfor (const row of await db.claimOutboxRows(100)) {\n  await relay.outbound.messages.publish(\n    { consumer: row.customer_id, eventType: row.event_type, eventId: String(row.id), payload: row.payload },\n    { idempotencyKey: `outbox:${row.id}` }, // a crash before markDone re-publishes safely\n  );\n  await db.markDone(row.id);\n}\n",[1201],{"type":375,"tag":389,"props":1202,"children":1203},{"__ignoreMap":345},[1204,1232,1241,1277,1284,1331,1353,1371,1413,1421,1440],{"type":375,"tag":800,"props":1205,"children":1206},{"class":802,"line":803},[1207,1212,1217,1222,1227],{"type":375,"tag":800,"props":1208,"children":1209},{"style":817},[1210],{"type":384,"value":1211},"import",{"type":375,"tag":800,"props":1213,"children":1214},{"style":823},[1215],{"type":384,"value":1216}," { WebhookRelay } ",{"type":375,"tag":800,"props":1218,"children":1219},{"style":817},[1220],{"type":384,"value":1221},"from",{"type":375,"tag":800,"props":1223,"children":1224},{"style":988},[1225],{"type":384,"value":1226}," \"@webhookrelay/sdk\"",{"type":375,"tag":800,"props":1228,"children":1229},{"style":823},[1230],{"type":384,"value":1231},";\n",{"type":375,"tag":800,"props":1233,"children":1234},{"class":802,"line":813},[1235],{"type":375,"tag":800,"props":1236,"children":1238},{"emptyLinePlaceholder":1237},true,[1239],{"type":384,"value":1240},"\n",{"type":375,"tag":800,"props":1242,"children":1243},{"class":802,"line":875},[1244,1248,1253,1257,1262,1267,1272],{"type":375,"tag":800,"props":1245,"children":1246},{"style":817},[1247],{"type":384,"value":831},{"type":375,"tag":800,"props":1249,"children":1250},{"style":834},[1251],{"type":384,"value":1252}," relay",{"type":375,"tag":800,"props":1254,"children":1255},{"style":817},[1256],{"type":384,"value":935},{"type":375,"tag":800,"props":1258,"children":1259},{"style":817},[1260],{"type":384,"value":1261}," new",{"type":375,"tag":800,"props":1263,"children":1264},{"style":854},[1265],{"type":384,"value":1266}," WebhookRelay",{"type":375,"tag":800,"props":1268,"children":1269},{"style":823},[1270],{"type":384,"value":1271},"(); ",{"type":375,"tag":800,"props":1273,"children":1274},{"style":807},[1275],{"type":384,"value":1276},"// reads RELAY_KEY and RELAY_SECRET (\"Outbound: publish only\" token)\n",{"type":375,"tag":800,"props":1278,"children":1279},{"class":802,"line":919},[1280],{"type":375,"tag":800,"props":1281,"children":1282},{"emptyLinePlaceholder":1237},[1283],{"type":384,"value":1240},{"type":375,"tag":800,"props":1285,"children":1286},{"class":802,"line":957},[1287,1291,1295,1299,1303,1307,1311,1315,1319,1323,1327],{"type":375,"tag":800,"props":1288,"children":1289},{"style":817},[1290],{"type":384,"value":820},{"type":375,"tag":800,"props":1292,"children":1293},{"style":823},[1294],{"type":384,"value":826},{"type":375,"tag":800,"props":1296,"children":1297},{"style":817},[1298],{"type":384,"value":831},{"type":375,"tag":800,"props":1300,"children":1301},{"style":834},[1302],{"type":384,"value":487},{"type":375,"tag":800,"props":1304,"children":1305},{"style":817},[1306],{"type":384,"value":841},{"type":375,"tag":800,"props":1308,"children":1309},{"style":817},[1310],{"type":384,"value":846},{"type":375,"tag":800,"props":1312,"children":1313},{"style":823},[1314],{"type":384,"value":851},{"type":375,"tag":800,"props":1316,"children":1317},{"style":854},[1318],{"type":384,"value":857},{"type":375,"tag":800,"props":1320,"children":1321},{"style":823},[1322],{"type":384,"value":862},{"type":375,"tag":800,"props":1324,"children":1325},{"style":834},[1326],{"type":384,"value":867},{"type":375,"tag":800,"props":1328,"children":1329},{"style":823},[1330],{"type":384,"value":872},{"type":375,"tag":800,"props":1332,"children":1333},{"class":802,"line":1028},[1334,1338,1343,1348],{"type":375,"tag":800,"props":1335,"children":1336},{"style":817},[1337],{"type":384,"value":1165},{"type":375,"tag":800,"props":1339,"children":1340},{"style":823},[1341],{"type":384,"value":1342}," relay.outbound.messages.",{"type":375,"tag":800,"props":1344,"children":1345},{"style":854},[1346],{"type":384,"value":1347},"publish",{"type":375,"tag":800,"props":1349,"children":1350},{"style":823},[1351],{"type":384,"value":1352},"(\n",{"type":375,"tag":800,"props":1354,"children":1355},{"class":802,"line":1098},[1356,1361,1366],{"type":375,"tag":800,"props":1357,"children":1358},{"style":823},[1359],{"type":384,"value":1360},"    { consumer: row.customer_id, eventType: row.event_type, eventId: ",{"type":375,"tag":800,"props":1362,"children":1363},{"style":854},[1364],{"type":384,"value":1365},"String",{"type":375,"tag":800,"props":1367,"children":1368},{"style":823},[1369],{"type":384,"value":1370},"(row.id), payload: row.payload },\n",{"type":375,"tag":800,"props":1372,"children":1373},{"class":802,"line":1150},[1374,1379,1384,1389,1393,1398,1403,1408],{"type":375,"tag":800,"props":1375,"children":1376},{"style":823},[1377],{"type":384,"value":1378},"    { idempotencyKey: ",{"type":375,"tag":800,"props":1380,"children":1381},{"style":988},[1382],{"type":384,"value":1383},"`outbox:${",{"type":375,"tag":800,"props":1385,"children":1386},{"style":823},[1387],{"type":384,"value":1388},"row",{"type":375,"tag":800,"props":1390,"children":1391},{"style":988},[1392],{"type":384,"value":425},{"type":375,"tag":800,"props":1394,"children":1395},{"style":823},[1396],{"type":384,"value":1397},"id",{"type":375,"tag":800,"props":1399,"children":1400},{"style":988},[1401],{"type":384,"value":1402},"}`",{"type":375,"tag":800,"props":1404,"children":1405},{"style":823},[1406],{"type":384,"value":1407}," }, ",{"type":375,"tag":800,"props":1409,"children":1410},{"style":807},[1411],{"type":384,"value":1412},"// a crash before markDone re-publishes safely\n",{"type":375,"tag":800,"props":1414,"children":1415},{"class":802,"line":1159},[1416],{"type":375,"tag":800,"props":1417,"children":1418},{"style":823},[1419],{"type":384,"value":1420},"  );\n",{"type":375,"tag":800,"props":1422,"children":1423},{"class":802,"line":1182},[1424,1428,1432,1436],{"type":375,"tag":800,"props":1425,"children":1426},{"style":817},[1427],{"type":384,"value":1165},{"type":375,"tag":800,"props":1429,"children":1430},{"style":823},[1431],{"type":384,"value":851},{"type":375,"tag":800,"props":1433,"children":1434},{"style":854},[1435],{"type":384,"value":1174},{"type":375,"tag":800,"props":1437,"children":1438},{"style":823},[1439],{"type":384,"value":1179},{"type":375,"tag":800,"props":1441,"children":1443},{"class":802,"line":1442},11,[1444],{"type":375,"tag":800,"props":1445,"children":1446},{"style":823},[1447],{"type":384,"value":1188},{"type":375,"tag":376,"props":1449,"children":1450},{},[1451],{"type":384,"value":1452},"Go:",{"type":375,"tag":786,"props":1454,"children":1455},{},[1456],{"type":375,"tag":790,"props":1457,"children":1461},{"className":1458,"code":1459,"language":1460,"meta":345,"style":345},"language-go shiki shiki-themes github-dark","for _, row := range rows {\n    _, err := api.PublishOutboundMessage(&webhookrelay.OutboundMessagePublishOptions{\n        Consumer:       row.CustomerID,\n        EventType:      row.EventType,\n        EventID:        strconv.FormatInt(row.ID, 10),\n        Payload:        row.Payload,\n        IdempotencyKey: \"outbox:\" + strconv.FormatInt(row.ID, 10),\n    })\n    if err != nil {\n        return err // leave the row unclaimed; the next run retries with the same key\n    }\n    if err := markDone(ctx, row.ID); err != nil {\n        return err\n    }\n}\n","go",[1462],{"type":375,"tag":389,"props":1463,"children":1464},{"__ignoreMap":345},[1465,1492,1542,1550,1558,1586,1594,1633,1641,1668,1685,1693,1731,1744,1752],{"type":375,"tag":800,"props":1466,"children":1467},{"class":802,"line":803},[1468,1472,1477,1482,1487],{"type":375,"tag":800,"props":1469,"children":1470},{"style":817},[1471],{"type":384,"value":820},{"type":375,"tag":800,"props":1473,"children":1474},{"style":823},[1475],{"type":384,"value":1476}," _, row ",{"type":375,"tag":800,"props":1478,"children":1479},{"style":817},[1480],{"type":384,"value":1481},":=",{"type":375,"tag":800,"props":1483,"children":1484},{"style":817},[1485],{"type":384,"value":1486}," range",{"type":375,"tag":800,"props":1488,"children":1489},{"style":823},[1490],{"type":384,"value":1491}," rows {\n",{"type":375,"tag":800,"props":1493,"children":1494},{"class":802,"line":813},[1495,1500,1504,1509,1514,1518,1523,1528,1532,1537],{"type":375,"tag":800,"props":1496,"children":1497},{"style":823},[1498],{"type":384,"value":1499},"    _, err ",{"type":375,"tag":800,"props":1501,"children":1502},{"style":817},[1503],{"type":384,"value":1481},{"type":375,"tag":800,"props":1505,"children":1506},{"style":823},[1507],{"type":384,"value":1508}," api.",{"type":375,"tag":800,"props":1510,"children":1511},{"style":854},[1512],{"type":384,"value":1513},"PublishOutboundMessage",{"type":375,"tag":800,"props":1515,"children":1516},{"style":823},[1517],{"type":384,"value":862},{"type":375,"tag":800,"props":1519,"children":1520},{"style":817},[1521],{"type":384,"value":1522},"&",{"type":375,"tag":800,"props":1524,"children":1525},{"style":854},[1526],{"type":384,"value":1527},"webhookrelay",{"type":375,"tag":800,"props":1529,"children":1530},{"style":823},[1531],{"type":384,"value":425},{"type":375,"tag":800,"props":1533,"children":1534},{"style":854},[1535],{"type":384,"value":1536},"OutboundMessagePublishOptions",{"type":375,"tag":800,"props":1538,"children":1539},{"style":823},[1540],{"type":384,"value":1541},"{\n",{"type":375,"tag":800,"props":1543,"children":1544},{"class":802,"line":875},[1545],{"type":375,"tag":800,"props":1546,"children":1547},{"style":823},[1548],{"type":384,"value":1549},"        Consumer:       row.CustomerID,\n",{"type":375,"tag":800,"props":1551,"children":1552},{"class":802,"line":919},[1553],{"type":375,"tag":800,"props":1554,"children":1555},{"style":823},[1556],{"type":384,"value":1557},"        EventType:      row.EventType,\n",{"type":375,"tag":800,"props":1559,"children":1560},{"class":802,"line":957},[1561,1566,1571,1576,1581],{"type":375,"tag":800,"props":1562,"children":1563},{"style":823},[1564],{"type":384,"value":1565},"        EventID:        strconv.",{"type":375,"tag":800,"props":1567,"children":1568},{"style":854},[1569],{"type":384,"value":1570},"FormatInt",{"type":375,"tag":800,"props":1572,"children":1573},{"style":823},[1574],{"type":384,"value":1575},"(row.ID, ",{"type":375,"tag":800,"props":1577,"children":1578},{"style":834},[1579],{"type":384,"value":1580},"10",{"type":375,"tag":800,"props":1582,"children":1583},{"style":823},[1584],{"type":384,"value":1585},"),\n",{"type":375,"tag":800,"props":1587,"children":1588},{"class":802,"line":1028},[1589],{"type":375,"tag":800,"props":1590,"children":1591},{"style":823},[1592],{"type":384,"value":1593},"        Payload:        row.Payload,\n",{"type":375,"tag":800,"props":1595,"children":1596},{"class":802,"line":1098},[1597,1602,1607,1612,1617,1621,1625,1629],{"type":375,"tag":800,"props":1598,"children":1599},{"style":823},[1600],{"type":384,"value":1601},"        IdempotencyKey: ",{"type":375,"tag":800,"props":1603,"children":1604},{"style":988},[1605],{"type":384,"value":1606},"\"outbox:\"",{"type":375,"tag":800,"props":1608,"children":1609},{"style":817},[1610],{"type":384,"value":1611}," +",{"type":375,"tag":800,"props":1613,"children":1614},{"style":823},[1615],{"type":384,"value":1616}," strconv.",{"type":375,"tag":800,"props":1618,"children":1619},{"style":854},[1620],{"type":384,"value":1570},{"type":375,"tag":800,"props":1622,"children":1623},{"style":823},[1624],{"type":384,"value":1575},{"type":375,"tag":800,"props":1626,"children":1627},{"style":834},[1628],{"type":384,"value":1580},{"type":375,"tag":800,"props":1630,"children":1631},{"style":823},[1632],{"type":384,"value":1585},{"type":375,"tag":800,"props":1634,"children":1635},{"class":802,"line":1150},[1636],{"type":375,"tag":800,"props":1637,"children":1638},{"style":823},[1639],{"type":384,"value":1640},"    })\n",{"type":375,"tag":800,"props":1642,"children":1643},{"class":802,"line":1159},[1644,1648,1653,1658,1663],{"type":375,"tag":800,"props":1645,"children":1646},{"style":817},[1647],{"type":384,"value":1104},{"type":375,"tag":800,"props":1649,"children":1650},{"style":823},[1651],{"type":384,"value":1652}," err ",{"type":375,"tag":800,"props":1654,"children":1655},{"style":817},[1656],{"type":384,"value":1657},"!=",{"type":375,"tag":800,"props":1659,"children":1660},{"style":834},[1661],{"type":384,"value":1662}," nil",{"type":375,"tag":800,"props":1664,"children":1665},{"style":823},[1666],{"type":384,"value":1667}," {\n",{"type":375,"tag":800,"props":1669,"children":1670},{"class":802,"line":1182},[1671,1676,1680],{"type":375,"tag":800,"props":1672,"children":1673},{"style":817},[1674],{"type":384,"value":1675},"        return",{"type":375,"tag":800,"props":1677,"children":1678},{"style":823},[1679],{"type":384,"value":1652},{"type":375,"tag":800,"props":1681,"children":1682},{"style":807},[1683],{"type":384,"value":1684},"// leave the row unclaimed; the next run retries with the same key\n",{"type":375,"tag":800,"props":1686,"children":1687},{"class":802,"line":1442},[1688],{"type":375,"tag":800,"props":1689,"children":1690},{"style":823},[1691],{"type":384,"value":1692},"    }\n",{"type":375,"tag":800,"props":1694,"children":1696},{"class":802,"line":1695},12,[1697,1701,1705,1709,1714,1719,1723,1727],{"type":375,"tag":800,"props":1698,"children":1699},{"style":817},[1700],{"type":384,"value":1104},{"type":375,"tag":800,"props":1702,"children":1703},{"style":823},[1704],{"type":384,"value":1652},{"type":375,"tag":800,"props":1706,"children":1707},{"style":817},[1708],{"type":384,"value":1481},{"type":375,"tag":800,"props":1710,"children":1711},{"style":854},[1712],{"type":384,"value":1713}," markDone",{"type":375,"tag":800,"props":1715,"children":1716},{"style":823},[1717],{"type":384,"value":1718},"(ctx, row.ID); err ",{"type":375,"tag":800,"props":1720,"children":1721},{"style":817},[1722],{"type":384,"value":1657},{"type":375,"tag":800,"props":1724,"children":1725},{"style":834},[1726],{"type":384,"value":1662},{"type":375,"tag":800,"props":1728,"children":1729},{"style":823},[1730],{"type":384,"value":1667},{"type":375,"tag":800,"props":1732,"children":1734},{"class":802,"line":1733},13,[1735,1739],{"type":375,"tag":800,"props":1736,"children":1737},{"style":817},[1738],{"type":384,"value":1675},{"type":375,"tag":800,"props":1740,"children":1741},{"style":823},[1742],{"type":384,"value":1743}," err\n",{"type":375,"tag":800,"props":1745,"children":1747},{"class":802,"line":1746},14,[1748],{"type":375,"tag":800,"props":1749,"children":1750},{"style":823},[1751],{"type":384,"value":1692},{"type":375,"tag":800,"props":1753,"children":1755},{"class":802,"line":1754},15,[1756],{"type":375,"tag":800,"props":1757,"children":1758},{"style":823},[1759],{"type":384,"value":1188},{"type":375,"tag":774,"props":1761,"children":1763},{"id":1762},"celery-sidekiq-or-any-language-without-an-sdk",[1764],{"type":384,"value":1765},"Celery, Sidekiq or any language without an SDK",{"type":375,"tag":376,"props":1767,"children":1768},{},[1769,1771,1777],{"type":384,"value":1770},"Call the REST API directly. A ",{"type":375,"tag":389,"props":1772,"children":1774},{"className":1773},[],[1775],{"type":384,"value":1776},"429",{"type":384,"value":1778}," means 10,000 messages are already waiting to be prepared; retry later with the same key.",{"type":375,"tag":786,"props":1780,"children":1781},{},[1782],{"type":375,"tag":790,"props":1783,"children":1787},{"className":1784,"code":1785,"language":1786,"meta":345,"style":345},"language-python shiki shiki-themes github-dark","# Celery task (Python): replaces the task that POSTed to customer endpoints\nimport os, requests\nfrom celery import shared_task\n\n@shared_task(bind=True, max_retries=10, default_retry_delay=30)\ndef publish_webhook(self, outbox_id, customer_id, event_type, payload):\n    res = requests.post(\n        \"https://my.webhookrelay.com/v1/outbound/messages\",\n        auth=(os.environ[\"RELAY_KEY\"], os.environ[\"RELAY_SECRET\"]),\n        headers={\"Idempotency-Key\": f\"outbox:{outbox_id}\"},\n        json={\"consumer\": customer_id, \"event_type\": event_type, \"event_id\": str(outbox_id), \"payload\": payload},\n        timeout=10,\n    )\n    if res.status_code == 429 or res.status_code >= 500:\n        raise self.retry()\n    res.raise_for_status()  # 202 Accepted\n","python",[1788],{"type":375,"tag":389,"props":1789,"children":1790},{"__ignoreMap":345},[1791,1799,1807,1815,1822,1830,1838,1846,1854,1862,1870,1878,1886,1894,1902,1910],{"type":375,"tag":800,"props":1792,"children":1793},{"class":802,"line":803},[1794],{"type":375,"tag":800,"props":1795,"children":1796},{},[1797],{"type":384,"value":1798},"# Celery task (Python): replaces the task that POSTed to customer endpoints\n",{"type":375,"tag":800,"props":1800,"children":1801},{"class":802,"line":813},[1802],{"type":375,"tag":800,"props":1803,"children":1804},{},[1805],{"type":384,"value":1806},"import os, requests\n",{"type":375,"tag":800,"props":1808,"children":1809},{"class":802,"line":875},[1810],{"type":375,"tag":800,"props":1811,"children":1812},{},[1813],{"type":384,"value":1814},"from celery import shared_task\n",{"type":375,"tag":800,"props":1816,"children":1817},{"class":802,"line":919},[1818],{"type":375,"tag":800,"props":1819,"children":1820},{"emptyLinePlaceholder":1237},[1821],{"type":384,"value":1240},{"type":375,"tag":800,"props":1823,"children":1824},{"class":802,"line":957},[1825],{"type":375,"tag":800,"props":1826,"children":1827},{},[1828],{"type":384,"value":1829},"@shared_task(bind=True, max_retries=10, default_retry_delay=30)\n",{"type":375,"tag":800,"props":1831,"children":1832},{"class":802,"line":1028},[1833],{"type":375,"tag":800,"props":1834,"children":1835},{},[1836],{"type":384,"value":1837},"def publish_webhook(self, outbox_id, customer_id, event_type, payload):\n",{"type":375,"tag":800,"props":1839,"children":1840},{"class":802,"line":1098},[1841],{"type":375,"tag":800,"props":1842,"children":1843},{},[1844],{"type":384,"value":1845},"    res = requests.post(\n",{"type":375,"tag":800,"props":1847,"children":1848},{"class":802,"line":1150},[1849],{"type":375,"tag":800,"props":1850,"children":1851},{},[1852],{"type":384,"value":1853},"        \"https://my.webhookrelay.com/v1/outbound/messages\",\n",{"type":375,"tag":800,"props":1855,"children":1856},{"class":802,"line":1159},[1857],{"type":375,"tag":800,"props":1858,"children":1859},{},[1860],{"type":384,"value":1861},"        auth=(os.environ[\"RELAY_KEY\"], os.environ[\"RELAY_SECRET\"]),\n",{"type":375,"tag":800,"props":1863,"children":1864},{"class":802,"line":1182},[1865],{"type":375,"tag":800,"props":1866,"children":1867},{},[1868],{"type":384,"value":1869},"        headers={\"Idempotency-Key\": f\"outbox:{outbox_id}\"},\n",{"type":375,"tag":800,"props":1871,"children":1872},{"class":802,"line":1442},[1873],{"type":375,"tag":800,"props":1874,"children":1875},{},[1876],{"type":384,"value":1877},"        json={\"consumer\": customer_id, \"event_type\": event_type, \"event_id\": str(outbox_id), \"payload\": payload},\n",{"type":375,"tag":800,"props":1879,"children":1880},{"class":802,"line":1695},[1881],{"type":375,"tag":800,"props":1882,"children":1883},{},[1884],{"type":384,"value":1885},"        timeout=10,\n",{"type":375,"tag":800,"props":1887,"children":1888},{"class":802,"line":1733},[1889],{"type":375,"tag":800,"props":1890,"children":1891},{},[1892],{"type":384,"value":1893},"    )\n",{"type":375,"tag":800,"props":1895,"children":1896},{"class":802,"line":1746},[1897],{"type":375,"tag":800,"props":1898,"children":1899},{},[1900],{"type":384,"value":1901},"    if res.status_code == 429 or res.status_code >= 500:\n",{"type":375,"tag":800,"props":1903,"children":1904},{"class":802,"line":1754},[1905],{"type":375,"tag":800,"props":1906,"children":1907},{},[1908],{"type":384,"value":1909},"        raise self.retry()\n",{"type":375,"tag":800,"props":1911,"children":1913},{"class":802,"line":1912},16,[1914],{"type":375,"tag":800,"props":1915,"children":1916},{},[1917],{"type":384,"value":1918},"    res.raise_for_status()  # 202 Accepted\n",{"type":375,"tag":786,"props":1920,"children":1921},{},[1922],{"type":375,"tag":790,"props":1923,"children":1927},{"className":1924,"code":1925,"language":1926,"meta":345,"style":345},"language-ruby shiki shiki-themes github-dark","# Sidekiq job (Ruby)\nrequire \"net/http\"\nrequire \"json\"\n\nclass PublishWebhookJob\n  include Sidekiq::Job\n\n  def perform(outbox_id, customer_id, event_type, payload)\n    uri = URI(\"https://my.webhookrelay.com/v1/outbound/messages\")\n    req = Net::HTTP::Post.new(uri, \"Content-Type\" => \"application/json\", \"Idempotency-Key\" => \"outbox:#{outbox_id}\")\n    req.basic_auth(ENV.fetch(\"RELAY_KEY\"), ENV.fetch(\"RELAY_SECRET\"))\n    req.body = { consumer: customer_id, event_type: event_type, event_id: outbox_id.to_s, payload: payload }.to_json\n    res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }\n    raise \"publish failed: #{res.code}\" unless res.code == \"202\" # Sidekiq retries with the same key\n  end\nend\n","ruby",[1928],{"type":375,"tag":389,"props":1929,"children":1930},{"__ignoreMap":345},[1931,1939,1947,1955,1962,1970,1978,1985,1993,2001,2009,2017,2025,2033,2041,2049],{"type":375,"tag":800,"props":1932,"children":1933},{"class":802,"line":803},[1934],{"type":375,"tag":800,"props":1935,"children":1936},{},[1937],{"type":384,"value":1938},"# Sidekiq job (Ruby)\n",{"type":375,"tag":800,"props":1940,"children":1941},{"class":802,"line":813},[1942],{"type":375,"tag":800,"props":1943,"children":1944},{},[1945],{"type":384,"value":1946},"require \"net/http\"\n",{"type":375,"tag":800,"props":1948,"children":1949},{"class":802,"line":875},[1950],{"type":375,"tag":800,"props":1951,"children":1952},{},[1953],{"type":384,"value":1954},"require \"json\"\n",{"type":375,"tag":800,"props":1956,"children":1957},{"class":802,"line":919},[1958],{"type":375,"tag":800,"props":1959,"children":1960},{"emptyLinePlaceholder":1237},[1961],{"type":384,"value":1240},{"type":375,"tag":800,"props":1963,"children":1964},{"class":802,"line":957},[1965],{"type":375,"tag":800,"props":1966,"children":1967},{},[1968],{"type":384,"value":1969},"class PublishWebhookJob\n",{"type":375,"tag":800,"props":1971,"children":1972},{"class":802,"line":1028},[1973],{"type":375,"tag":800,"props":1974,"children":1975},{},[1976],{"type":384,"value":1977},"  include Sidekiq::Job\n",{"type":375,"tag":800,"props":1979,"children":1980},{"class":802,"line":1098},[1981],{"type":375,"tag":800,"props":1982,"children":1983},{"emptyLinePlaceholder":1237},[1984],{"type":384,"value":1240},{"type":375,"tag":800,"props":1986,"children":1987},{"class":802,"line":1150},[1988],{"type":375,"tag":800,"props":1989,"children":1990},{},[1991],{"type":384,"value":1992},"  def perform(outbox_id, customer_id, event_type, payload)\n",{"type":375,"tag":800,"props":1994,"children":1995},{"class":802,"line":1159},[1996],{"type":375,"tag":800,"props":1997,"children":1998},{},[1999],{"type":384,"value":2000},"    uri = URI(\"https://my.webhookrelay.com/v1/outbound/messages\")\n",{"type":375,"tag":800,"props":2002,"children":2003},{"class":802,"line":1182},[2004],{"type":375,"tag":800,"props":2005,"children":2006},{},[2007],{"type":384,"value":2008},"    req = Net::HTTP::Post.new(uri, \"Content-Type\" => \"application/json\", \"Idempotency-Key\" => \"outbox:#{outbox_id}\")\n",{"type":375,"tag":800,"props":2010,"children":2011},{"class":802,"line":1442},[2012],{"type":375,"tag":800,"props":2013,"children":2014},{},[2015],{"type":384,"value":2016},"    req.basic_auth(ENV.fetch(\"RELAY_KEY\"), ENV.fetch(\"RELAY_SECRET\"))\n",{"type":375,"tag":800,"props":2018,"children":2019},{"class":802,"line":1695},[2020],{"type":375,"tag":800,"props":2021,"children":2022},{},[2023],{"type":384,"value":2024},"    req.body = { consumer: customer_id, event_type: event_type, event_id: outbox_id.to_s, payload: payload }.to_json\n",{"type":375,"tag":800,"props":2026,"children":2027},{"class":802,"line":1733},[2028],{"type":375,"tag":800,"props":2029,"children":2030},{},[2031],{"type":384,"value":2032},"    res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }\n",{"type":375,"tag":800,"props":2034,"children":2035},{"class":802,"line":1746},[2036],{"type":375,"tag":800,"props":2037,"children":2038},{},[2039],{"type":384,"value":2040},"    raise \"publish failed: #{res.code}\" unless res.code == \"202\" # Sidekiq retries with the same key\n",{"type":375,"tag":800,"props":2042,"children":2043},{"class":802,"line":1754},[2044],{"type":375,"tag":800,"props":2045,"children":2046},{},[2047],{"type":384,"value":2048},"  end\n",{"type":375,"tag":800,"props":2050,"children":2051},{"class":802,"line":1912},[2052],{"type":375,"tag":800,"props":2053,"children":2054},{},[2055],{"type":384,"value":2056},"end\n",{"type":375,"tag":376,"props":2058,"children":2059},{},[2060],{"type":384,"value":2061},"curl, for a cron job or a shell script:",{"type":375,"tag":786,"props":2063,"children":2064},{},[2065],{"type":375,"tag":790,"props":2066,"children":2070},{"className":2067,"code":2068,"language":2069,"meta":345,"style":345},"language-bash shiki shiki-themes github-dark","curl --user \"$RELAY_KEY:$RELAY_SECRET\" -X POST https://my.webhookrelay.com/v1/outbound/messages \\\n  -H 'Content-Type: application/json' -H \"Idempotency-Key: outbox:$OUTBOX_ID\" \\\n  -d \"{\\\"consumer\\\":\\\"$CUSTOMER_ID\\\",\\\"event_type\\\":\\\"invoice.paid\\\",\\\"payload\\\":$PAYLOAD_JSON}\"\n","bash",[2071],{"type":375,"tag":389,"props":2072,"children":2073},{"__ignoreMap":345},[2074,2132,2168],{"type":375,"tag":800,"props":2075,"children":2076},{"class":802,"line":803},[2077,2082,2087,2092,2097,2102,2107,2112,2117,2122,2127],{"type":375,"tag":800,"props":2078,"children":2079},{"style":854},[2080],{"type":384,"value":2081},"curl",{"type":375,"tag":800,"props":2083,"children":2084},{"style":834},[2085],{"type":384,"value":2086}," --user",{"type":375,"tag":800,"props":2088,"children":2089},{"style":988},[2090],{"type":384,"value":2091}," \"",{"type":375,"tag":800,"props":2093,"children":2094},{"style":823},[2095],{"type":384,"value":2096},"$RELAY_KEY",{"type":375,"tag":800,"props":2098,"children":2099},{"style":988},[2100],{"type":384,"value":2101},":",{"type":375,"tag":800,"props":2103,"children":2104},{"style":823},[2105],{"type":384,"value":2106},"$RELAY_SECRET",{"type":375,"tag":800,"props":2108,"children":2109},{"style":988},[2110],{"type":384,"value":2111},"\"",{"type":375,"tag":800,"props":2113,"children":2114},{"style":834},[2115],{"type":384,"value":2116}," -X",{"type":375,"tag":800,"props":2118,"children":2119},{"style":988},[2120],{"type":384,"value":2121}," POST",{"type":375,"tag":800,"props":2123,"children":2124},{"style":988},[2125],{"type":384,"value":2126}," https://my.webhookrelay.com/v1/outbound/messages",{"type":375,"tag":800,"props":2128,"children":2129},{"style":834},[2130],{"type":384,"value":2131}," \\\n",{"type":375,"tag":800,"props":2133,"children":2134},{"class":802,"line":813},[2135,2140,2145,2150,2155,2160,2164],{"type":375,"tag":800,"props":2136,"children":2137},{"style":834},[2138],{"type":384,"value":2139},"  -H",{"type":375,"tag":800,"props":2141,"children":2142},{"style":988},[2143],{"type":384,"value":2144}," 'Content-Type: application/json'",{"type":375,"tag":800,"props":2146,"children":2147},{"style":834},[2148],{"type":384,"value":2149}," -H",{"type":375,"tag":800,"props":2151,"children":2152},{"style":988},[2153],{"type":384,"value":2154}," \"Idempotency-Key: outbox:",{"type":375,"tag":800,"props":2156,"children":2157},{"style":823},[2158],{"type":384,"value":2159},"$OUTBOX_ID",{"type":375,"tag":800,"props":2161,"children":2162},{"style":988},[2163],{"type":384,"value":2111},{"type":375,"tag":800,"props":2165,"children":2166},{"style":834},[2167],{"type":384,"value":2131},{"type":375,"tag":800,"props":2169,"children":2170},{"class":802,"line":875},[2171,2176,2181,2186,2191,2195,2199,2203,2208,2212,2217,2221,2226,2230,2234,2238,2242,2246,2250,2254,2259,2263,2267,2272],{"type":375,"tag":800,"props":2172,"children":2173},{"style":834},[2174],{"type":384,"value":2175},"  -d",{"type":375,"tag":800,"props":2177,"children":2178},{"style":988},[2179],{"type":384,"value":2180}," \"{",{"type":375,"tag":800,"props":2182,"children":2183},{"style":834},[2184],{"type":384,"value":2185},"\\\"",{"type":375,"tag":800,"props":2187,"children":2188},{"style":988},[2189],{"type":384,"value":2190},"consumer",{"type":375,"tag":800,"props":2192,"children":2193},{"style":834},[2194],{"type":384,"value":2185},{"type":375,"tag":800,"props":2196,"children":2197},{"style":988},[2198],{"type":384,"value":2101},{"type":375,"tag":800,"props":2200,"children":2201},{"style":834},[2202],{"type":384,"value":2185},{"type":375,"tag":800,"props":2204,"children":2205},{"style":823},[2206],{"type":384,"value":2207},"$CUSTOMER_ID",{"type":375,"tag":800,"props":2209,"children":2210},{"style":834},[2211],{"type":384,"value":2185},{"type":375,"tag":800,"props":2213,"children":2214},{"style":988},[2215],{"type":384,"value":2216},",",{"type":375,"tag":800,"props":2218,"children":2219},{"style":834},[2220],{"type":384,"value":2185},{"type":375,"tag":800,"props":2222,"children":2223},{"style":988},[2224],{"type":384,"value":2225},"event_type",{"type":375,"tag":800,"props":2227,"children":2228},{"style":834},[2229],{"type":384,"value":2185},{"type":375,"tag":800,"props":2231,"children":2232},{"style":988},[2233],{"type":384,"value":2101},{"type":375,"tag":800,"props":2235,"children":2236},{"style":834},[2237],{"type":384,"value":2185},{"type":375,"tag":800,"props":2239,"children":2240},{"style":988},[2241],{"type":384,"value":567},{"type":375,"tag":800,"props":2243,"children":2244},{"style":834},[2245],{"type":384,"value":2185},{"type":375,"tag":800,"props":2247,"children":2248},{"style":988},[2249],{"type":384,"value":2216},{"type":375,"tag":800,"props":2251,"children":2252},{"style":834},[2253],{"type":384,"value":2185},{"type":375,"tag":800,"props":2255,"children":2256},{"style":988},[2257],{"type":384,"value":2258},"payload",{"type":375,"tag":800,"props":2260,"children":2261},{"style":834},[2262],{"type":384,"value":2185},{"type":375,"tag":800,"props":2264,"children":2265},{"style":988},[2266],{"type":384,"value":2101},{"type":375,"tag":800,"props":2268,"children":2269},{"style":823},[2270],{"type":384,"value":2271},"$PAYLOAD_JSON",{"type":375,"tag":800,"props":2273,"children":2274},{"style":988},[2275],{"type":384,"value":2276},"}\"\n",{"type":375,"tag":376,"props":2278,"children":2279},{},[2280,2282,2288],{"type":384,"value":2281},"If you used SQS (or another queue) only to feed the delivery worker, you can publish straight from the code that used to send the queue message: the ",{"type":375,"tag":389,"props":2283,"children":2285},{"className":2284},[],[2286],{"type":384,"value":2287},"202",{"type":384,"value":2289}," receipt is durable before delivery begins. Keep the queue if other consumers read it.",{"type":375,"tag":774,"props":2291,"children":2293},{"id":2292},"endpoint-management-in-your-product",[2294],{"type":384,"value":2295},"Endpoint management in your product",{"type":375,"tag":376,"props":2297,"children":2298},{},[2299,2301,2306],{"type":384,"value":2300},"When a customer adds, changes or removes an endpoint in your UI, call the API instead of writing your ",{"type":375,"tag":389,"props":2302,"children":2304},{"className":2303},[],[2305],{"type":384,"value":509},{"type":384,"value":2307}," table:",{"type":375,"tag":786,"props":2309,"children":2310},{},[2311],{"type":375,"tag":790,"props":2312,"children":2314},{"className":792,"code":2313,"language":794,"meta":345,"style":345},"await relay.outbound.consumers.upsert(customer.id, { name: customer.name });\nconst endpoint = await relay.outbound.endpoints.create(customer.id, { url, eventTypes, autoDisable: true });\n// Show endpoint.secret to the customer once; read it again later with relay.outbound.endpoints.revealSecret(endpoint.id).\nawait relay.outbound.endpoints.update(endpoint.id, { url, eventTypes: [\"invoice.paid\", \"invoice.voided\"] });\nawait relay.outbound.endpoints.delete(endpoint.id);\n",[2315],{"type":375,"tag":389,"props":2316,"children":2317},{"__ignoreMap":345},[2318,2340,2385,2393,2432],{"type":375,"tag":800,"props":2319,"children":2320},{"class":802,"line":803},[2321,2325,2330,2335],{"type":375,"tag":800,"props":2322,"children":2323},{"style":817},[2324],{"type":384,"value":1123},{"type":375,"tag":800,"props":2326,"children":2327},{"style":823},[2328],{"type":384,"value":2329}," relay.outbound.consumers.",{"type":375,"tag":800,"props":2331,"children":2332},{"style":854},[2333],{"type":384,"value":2334},"upsert",{"type":375,"tag":800,"props":2336,"children":2337},{"style":823},[2338],{"type":384,"value":2339},"(customer.id, { name: customer.name });\n",{"type":375,"tag":800,"props":2341,"children":2342},{"class":802,"line":813},[2343,2347,2352,2356,2360,2365,2370,2375,2380],{"type":375,"tag":800,"props":2344,"children":2345},{"style":817},[2346],{"type":384,"value":831},{"type":375,"tag":800,"props":2348,"children":2349},{"style":834},[2350],{"type":384,"value":2351}," endpoint",{"type":375,"tag":800,"props":2353,"children":2354},{"style":817},[2355],{"type":384,"value":935},{"type":375,"tag":800,"props":2357,"children":2358},{"style":817},[2359],{"type":384,"value":846},{"type":375,"tag":800,"props":2361,"children":2362},{"style":823},[2363],{"type":384,"value":2364}," relay.outbound.endpoints.",{"type":375,"tag":800,"props":2366,"children":2367},{"style":854},[2368],{"type":384,"value":2369},"create",{"type":375,"tag":800,"props":2371,"children":2372},{"style":823},[2373],{"type":384,"value":2374},"(customer.id, { url, eventTypes, autoDisable: ",{"type":375,"tag":800,"props":2376,"children":2377},{"style":834},[2378],{"type":384,"value":2379},"true",{"type":375,"tag":800,"props":2381,"children":2382},{"style":823},[2383],{"type":384,"value":2384}," });\n",{"type":375,"tag":800,"props":2386,"children":2387},{"class":802,"line":875},[2388],{"type":375,"tag":800,"props":2389,"children":2390},{"style":807},[2391],{"type":384,"value":2392},"// Show endpoint.secret to the customer once; read it again later with relay.outbound.endpoints.revealSecret(endpoint.id).\n",{"type":375,"tag":800,"props":2394,"children":2395},{"class":802,"line":919},[2396,2400,2404,2408,2413,2418,2422,2427],{"type":375,"tag":800,"props":2397,"children":2398},{"style":817},[2399],{"type":384,"value":1123},{"type":375,"tag":800,"props":2401,"children":2402},{"style":823},[2403],{"type":384,"value":2364},{"type":375,"tag":800,"props":2405,"children":2406},{"style":854},[2407],{"type":384,"value":1001},{"type":375,"tag":800,"props":2409,"children":2410},{"style":823},[2411],{"type":384,"value":2412},"(endpoint.id, { url, eventTypes: [",{"type":375,"tag":800,"props":2414,"children":2415},{"style":988},[2416],{"type":384,"value":2417},"\"invoice.paid\"",{"type":375,"tag":800,"props":2419,"children":2420},{"style":823},[2421],{"type":384,"value":725},{"type":375,"tag":800,"props":2423,"children":2424},{"style":988},[2425],{"type":384,"value":2426},"\"invoice.voided\"",{"type":375,"tag":800,"props":2428,"children":2429},{"style":823},[2430],{"type":384,"value":2431},"] });\n",{"type":375,"tag":800,"props":2433,"children":2434},{"class":802,"line":957},[2435,2439,2443,2448],{"type":375,"tag":800,"props":2436,"children":2437},{"style":817},[2438],{"type":384,"value":1123},{"type":375,"tag":800,"props":2440,"children":2441},{"style":823},[2442],{"type":384,"value":2364},{"type":375,"tag":800,"props":2444,"children":2445},{"style":854},[2446],{"type":384,"value":2447},"delete",{"type":375,"tag":800,"props":2449,"children":2450},{"style":823},[2451],{"type":384,"value":2452},"(endpoint.id);\n",{"type":375,"tag":376,"props":2454,"children":2455},{},[2456,2458,2464,2465,2471,2472,2478,2479,2485,2486,2492,2494,2500,2501,2507,2508,2514,2515,2521,2523,2529,2531,2536,2538,2544,2546,2551,2553,2558],{"type":384,"value":2457},"Go: ",{"type":375,"tag":389,"props":2459,"children":2461},{"className":2460},[],[2462],{"type":384,"value":2463},"api.UpsertOutboundConsumer",{"type":384,"value":725},{"type":375,"tag":389,"props":2466,"children":2468},{"className":2467},[],[2469],{"type":384,"value":2470},"api.CreateOutboundEndpoint",{"type":384,"value":725},{"type":375,"tag":389,"props":2473,"children":2475},{"className":2474},[],[2476],{"type":384,"value":2477},"api.UpdateOutboundEndpoint",{"type":384,"value":725},{"type":375,"tag":389,"props":2480,"children":2482},{"className":2481},[],[2483],{"type":384,"value":2484},"api.DeleteOutboundEndpoint",{"type":384,"value":725},{"type":375,"tag":389,"props":2487,"children":2489},{"className":2488},[],[2490],{"type":384,"value":2491},"api.RevealOutboundEndpointSecret",{"type":384,"value":2493},". MCP: ",{"type":375,"tag":389,"props":2495,"children":2497},{"className":2496},[],[2498],{"type":384,"value":2499},"upsert_outbound_consumer",{"type":384,"value":725},{"type":375,"tag":389,"props":2502,"children":2504},{"className":2503},[],[2505],{"type":384,"value":2506},"create_outbound_endpoint",{"type":384,"value":725},{"type":375,"tag":389,"props":2509,"children":2511},{"className":2510},[],[2512],{"type":384,"value":2513},"update_outbound_endpoint",{"type":384,"value":725},{"type":375,"tag":389,"props":2516,"children":2518},{"className":2517},[],[2519],{"type":384,"value":2520},"reveal_outbound_endpoint_secret",{"type":384,"value":2522},". To bring an existing secret along, pass ",{"type":375,"tag":389,"props":2524,"children":2526},{"className":2525},[],[2527],{"type":384,"value":2528},"secret",{"type":384,"value":2530}," to ",{"type":375,"tag":389,"props":2532,"children":2534},{"className":2533},[],[2535],{"type":384,"value":2506},{"type":384,"value":2537}," or the REST call in the ",{"type":375,"tag":403,"props":2539,"children":2541},{"href":2540},"#import-script",[2542],{"type":384,"value":2543},"import script",{"type":384,"value":2545},", or paste it into the ",{"type":375,"tag":380,"props":2547,"children":2548},{},[2549],{"type":384,"value":2550},"Existing signing secret",{"type":384,"value":2552}," field of the dashboard's ",{"type":375,"tag":380,"props":2554,"children":2555},{},[2556],{"type":384,"value":2557},"Add endpoint",{"type":384,"value":2559}," dialog.",{"type":375,"tag":427,"props":2561,"children":2563},{"id":2562},"signature-changes-for-your-customers",[2564],{"type":384,"value":2565},"Signature changes for your customers",{"type":375,"tag":376,"props":2567,"children":2568},{},[2569,2571,2577,2579,2584],{"type":384,"value":2570},"Most homegrown senders sign with something like ",{"type":375,"tag":389,"props":2572,"children":2574},{"className":2573},[],[2575],{"type":384,"value":2576},"X-Signature: sha256=\u003Chex HMAC of the body>",{"type":384,"value":2578},". The Outbound Gateway uses ",{"type":375,"tag":403,"props":2580,"children":2582},{"href":2581},"/docs/outbound/receiving#verify-the-signature",[2583],{"type":384,"value":354},{"type":384,"value":2101},{"type":375,"tag":434,"props":2586,"children":2587},{},[2588,2606],{"type":375,"tag":438,"props":2589,"children":2590},{},[2591],{"type":375,"tag":442,"props":2592,"children":2593},{},[2594,2597,2602],{"type":375,"tag":446,"props":2595,"children":2596},{},[],{"type":375,"tag":446,"props":2598,"children":2599},{},[2600],{"type":384,"value":2601},"Typical homegrown",{"type":375,"tag":446,"props":2603,"children":2604},{},[2605],{"type":384,"value":455},{"type":375,"tag":462,"props":2607,"children":2608},{},[2609,2637,2659,2685],{"type":375,"tag":442,"props":2610,"children":2611},{},[2612,2617,2628],{"type":375,"tag":469,"props":2613,"children":2614},{},[2615],{"type":384,"value":2616},"Signature header",{"type":375,"tag":469,"props":2618,"children":2619},{},[2620,2626],{"type":375,"tag":389,"props":2621,"children":2623},{"className":2622},[],[2624],{"type":384,"value":2625},"X-Signature",{"type":384,"value":2627}," (or similar)",{"type":375,"tag":469,"props":2629,"children":2630},{},[2631],{"type":375,"tag":389,"props":2632,"children":2634},{"className":2633},[],[2635],{"type":384,"value":2636},"webhook-signature: v1,\u003Cbase64>",{"type":375,"tag":442,"props":2638,"children":2639},{},[2640,2645,2650],{"type":375,"tag":469,"props":2641,"children":2642},{},[2643],{"type":384,"value":2644},"Signed content",{"type":375,"tag":469,"props":2646,"children":2647},{},[2648],{"type":384,"value":2649},"The body, sometimes with a timestamp",{"type":375,"tag":469,"props":2651,"children":2652},{},[2653],{"type":375,"tag":389,"props":2654,"children":2656},{"className":2655},[],[2657],{"type":384,"value":2658},"{webhook-id}.{webhook-timestamp}.{body}",{"type":375,"tag":442,"props":2660,"children":2661},{},[2662,2667,2672],{"type":375,"tag":469,"props":2663,"children":2664},{},[2665],{"type":384,"value":2666},"Secret",{"type":375,"tag":469,"props":2668,"children":2669},{},[2670],{"type":384,"value":2671},"One you generated",{"type":375,"tag":469,"props":2673,"children":2674},{},[2675,2677,2683],{"type":384,"value":2676},"Imported when it fits the format, otherwise a new ",{"type":375,"tag":389,"props":2678,"children":2680},{"className":2679},[],[2681],{"type":384,"value":2682},"whsec_…",{"type":384,"value":2684}," per endpoint",{"type":375,"tag":442,"props":2686,"children":2687},{},[2688,2693,2698],{"type":375,"tag":469,"props":2689,"children":2690},{},[2691],{"type":384,"value":2692},"ID header",{"type":375,"tag":469,"props":2694,"children":2695},{},[2696],{"type":384,"value":2697},"Often none",{"type":375,"tag":469,"props":2699,"children":2700},{},[2701,2707],{"type":375,"tag":389,"props":2702,"children":2704},{"className":2703},[],[2705],{"type":384,"value":2706},"webhook-id",{"type":384,"value":2708}," (stable across retries)",{"type":375,"tag":376,"props":2710,"children":2711},{},[2712,2717,2719,2725,2726,2732,2733,2739,2740,2746,2747,2753,2755,2760,2762,2768,2769,2775,2777,2782],{"type":375,"tag":380,"props":2713,"children":2714},{},[2715],{"type":384,"value":2716},"Which secrets import.",{"type":384,"value":2718}," The Outbound Gateway accepts an existing secret of 32 to 100 standard base64 characters (",{"type":375,"tag":389,"props":2720,"children":2722},{"className":2721},[],[2723],{"type":384,"value":2724},"A-Z",{"type":384,"value":725},{"type":375,"tag":389,"props":2727,"children":2729},{"className":2728},[],[2730],{"type":384,"value":2731},"a-z",{"type":384,"value":725},{"type":375,"tag":389,"props":2734,"children":2736},{"className":2735},[],[2737],{"type":384,"value":2738},"0-9",{"type":384,"value":725},{"type":375,"tag":389,"props":2741,"children":2743},{"className":2742},[],[2744],{"type":384,"value":2745},"+",{"type":384,"value":725},{"type":375,"tag":389,"props":2748,"children":2750},{"className":2749},[],[2751],{"type":384,"value":2752},"/",{"type":384,"value":2754},", padded or not), decoding to a key of at least 24 bytes, with or without the ",{"type":375,"tag":389,"props":2756,"children":2758},{"className":2757},[],[2759],{"type":384,"value":551},{"type":384,"value":2761}," prefix. Hex secrets of 32 or more characters usually fit, since hex digits are valid base64 characters. URL-safe base64 (",{"type":375,"tag":389,"props":2763,"children":2765},{"className":2764},[],[2766],{"type":384,"value":2767},"-",{"type":384,"value":725},{"type":375,"tag":389,"props":2770,"children":2772},{"className":2771},[],[2773],{"type":384,"value":2774},"_",{"type":384,"value":2776},"), UUIDs with hyphens and short keys don't fit. Those endpoints get a new ",{"type":375,"tag":389,"props":2778,"children":2780},{"className":2779},[],[2781],{"type":384,"value":551},{"type":384,"value":2783}," secret.",{"type":375,"tag":376,"props":2785,"children":2786},{},[2787,2792,2794,2800,2802,2808],{"type":375,"tag":380,"props":2788,"children":2789},{},[2790],{"type":384,"value":2791},"What an imported secret keeps.",{"type":384,"value":2793}," Standard Webhooks uses the base64-decoded secret as the HMAC key. Many homegrown senders use the raw secret string as the key instead (like ",{"type":375,"tag":389,"props":2795,"children":2797},{"className":2796},[],[2798],{"type":384,"value":2799},"createHmac(\"sha256\", ep.secret)",{"type":384,"value":2801}," above). An imported secret therefore keeps the same ",{"type":375,"tag":2803,"props":2804,"children":2805},"em",{},[2806],{"type":384,"value":2807},"value",{"type":384,"value":2809}," in your customer's configuration, and it verifies because their receiver switches to a Standard Webhooks library that decodes it the same way Webhook Relay does. It does not make your old HMAC code verify Webhook Relay deliveries.",{"type":375,"tag":376,"props":2811,"children":2812},{},[2813],{"type":384,"value":2814},"So:",{"type":375,"tag":2816,"props":2817,"children":2818},"ul",{},[2819,2830,2840],{"type":375,"tag":2820,"props":2821,"children":2822},"li",{},[2823,2828],{"type":375,"tag":380,"props":2824,"children":2825},{},[2826],{"type":384,"value":2827},"You already sign with Standard Webhooks and your secrets import:",{"type":384,"value":2829}," receivers change nothing.",{"type":375,"tag":2820,"props":2831,"children":2832},{},[2833,2838],{"type":375,"tag":380,"props":2834,"children":2835},{},[2836],{"type":384,"value":2837},"You already sign with Standard Webhooks but a secret doesn't import:",{"type":384,"value":2839}," that customer switches to the new secret.",{"type":375,"tag":2820,"props":2841,"children":2842},{},[2843,2848,2850,2855],{"type":375,"tag":380,"props":2844,"children":2845},{},[2846],{"type":384,"value":2847},"Any other scheme:",{"type":384,"value":2849}," send your customers the ",{"type":375,"tag":403,"props":2851,"children":2852},{"href":71},[2853],{"type":384,"value":2854},"receiving guide",{"type":384,"value":2856}," and have their receiver accept either scheme during the window. With an imported secret, both checks below read the same secret value.",{"type":375,"tag":786,"props":2858,"children":2859},{},[2860],{"type":375,"tag":790,"props":2861,"children":2865},{"className":2862,"code":2863,"language":2864,"meta":345,"style":345},"language-js shiki shiki-themes github-dark","import crypto from \"node:crypto\";\nimport { verifyWebhook } from \"./verify-webhook.js\"; // Standard Webhooks check from the receiving guide\n\nexport function verify(rawBody, headers) {\n  if (headers[\"webhook-signature\"]) {\n    // With an imported secret, WEBHOOK_SECRET_RELAY is the same value as WEBHOOK_SECRET_OLD.\n    return verifyWebhook(rawBody, headers, process.env.WEBHOOK_SECRET_RELAY);\n  }\n  // Your current scheme, unchanged. This example: X-Signature: \u003Chex HMAC-SHA256 of the body>.\n  const received = Buffer.from(headers[\"x-signature\"] ?? \"\", \"hex\");\n  const expected = crypto.createHmac(\"sha256\", process.env.WEBHOOK_SECRET_OLD).update(rawBody).digest();\n  return received.length === expected.length && crypto.timingSafeEqual(received, expected);\n}\n","js",[2866],{"type":375,"tag":389,"props":2867,"children":2868},{"__ignoreMap":345},[2869,2894,2925,2932,2974,2997,3005,3032,3039,3047,3109,3174,3225],{"type":375,"tag":800,"props":2870,"children":2871},{"class":802,"line":803},[2872,2876,2881,2885,2890],{"type":375,"tag":800,"props":2873,"children":2874},{"style":817},[2875],{"type":384,"value":1211},{"type":375,"tag":800,"props":2877,"children":2878},{"style":823},[2879],{"type":384,"value":2880}," crypto ",{"type":375,"tag":800,"props":2882,"children":2883},{"style":817},[2884],{"type":384,"value":1221},{"type":375,"tag":800,"props":2886,"children":2887},{"style":988},[2888],{"type":384,"value":2889}," \"node:crypto\"",{"type":375,"tag":800,"props":2891,"children":2892},{"style":823},[2893],{"type":384,"value":1231},{"type":375,"tag":800,"props":2895,"children":2896},{"class":802,"line":813},[2897,2901,2906,2910,2915,2920],{"type":375,"tag":800,"props":2898,"children":2899},{"style":817},[2900],{"type":384,"value":1211},{"type":375,"tag":800,"props":2902,"children":2903},{"style":823},[2904],{"type":384,"value":2905}," { verifyWebhook } ",{"type":375,"tag":800,"props":2907,"children":2908},{"style":817},[2909],{"type":384,"value":1221},{"type":375,"tag":800,"props":2911,"children":2912},{"style":988},[2913],{"type":384,"value":2914}," \"./verify-webhook.js\"",{"type":375,"tag":800,"props":2916,"children":2917},{"style":823},[2918],{"type":384,"value":2919},"; ",{"type":375,"tag":800,"props":2921,"children":2922},{"style":807},[2923],{"type":384,"value":2924},"// Standard Webhooks check from the receiving guide\n",{"type":375,"tag":800,"props":2926,"children":2927},{"class":802,"line":875},[2928],{"type":375,"tag":800,"props":2929,"children":2930},{"emptyLinePlaceholder":1237},[2931],{"type":384,"value":1240},{"type":375,"tag":800,"props":2933,"children":2934},{"class":802,"line":919},[2935,2940,2945,2950,2954,2960,2964,2969],{"type":375,"tag":800,"props":2936,"children":2937},{"style":817},[2938],{"type":384,"value":2939},"export",{"type":375,"tag":800,"props":2941,"children":2942},{"style":817},[2943],{"type":384,"value":2944}," function",{"type":375,"tag":800,"props":2946,"children":2947},{"style":854},[2948],{"type":384,"value":2949}," verify",{"type":375,"tag":800,"props":2951,"children":2952},{"style":823},[2953],{"type":384,"value":862},{"type":375,"tag":800,"props":2955,"children":2957},{"style":2956},"--shiki-default:#FFAB70",[2958],{"type":384,"value":2959},"rawBody",{"type":375,"tag":800,"props":2961,"children":2962},{"style":823},[2963],{"type":384,"value":725},{"type":375,"tag":800,"props":2965,"children":2966},{"style":2956},[2967],{"type":384,"value":2968},"headers",{"type":375,"tag":800,"props":2970,"children":2971},{"style":823},[2972],{"type":384,"value":2973},") {\n",{"type":375,"tag":800,"props":2975,"children":2976},{"class":802,"line":957},[2977,2982,2987,2992],{"type":375,"tag":800,"props":2978,"children":2979},{"style":817},[2980],{"type":384,"value":2981},"  if",{"type":375,"tag":800,"props":2983,"children":2984},{"style":823},[2985],{"type":384,"value":2986}," (headers[",{"type":375,"tag":800,"props":2988,"children":2989},{"style":988},[2990],{"type":384,"value":2991},"\"webhook-signature\"",{"type":375,"tag":800,"props":2993,"children":2994},{"style":823},[2995],{"type":384,"value":2996},"]) {\n",{"type":375,"tag":800,"props":2998,"children":2999},{"class":802,"line":1028},[3000],{"type":375,"tag":800,"props":3001,"children":3002},{"style":807},[3003],{"type":384,"value":3004},"    // With an imported secret, WEBHOOK_SECRET_RELAY is the same value as WEBHOOK_SECRET_OLD.\n",{"type":375,"tag":800,"props":3006,"children":3007},{"class":802,"line":1098},[3008,3013,3018,3023,3028],{"type":375,"tag":800,"props":3009,"children":3010},{"style":817},[3011],{"type":384,"value":3012},"    return",{"type":375,"tag":800,"props":3014,"children":3015},{"style":854},[3016],{"type":384,"value":3017}," verifyWebhook",{"type":375,"tag":800,"props":3019,"children":3020},{"style":823},[3021],{"type":384,"value":3022},"(rawBody, headers, process.env.",{"type":375,"tag":800,"props":3024,"children":3025},{"style":834},[3026],{"type":384,"value":3027},"WEBHOOK_SECRET_RELAY",{"type":375,"tag":800,"props":3029,"children":3030},{"style":823},[3031],{"type":384,"value":1025},{"type":375,"tag":800,"props":3033,"children":3034},{"class":802,"line":1150},[3035],{"type":375,"tag":800,"props":3036,"children":3037},{"style":823},[3038],{"type":384,"value":1156},{"type":375,"tag":800,"props":3040,"children":3041},{"class":802,"line":1159},[3042],{"type":375,"tag":800,"props":3043,"children":3044},{"style":807},[3045],{"type":384,"value":3046},"  // Your current scheme, unchanged. This example: X-Signature: \u003Chex HMAC-SHA256 of the body>.\n",{"type":375,"tag":800,"props":3048,"children":3049},{"class":802,"line":1182},[3050,3055,3060,3064,3069,3073,3078,3082,3087,3092,3097,3101,3105],{"type":375,"tag":800,"props":3051,"children":3052},{"style":817},[3053],{"type":384,"value":3054},"  const",{"type":375,"tag":800,"props":3056,"children":3057},{"style":834},[3058],{"type":384,"value":3059}," received",{"type":375,"tag":800,"props":3061,"children":3062},{"style":817},[3063],{"type":384,"value":935},{"type":375,"tag":800,"props":3065,"children":3066},{"style":823},[3067],{"type":384,"value":3068}," Buffer.",{"type":375,"tag":800,"props":3070,"children":3071},{"style":854},[3072],{"type":384,"value":1221},{"type":375,"tag":800,"props":3074,"children":3075},{"style":823},[3076],{"type":384,"value":3077},"(headers[",{"type":375,"tag":800,"props":3079,"children":3080},{"style":988},[3081],{"type":384,"value":1090},{"type":375,"tag":800,"props":3083,"children":3084},{"style":823},[3085],{"type":384,"value":3086},"] ",{"type":375,"tag":800,"props":3088,"children":3089},{"style":817},[3090],{"type":384,"value":3091},"??",{"type":375,"tag":800,"props":3093,"children":3094},{"style":988},[3095],{"type":384,"value":3096}," \"\"",{"type":375,"tag":800,"props":3098,"children":3099},{"style":823},[3100],{"type":384,"value":725},{"type":375,"tag":800,"props":3102,"children":3103},{"style":988},[3104],{"type":384,"value":1020},{"type":375,"tag":800,"props":3106,"children":3107},{"style":823},[3108],{"type":384,"value":1025},{"type":375,"tag":800,"props":3110,"children":3111},{"class":802,"line":1442},[3112,3116,3121,3125,3129,3133,3137,3141,3146,3151,3156,3160,3165,3169],{"type":375,"tag":800,"props":3113,"children":3114},{"style":817},[3115],{"type":384,"value":3054},{"type":375,"tag":800,"props":3117,"children":3118},{"style":834},[3119],{"type":384,"value":3120}," expected",{"type":375,"tag":800,"props":3122,"children":3123},{"style":817},[3124],{"type":384,"value":935},{"type":375,"tag":800,"props":3126,"children":3127},{"style":823},[3128],{"type":384,"value":976},{"type":375,"tag":800,"props":3130,"children":3131},{"style":854},[3132],{"type":384,"value":981},{"type":375,"tag":800,"props":3134,"children":3135},{"style":823},[3136],{"type":384,"value":862},{"type":375,"tag":800,"props":3138,"children":3139},{"style":988},[3140],{"type":384,"value":991},{"type":375,"tag":800,"props":3142,"children":3143},{"style":823},[3144],{"type":384,"value":3145},", process.env.",{"type":375,"tag":800,"props":3147,"children":3148},{"style":834},[3149],{"type":384,"value":3150},"WEBHOOK_SECRET_OLD",{"type":375,"tag":800,"props":3152,"children":3153},{"style":823},[3154],{"type":384,"value":3155},").",{"type":375,"tag":800,"props":3157,"children":3158},{"style":854},[3159],{"type":384,"value":1001},{"type":375,"tag":800,"props":3161,"children":3162},{"style":823},[3163],{"type":384,"value":3164},"(rawBody).",{"type":375,"tag":800,"props":3166,"children":3167},{"style":854},[3168],{"type":384,"value":1011},{"type":375,"tag":800,"props":3170,"children":3171},{"style":823},[3172],{"type":384,"value":3173},"();\n",{"type":375,"tag":800,"props":3175,"children":3176},{"class":802,"line":1695},[3177,3182,3187,3192,3197,3202,3206,3211,3215,3220],{"type":375,"tag":800,"props":3178,"children":3179},{"style":817},[3180],{"type":384,"value":3181},"  return",{"type":375,"tag":800,"props":3183,"children":3184},{"style":823},[3185],{"type":384,"value":3186}," received.",{"type":375,"tag":800,"props":3188,"children":3189},{"style":834},[3190],{"type":384,"value":3191},"length",{"type":375,"tag":800,"props":3193,"children":3194},{"style":817},[3195],{"type":384,"value":3196}," ===",{"type":375,"tag":800,"props":3198,"children":3199},{"style":823},[3200],{"type":384,"value":3201}," expected.",{"type":375,"tag":800,"props":3203,"children":3204},{"style":834},[3205],{"type":384,"value":3191},{"type":375,"tag":800,"props":3207,"children":3208},{"style":817},[3209],{"type":384,"value":3210}," &&",{"type":375,"tag":800,"props":3212,"children":3213},{"style":823},[3214],{"type":384,"value":976},{"type":375,"tag":800,"props":3216,"children":3217},{"style":854},[3218],{"type":384,"value":3219},"timingSafeEqual",{"type":375,"tag":800,"props":3221,"children":3222},{"style":823},[3223],{"type":384,"value":3224},"(received, expected);\n",{"type":375,"tag":800,"props":3226,"children":3227},{"class":802,"line":1733},[3228],{"type":375,"tag":800,"props":3229,"children":3230},{"style":823},[3231],{"type":384,"value":1188},{"type":375,"tag":376,"props":3233,"children":3234},{},[3235],{"type":384,"value":3236},"Webhook Relay's message IDs differ from any IDs you sent before. Include your own event ID in the payload if receivers must deduplicate across both senders.",{"type":375,"tag":427,"props":3238,"children":3240},{"id":3239},"cutover-plan",[3241],{"type":384,"value":3242},"Cutover plan",{"type":375,"tag":3244,"props":3245,"children":3246},"ol",{},[3247,3286,3310,3340,3364,3380],{"type":375,"tag":2820,"props":3248,"children":3249},{},[3250,3255,3257,3261,3263,3269,3271,3277,3279,3284],{"type":375,"tag":380,"props":3251,"children":3252},{},[3253],{"type":384,"value":3254},"Import.",{"type":384,"value":3256}," Run the ",{"type":375,"tag":403,"props":3258,"children":3259},{"href":2540},[3260],{"type":384,"value":2543},{"type":384,"value":3262}," with ",{"type":375,"tag":389,"props":3264,"children":3266},{"className":3265},[],[3267],{"type":384,"value":3268},"DRY_RUN=true",{"type":384,"value":3270},", review the report, then with ",{"type":375,"tag":389,"props":3272,"children":3274},{"className":3273},[],[3275],{"type":384,"value":3276},"DRY_RUN=false",{"type":384,"value":3278},". It creates event types, one consumer per customer and an endpoint per row in your endpoints table, passing each row's existing secret when it fits the format, then pauses every new endpoint. The report lists, by endpoint ID only, the endpoints that got a new secret. ",{"type":375,"tag":2803,"props":3280,"children":3281},{},[3282],{"type":384,"value":3283},"Rollback:",{"type":384,"value":3285}," nothing is live. Leave the endpoints paused or delete them.",{"type":375,"tag":2820,"props":3287,"children":3288},{},[3289,3294,3296,3302,3304,3308],{"type":375,"tag":380,"props":3290,"children":3291},{},[3292],{"type":384,"value":3293},"Shadow publish.",{"type":384,"value":3295}," Make the worker publish each outbox row to Webhook Relay in addition to its own delivery, behind a feature flag. Your worker still delivers. Webhook Relay records each message as ",{"type":375,"tag":389,"props":3297,"children":3299},{"className":3298},[],[3300],{"type":384,"value":3301},"rejected",{"type":384,"value":3303}," on the paused endpoints. ",{"type":375,"tag":2803,"props":3305,"children":3306},{},[3307],{"type":384,"value":3283},{"type":384,"value":3309}," turn the flag off.",{"type":375,"tag":2820,"props":3311,"children":3312},{},[3313,3318,3320,3324,3326,3332,3334,3338],{"type":375,"tag":380,"props":3314,"children":3315},{},[3316],{"type":384,"value":3317},"Receiver changes, only where needed.",{"type":384,"value":3319}," Skip this for customers whose secret was imported if you already sign with Standard Webhooks. Otherwise send the ",{"type":375,"tag":403,"props":3321,"children":3322},{"href":71},[3323],{"type":384,"value":2854},{"type":384,"value":3325}," and have the receiver accept either scheme. Customers whose secret didn't import also need their new secret: show it in your product (",{"type":375,"tag":389,"props":3327,"children":3329},{"className":3328},[],[3330],{"type":384,"value":3331},"POST /v1/outbound/endpoints/{id}/secret/reveal",{"type":384,"value":3333},"). ",{"type":375,"tag":2803,"props":3335,"children":3336},{},[3337],{"type":384,"value":3283},{"type":384,"value":3339}," nothing to undo: receivers still verify your current scheme.",{"type":375,"tag":2820,"props":3341,"children":3342},{},[3343,3348,3350,3356,3358,3362],{"type":375,"tag":380,"props":3344,"children":3345},{},[3346],{"type":384,"value":3347},"Switch, one customer at a time",{"type":384,"value":3349}," (needs approval). Add a per-customer flag. For a switched customer, resume their Webhook Relay endpoints and make your worker skip its own delivery for them. Don't delete endpoint rows, and don't call ",{"type":375,"tag":389,"props":3351,"children":3353},{"className":3352},[],[3354],{"type":384,"value":3355},"replay-missing",{"type":384,"value":3357}," for the shadow period. Start with an internal test customer. ",{"type":375,"tag":2803,"props":3359,"children":3360},{},[3361],{"type":384,"value":3283},{"type":384,"value":3363}," pause the Webhook Relay endpoints and clear the flag so your worker delivers again.",{"type":375,"tag":2820,"props":3365,"children":3366},{},[3367,3372,3374,3378],{"type":375,"tag":380,"props":3368,"children":3369},{},[3370],{"type":384,"value":3371},"End dual delivery.",{"type":384,"value":3373}," When every customer is switched and your worker has no retries left, remove the worker's HTTP delivery, retry scheduling and signing code. Keep the outbox if you publish from it. ",{"type":375,"tag":2803,"props":3375,"children":3376},{},[3377],{"type":384,"value":3283},{"type":384,"value":3379}," restore the worker code from version control; the endpoint rows are still there.",{"type":375,"tag":2820,"props":3381,"children":3382},{},[3383,3388],{"type":375,"tag":380,"props":3384,"children":3385},{},[3386],{"type":384,"value":3387},"Decommission.",{"type":384,"value":3389}," A human archives the old delivery tables after exporting any history they need.",{"type":375,"tag":427,"props":3391,"children":3393},{"id":3392},"verify",[3394],{"type":384,"value":3395},"Verify",{"type":375,"tag":3244,"props":3397,"children":3398},{},[3399,3702,3722,3735,3762],{"type":375,"tag":2820,"props":3400,"children":3401},{},[3402,3404,3410,3412],{"type":384,"value":3403},"Create a free ",{"type":375,"tag":403,"props":3405,"children":3407},{"href":3406},"/webhook-bin",[3408],{"type":384,"value":3409},"Webhook Bin",{"type":384,"value":3411}," and add it as an endpoint of a test consumer:",{"type":375,"tag":790,"props":3413,"children":3415},{"className":2067,"code":3414,"language":2069,"meta":345,"style":345},"BIN=$(curl -s -X POST https://bin.webhookrelay.com/v1/bins | jq -r .id)\ncurl --user \"$RELAY_KEY:$RELAY_SECRET\" -X PUT https://my.webhookrelay.com/v1/outbound/consumers/migration-test \\\n  -H 'Content-Type: application/json' -d '{\"name\":\"Migration test\"}'\ncurl --user \"$RELAY_KEY:$RELAY_SECRET\" -X POST https://my.webhookrelay.com/v1/outbound/consumers/migration-test/endpoints \\\n  -H 'Content-Type: application/json' \\\n  -d \"{\\\"url\\\":\\\"https://bin.webhookrelay.com/v1/webhooks/$BIN\\\",\\\"event_types\\\":[\\\"*\\\"]}\"\n",[3416],{"type":375,"tag":389,"props":3417,"children":3418},{"__ignoreMap":345},[3419,3484,3533,3554,3602,3617],{"type":375,"tag":800,"props":3420,"children":3421},{"class":802,"line":803},[3422,3427,3432,3437,3441,3446,3450,3454,3459,3464,3469,3474,3479],{"type":375,"tag":800,"props":3423,"children":3424},{"style":823},[3425],{"type":384,"value":3426},"BIN",{"type":375,"tag":800,"props":3428,"children":3429},{"style":817},[3430],{"type":384,"value":3431},"=",{"type":375,"tag":800,"props":3433,"children":3434},{"style":823},[3435],{"type":384,"value":3436},"$(",{"type":375,"tag":800,"props":3438,"children":3439},{"style":854},[3440],{"type":384,"value":2081},{"type":375,"tag":800,"props":3442,"children":3443},{"style":834},[3444],{"type":384,"value":3445}," -s",{"type":375,"tag":800,"props":3447,"children":3448},{"style":834},[3449],{"type":384,"value":2116},{"type":375,"tag":800,"props":3451,"children":3452},{"style":988},[3453],{"type":384,"value":2121},{"type":375,"tag":800,"props":3455,"children":3456},{"style":988},[3457],{"type":384,"value":3458}," https://bin.webhookrelay.com/v1/bins",{"type":375,"tag":800,"props":3460,"children":3461},{"style":817},[3462],{"type":384,"value":3463}," |",{"type":375,"tag":800,"props":3465,"children":3466},{"style":854},[3467],{"type":384,"value":3468}," jq",{"type":375,"tag":800,"props":3470,"children":3471},{"style":834},[3472],{"type":384,"value":3473}," -r",{"type":375,"tag":800,"props":3475,"children":3476},{"style":988},[3477],{"type":384,"value":3478}," .id",{"type":375,"tag":800,"props":3480,"children":3481},{"style":823},[3482],{"type":384,"value":3483},")\n",{"type":375,"tag":800,"props":3485,"children":3486},{"class":802,"line":813},[3487,3491,3495,3499,3503,3507,3511,3515,3519,3524,3529],{"type":375,"tag":800,"props":3488,"children":3489},{"style":854},[3490],{"type":384,"value":2081},{"type":375,"tag":800,"props":3492,"children":3493},{"style":834},[3494],{"type":384,"value":2086},{"type":375,"tag":800,"props":3496,"children":3497},{"style":988},[3498],{"type":384,"value":2091},{"type":375,"tag":800,"props":3500,"children":3501},{"style":823},[3502],{"type":384,"value":2096},{"type":375,"tag":800,"props":3504,"children":3505},{"style":988},[3506],{"type":384,"value":2101},{"type":375,"tag":800,"props":3508,"children":3509},{"style":823},[3510],{"type":384,"value":2106},{"type":375,"tag":800,"props":3512,"children":3513},{"style":988},[3514],{"type":384,"value":2111},{"type":375,"tag":800,"props":3516,"children":3517},{"style":834},[3518],{"type":384,"value":2116},{"type":375,"tag":800,"props":3520,"children":3521},{"style":988},[3522],{"type":384,"value":3523}," PUT",{"type":375,"tag":800,"props":3525,"children":3526},{"style":988},[3527],{"type":384,"value":3528}," https://my.webhookrelay.com/v1/outbound/consumers/migration-test",{"type":375,"tag":800,"props":3530,"children":3531},{"style":834},[3532],{"type":384,"value":2131},{"type":375,"tag":800,"props":3534,"children":3535},{"class":802,"line":875},[3536,3540,3544,3549],{"type":375,"tag":800,"props":3537,"children":3538},{"style":834},[3539],{"type":384,"value":2139},{"type":375,"tag":800,"props":3541,"children":3542},{"style":988},[3543],{"type":384,"value":2144},{"type":375,"tag":800,"props":3545,"children":3546},{"style":834},[3547],{"type":384,"value":3548}," -d",{"type":375,"tag":800,"props":3550,"children":3551},{"style":988},[3552],{"type":384,"value":3553}," '{\"name\":\"Migration test\"}'\n",{"type":375,"tag":800,"props":3555,"children":3556},{"class":802,"line":919},[3557,3561,3565,3569,3573,3577,3581,3585,3589,3593,3598],{"type":375,"tag":800,"props":3558,"children":3559},{"style":854},[3560],{"type":384,"value":2081},{"type":375,"tag":800,"props":3562,"children":3563},{"style":834},[3564],{"type":384,"value":2086},{"type":375,"tag":800,"props":3566,"children":3567},{"style":988},[3568],{"type":384,"value":2091},{"type":375,"tag":800,"props":3570,"children":3571},{"style":823},[3572],{"type":384,"value":2096},{"type":375,"tag":800,"props":3574,"children":3575},{"style":988},[3576],{"type":384,"value":2101},{"type":375,"tag":800,"props":3578,"children":3579},{"style":823},[3580],{"type":384,"value":2106},{"type":375,"tag":800,"props":3582,"children":3583},{"style":988},[3584],{"type":384,"value":2111},{"type":375,"tag":800,"props":3586,"children":3587},{"style":834},[3588],{"type":384,"value":2116},{"type":375,"tag":800,"props":3590,"children":3591},{"style":988},[3592],{"type":384,"value":2121},{"type":375,"tag":800,"props":3594,"children":3595},{"style":988},[3596],{"type":384,"value":3597}," https://my.webhookrelay.com/v1/outbound/consumers/migration-test/endpoints",{"type":375,"tag":800,"props":3599,"children":3600},{"style":834},[3601],{"type":384,"value":2131},{"type":375,"tag":800,"props":3603,"children":3604},{"class":802,"line":957},[3605,3609,3613],{"type":375,"tag":800,"props":3606,"children":3607},{"style":834},[3608],{"type":384,"value":2139},{"type":375,"tag":800,"props":3610,"children":3611},{"style":988},[3612],{"type":384,"value":2144},{"type":375,"tag":800,"props":3614,"children":3615},{"style":834},[3616],{"type":384,"value":2131},{"type":375,"tag":800,"props":3618,"children":3619},{"class":802,"line":1028},[3620,3624,3628,3632,3637,3641,3645,3649,3654,3659,3663,3667,3671,3675,3679,3684,3688,3693,3697],{"type":375,"tag":800,"props":3621,"children":3622},{"style":834},[3623],{"type":384,"value":2175},{"type":375,"tag":800,"props":3625,"children":3626},{"style":988},[3627],{"type":384,"value":2180},{"type":375,"tag":800,"props":3629,"children":3630},{"style":834},[3631],{"type":384,"value":2185},{"type":375,"tag":800,"props":3633,"children":3634},{"style":988},[3635],{"type":384,"value":3636},"url",{"type":375,"tag":800,"props":3638,"children":3639},{"style":834},[3640],{"type":384,"value":2185},{"type":375,"tag":800,"props":3642,"children":3643},{"style":988},[3644],{"type":384,"value":2101},{"type":375,"tag":800,"props":3646,"children":3647},{"style":834},[3648],{"type":384,"value":2185},{"type":375,"tag":800,"props":3650,"children":3651},{"style":988},[3652],{"type":384,"value":3653},"https://bin.webhookrelay.com/v1/webhooks/",{"type":375,"tag":800,"props":3655,"children":3656},{"style":823},[3657],{"type":384,"value":3658},"$BIN",{"type":375,"tag":800,"props":3660,"children":3661},{"style":834},[3662],{"type":384,"value":2185},{"type":375,"tag":800,"props":3664,"children":3665},{"style":988},[3666],{"type":384,"value":2216},{"type":375,"tag":800,"props":3668,"children":3669},{"style":834},[3670],{"type":384,"value":2185},{"type":375,"tag":800,"props":3672,"children":3673},{"style":988},[3674],{"type":384,"value":527},{"type":375,"tag":800,"props":3676,"children":3677},{"style":834},[3678],{"type":384,"value":2185},{"type":375,"tag":800,"props":3680,"children":3681},{"style":988},[3682],{"type":384,"value":3683},":[",{"type":375,"tag":800,"props":3685,"children":3686},{"style":834},[3687],{"type":384,"value":2185},{"type":375,"tag":800,"props":3689,"children":3690},{"style":988},[3691],{"type":384,"value":3692},"*",{"type":375,"tag":800,"props":3694,"children":3695},{"style":834},[3696],{"type":384,"value":2185},{"type":375,"tag":800,"props":3698,"children":3699},{"style":988},[3700],{"type":384,"value":3701},"]}\"\n",{"type":375,"tag":2820,"props":3703,"children":3704},{},[3705,3707,3713,3715,3721],{"type":384,"value":3706},"Insert a test outbox row for ",{"type":375,"tag":389,"props":3708,"children":3710},{"className":3709},[],[3711],{"type":384,"value":3712},"migration-test",{"type":384,"value":3714}," and let the worker publish it. Read the capture with ",{"type":375,"tag":389,"props":3716,"children":3718},{"className":3717},[],[3719],{"type":384,"value":3720},"curl -s https://bin.webhookrelay.com/v1/bins/$BIN | jq '.requests[0]'",{"type":384,"value":425},{"type":375,"tag":2820,"props":3723,"children":3724},{},[3725,3727,3733],{"type":384,"value":3726},"Paste the headers, body and that endpoint's secret into the ",{"type":375,"tag":403,"props":3728,"children":3730},{"href":3729},"/verify-standard-webhooks-signature",[3731],{"type":384,"value":3732},"Standard Webhooks signature verifier",{"type":384,"value":3734},", then run the same request through your customers' sample receiver.",{"type":375,"tag":2820,"props":3736,"children":3737},{},[3738,3740,3746,3748,3753,3755,3761],{"type":384,"value":3739},"During shadow publishing, compare per customer and event type: your own delivery table against ",{"type":375,"tag":389,"props":3741,"children":3743},{"className":3742},[],[3744],{"type":384,"value":3745},"GET /v1/outbound/messages?consumer=\u003Cid>",{"type":384,"value":3747},", and the ",{"type":375,"tag":389,"props":3749,"children":3751},{"className":3750},[],[3752],{"type":384,"value":3301},{"type":384,"value":3754}," deliveries on each paused endpoint (",{"type":375,"tag":389,"props":3756,"children":3758},{"className":3757},[],[3759],{"type":384,"value":3760},"GET /v1/outbound/endpoints/{id}/deliveries?status=rejected",{"type":384,"value":3155},{"type":375,"tag":2820,"props":3763,"children":3764},{},[3765,3767,3773,3775,3781],{"type":384,"value":3766},"After switching a customer, watch ",{"type":375,"tag":389,"props":3768,"children":3770},{"className":3769},[],[3771],{"type":384,"value":3772},"GET /v1/outbound/endpoints/{id}/deliveries?status=failed",{"type":384,"value":3774}," and ",{"type":375,"tag":389,"props":3776,"children":3778},{"className":3777},[],[3779],{"type":384,"value":3780},"GET /v1/outbound/health",{"type":384,"value":425},{"type":375,"tag":427,"props":3783,"children":3785},{"id":3784},"import-script",[3786],{"type":384,"value":3787},"Import script",{"type":375,"tag":376,"props":3789,"children":3790},{},[3791,3793,3799],{"type":384,"value":3792},"This script reads your Postgres tables (read-only) and creates the configuration in Webhook Relay. Adjust the two SQL queries to your schema. It checks your plan limits before writing anything, reads each endpoint's existing secret into memory only and passes it on when it fits the format (it never prints, logs or writes a secret), pauses every endpoint it creates and stops at the first error with its progress saved. Run it with ",{"type":375,"tag":389,"props":3794,"children":3796},{"className":3795},[],[3797],{"type":384,"value":3798},"npx tsx migrate-diy.mts",{"type":384,"value":425},{"type":375,"tag":376,"props":3801,"children":3802},{},[3803,3805,3810,3812,3818],{"type":384,"value":3804},"Endpoints are created with the REST call because the SDKs add a ",{"type":375,"tag":389,"props":3806,"children":3808},{"className":3807},[],[3809],{"type":384,"value":2528},{"type":384,"value":3811}," option to endpoint create in their next release; until then, create imported endpoints with the REST call. Everything else uses ",{"type":375,"tag":389,"props":3813,"children":3815},{"className":3814},[],[3816],{"type":384,"value":3817},"@webhookrelay/sdk",{"type":384,"value":425},{"type":375,"tag":786,"props":3820,"children":3821},{},[3822],{"type":375,"tag":790,"props":3823,"children":3825},{"className":792,"code":3824,"language":794,"meta":345,"style":345},"// migrate-diy.mts\n// Env: DATABASE_URL, RELAY_KEY, RELAY_SECRET (token with \"Outbound: manage\"), DRY_RUN=false to write.\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport pg from \"pg\";\nimport { WebhookRelay, WebhookRelayAPIError } from \"@webhookrelay/sdk\";\n\nconst RELAY_API = \"https://my.webhookrelay.com\";\nconst AUTH = \"Basic \" + Buffer.from(`${process.env.RELAY_KEY}:${process.env.RELAY_SECRET}`).toString(\"base64\");\nconst DRY_RUN = process.env.DRY_RUN !== \"false\";\nconst STATE_FILE = \"migration-state.json\"; // your endpoint row ID -> Webhook Relay endpoint ID. Never secrets.\nconst ID = /^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$/;\n\nconst relay = new WebhookRelay();\n\ntype PlanEndpoint = {\n  sourceId: string; url: string; eventTypes: string[]; description?: string;\n  headers?: Record\u003Cstring, string>; rate?: number; disabledAtSource?: boolean;\n  secret?: string; // in memory only: never printed, logged or written to a file\n};\ntype Plan = {\n  eventTypes: { name: string; description?: string; deprecated?: boolean }[];\n  consumers: { id: string; name?: string; endpoints: PlanEndpoint[] }[];\n  newSecrets: string[]; // source endpoint IDs whose secret can't be imported\n  warnings: string[];\n};\n\n// A secret imports if it is 32-100 standard base64 characters (a key of at least 24 bytes),\n// with or without \"whsec_\". The API makes the final check and never echoes the secret.\nfunction importable(raw: string | null | undefined): string | undefined {\n  const secret = raw?.trim();\n  if (!secret) return undefined;\n  const b64 = secret.startsWith(\"whsec_\") ? secret.slice(\"whsec_\".length) : secret;\n  if (b64.length \u003C 32 || b64.length > 100 || !/^[A-Za-z0-9+/]+={0,2}$/.test(b64)) return undefined;\n  if (b64.replace(/=+$/, \"\").length % 4 === 1) return undefined;\n  const bytes = Buffer.from(b64, \"base64\").length;\n  return bytes >= 24 ? secret : undefined;\n}\n\n// ---- 1. Export from your database (read-only). Adjust to your schema. ----\nasync function exportPlan(): Promise\u003CPlan> {\n  const db = new pg.Client({ connectionString: process.env.DATABASE_URL });\n  await db.connect();\n  try {\n    const { rows } = await db.query(`\n      SELECT e.id::text AS id, e.customer_id::text AS customer_id, c.name AS customer_name,\n             e.url, e.event_types, e.description, e.enabled, e.secret\n      FROM webhook_endpoints e JOIN customers c ON c.id = e.customer_id\n      WHERE e.deleted_at IS NULL\n      ORDER BY e.customer_id, e.id`);\n    const { rows: types } = await db.query(`SELECT DISTINCT event_type AS name FROM webhook_outbox`);\n\n    const plan: Plan = { eventTypes: types.map((t) => ({ name: t.name })), consumers: [], newSecrets: [], warnings: [] };\n    const consumers = new Map\u003Cstring, Plan[\"consumers\"][number]>();\n    for (const r of rows) {\n      const consumer = consumers.get(r.customer_id) ?? { id: r.customer_id, name: r.customer_name, endpoints: [] as PlanEndpoint[] };\n      const eventTypes: string[] = r.event_types?.length ? r.event_types : [\"*\"];\n      for (const t of eventTypes) if (t !== \"*\" && !plan.eventTypes.some((x) => x.name === t)) plan.eventTypes.push({ name: t });\n      const secret = importable(r.secret);\n      if (!secret) plan.newSecrets.push(r.id);\n      consumer.endpoints.push({\n        sourceId: r.id, url: r.url, eventTypes, description: r.description ?? undefined, disabledAtSource: !r.enabled, secret,\n      });\n      consumers.set(r.customer_id, consumer);\n    }\n    plan.consumers = [...consumers.values()];\n    return plan;\n  } finally {\n    await db.end();\n  }\n}\n\n// ---- 2. Check access and limits before writing anything ----\nasync function checkPlan(plan: Plan) {\n  const res = await fetch(`${RELAY_API}/v1/outbound/access`, { headers: { Authorization: AUTH } });\n  const access = await res.json();\n  if (!access.enabled) throw new Error(\"The Outbound Gateway needs a Basic, Business or Pro plan: upgrade at https://my.webhookrelay.com/account.\");\n  const limits = access.limits as { consumers: number; endpoints_per_consumer: number; event_types: number };\n\n  const haveConsumers = new Set((await relay.outbound.consumers.list()).map((c) => c.id));\n  const haveTypes = new Set((await relay.outbound.eventTypes.list()).map((e) => e.name));\n  const consumers = new Set([...haveConsumers, ...plan.consumers.map((c) => c.id)]).size;\n  const types = new Set([...haveTypes, ...plan.eventTypes.map((e) => e.name)]).size;\n\n  const problems: string[] = [];\n  if (consumers > limits.consumers) problems.push(`${consumers} consumers exceed the limit of ${limits.consumers}`);\n  if (types > limits.event_types) problems.push(`${types} event types exceed the limit of ${limits.event_types}`);\n  for (const et of plan.eventTypes) if (!ID.test(et.name)) problems.push(`event type \"${et.name}\" is not a valid name`);\n  for (const c of plan.consumers) {\n    if (!ID.test(c.id)) problems.push(`consumer \"${c.id}\" is not a valid ID: map it to another customer ID`);\n    if (c.endpoints.length > limits.endpoints_per_consumer)\n      problems.push(`${c.id} has ${c.endpoints.length} endpoints, the limit is ${limits.endpoints_per_consumer}`);\n    for (const e of c.endpoints) {\n      if (!e.url.startsWith(\"https://\")) problems.push(`${c.id} ${e.url}: endpoints must be public HTTPS`);\n      if (e.eventTypes.length > 100) problems.push(`${c.id} ${e.url}: more than 100 event types`);\n    }\n  }\n  for (const w of plan.warnings) console.warn(`warning: ${w}`);\n  if (problems.length) {\n    console.error(`Not importing:\\n- ${problems.join(\"\\n- \")}`);\n    process.exit(1);\n  }\n}\n\n// ---- 3. Import into Webhook Relay ----\nconst state: Record\u003Cstring, string> = existsSync(STATE_FILE) ? JSON.parse(readFileSync(STATE_FILE, \"utf8\")) : {};\n\nclass HTTPError extends Error {\n  constructor(readonly status: number, message: string) { super(message); }\n}\nconst statusOf = (err: unknown) =>\n  err instanceof WebhookRelayAPIError || err instanceof HTTPError ? err.status : undefined;\n\n// REST create, so the existing secret can be passed (the SDKs add a `secret` option in their next release).\nasync function createEndpoint(consumer: string, e: PlanEndpoint): Promise\u003C{ id: string }> {\n  const res = await fetch(`${RELAY_API}/v1/outbound/consumers/${encodeURIComponent(consumer)}/endpoints`, {\n    method: \"POST\",\n    headers: { Authorization: AUTH, \"Content-Type\": \"application/json\" },\n    body: JSON.stringify({\n      url: e.url, event_types: e.eventTypes, description: e.description, headers: e.headers, rate: e.rate,\n      ...(e.secret ? { secret: e.secret } : {}),\n    }),\n  });\n  // Error bodies never echo the secret; the success body contains it, so read only the ID.\n  if (!res.ok) throw new HTTPError(res.status, `POST endpoint: ${res.status} ${await res.text()}`);\n  const { id } = (await res.json()) as { id: string };\n  return { id };\n}\n\nasync function step\u003CT>(what: string, fn: () => Promise\u003CT>): Promise\u003CT> {\n  for (let attempt = 1; ; attempt++) {\n    try {\n      return await fn();\n    } catch (err) {\n      if (statusOf(err) === 429 && attempt \u003C 5) {\n        await new Promise((r) => setTimeout(r, attempt * 2000));\n        continue;\n      }\n      console.error(`Stopped at ${what}: ${err instanceof Error ? err.message : String(err)}`);\n      console.error(`Progress is saved in ${STATE_FILE}. Fix the cause and run the script again.`);\n      process.exit(1);\n    }\n  }\n}\n\nasync function importPlan(plan: Plan) {\n  for (const et of plan.eventTypes) {\n    await step(`event type ${et.name}`, () =>\n      relay.outbound.eventTypes.upsert(et.name, { description: et.description, deprecated: et.deprecated }));\n  }\n  for (const c of plan.consumers) {\n    await step(`consumer ${c.id}`, () => relay.outbound.consumers.upsert(c.id, { name: c.name }));\n    for (const e of c.endpoints) {\n      if (state[e.sourceId]) continue; // imported on an earlier run\n      const { id, created } = await step(`endpoint ${c.id} ${e.url}`, async () => {\n        try {\n          return { ...(await createEndpoint(c.id, e)), created: true };\n        } catch (err) {\n          if (statusOf(err) === 409) {\n            const existing = (await relay.outbound.endpoints.list(c.id)).find((x) => x.url === e.url);\n            if (existing) return { id: existing.id, created: false }; // already there: leave its state alone\n          }\n          throw err;\n        }\n      });\n      if (created) await step(`pause ${id}`, () => relay.outbound.endpoints.pause(id));\n      state[e.sourceId] = id;\n      writeFileSync(STATE_FILE, JSON.stringify(state, null, 2));\n      const secretNote = e.secret ? \"secret imported\" : \"new secret\";\n      console.log(`${c.id}: ${e.url} -> ${id} ${created ? `(created, paused, ${secretNote})` : \"(already existed, unchanged)\"}${e.disabledAtSource ? \" [disabled in your DB]\" : \"\"}`);\n    }\n  }\n}\n\nconst plan = await exportPlan();\nawait checkPlan(plan);\nconst endpoints = plan.consumers.reduce((n, c) => n + c.endpoints.length, 0);\nconsole.log(`Plan: ${plan.eventTypes.length} event types, ${plan.consumers.length} consumers, ${endpoints} endpoints.`);\nconsole.log(`Secrets: ${endpoints - plan.newSecrets.length} import, ${plan.newSecrets.length} get a new whsec_ secret.`);\nif (plan.newSecrets.length) console.log(`New secret for endpoint rows: ${plan.newSecrets.join(\", \")}`);\nif (DRY_RUN) console.log(\"Dry run: nothing was written. Run again with DRY_RUN=false to import.\");\nelse await importPlan(plan);\n",[3826],{"type":375,"tag":389,"props":3827,"children":3828},{"__ignoreMap":345},[3829,3837,3845,3870,3895,3919,3926,3951,4068,4108,4138,4182,4189,4216,4223,4244,4317,4393,4419,4428,4449,4518,4585,4611,4633,4641,4649,4658,4667,4740,4771,4805,4888,5005,5095,5141,5186,5194,5202,5211,5257,5302,5323,5336,5384,5393,5402,5411,5420,5433,5491,5499,5558,5625,5656,5712,5779,5890,5915,5946,5964,5995,6004,6023,6031,6068,6081,6099,6121,6129,6137,6145,6154,6192,6249,6284,6332,6413,6421,6495,6567,6639,6710,6718,6752,6817,6880,6975,7005,7072,7098,7181,7211,7300,7379,7387,7395,7452,7473,7549,7576,7584,7592,7600,7609,7730,7738,7765,7828,7836,7880,7936,7944,7953,8036,8104,8122,8157,8183,8192,8224,8233,8242,8251,8339,8408,8421,8429,8437,8540,8584,8597,8619,8638,8690,8748,8761,8770,8861,8895,8920,8928,8936,8944,8952,8989,9018,9064,9082,9090,9118,9176,9204,9231,9333,9346,9388,9405,9439,9513,9551,9560,9574,9583,9591,9651,9669,9725,9769,9897,9905,9913,9921,9929,9957,9974,10057,10142,10227,10303,10340],{"type":375,"tag":800,"props":3830,"children":3831},{"class":802,"line":803},[3832],{"type":375,"tag":800,"props":3833,"children":3834},{"style":807},[3835],{"type":384,"value":3836},"// migrate-diy.mts\n",{"type":375,"tag":800,"props":3838,"children":3839},{"class":802,"line":813},[3840],{"type":375,"tag":800,"props":3841,"children":3842},{"style":807},[3843],{"type":384,"value":3844},"// Env: DATABASE_URL, RELAY_KEY, RELAY_SECRET (token with \"Outbound: manage\"), DRY_RUN=false to write.\n",{"type":375,"tag":800,"props":3846,"children":3847},{"class":802,"line":875},[3848,3852,3857,3861,3866],{"type":375,"tag":800,"props":3849,"children":3850},{"style":817},[3851],{"type":384,"value":1211},{"type":375,"tag":800,"props":3853,"children":3854},{"style":823},[3855],{"type":384,"value":3856}," { existsSync, readFileSync, writeFileSync } ",{"type":375,"tag":800,"props":3858,"children":3859},{"style":817},[3860],{"type":384,"value":1221},{"type":375,"tag":800,"props":3862,"children":3863},{"style":988},[3864],{"type":384,"value":3865}," \"node:fs\"",{"type":375,"tag":800,"props":3867,"children":3868},{"style":823},[3869],{"type":384,"value":1231},{"type":375,"tag":800,"props":3871,"children":3872},{"class":802,"line":919},[3873,3877,3882,3886,3891],{"type":375,"tag":800,"props":3874,"children":3875},{"style":817},[3876],{"type":384,"value":1211},{"type":375,"tag":800,"props":3878,"children":3879},{"style":823},[3880],{"type":384,"value":3881}," pg ",{"type":375,"tag":800,"props":3883,"children":3884},{"style":817},[3885],{"type":384,"value":1221},{"type":375,"tag":800,"props":3887,"children":3888},{"style":988},[3889],{"type":384,"value":3890}," \"pg\"",{"type":375,"tag":800,"props":3892,"children":3893},{"style":823},[3894],{"type":384,"value":1231},{"type":375,"tag":800,"props":3896,"children":3897},{"class":802,"line":957},[3898,3902,3907,3911,3915],{"type":375,"tag":800,"props":3899,"children":3900},{"style":817},[3901],{"type":384,"value":1211},{"type":375,"tag":800,"props":3903,"children":3904},{"style":823},[3905],{"type":384,"value":3906}," { WebhookRelay, WebhookRelayAPIError } ",{"type":375,"tag":800,"props":3908,"children":3909},{"style":817},[3910],{"type":384,"value":1221},{"type":375,"tag":800,"props":3912,"children":3913},{"style":988},[3914],{"type":384,"value":1226},{"type":375,"tag":800,"props":3916,"children":3917},{"style":823},[3918],{"type":384,"value":1231},{"type":375,"tag":800,"props":3920,"children":3921},{"class":802,"line":1028},[3922],{"type":375,"tag":800,"props":3923,"children":3924},{"emptyLinePlaceholder":1237},[3925],{"type":384,"value":1240},{"type":375,"tag":800,"props":3927,"children":3928},{"class":802,"line":1098},[3929,3933,3938,3942,3947],{"type":375,"tag":800,"props":3930,"children":3931},{"style":817},[3932],{"type":384,"value":831},{"type":375,"tag":800,"props":3934,"children":3935},{"style":834},[3936],{"type":384,"value":3937}," RELAY_API",{"type":375,"tag":800,"props":3939,"children":3940},{"style":817},[3941],{"type":384,"value":935},{"type":375,"tag":800,"props":3943,"children":3944},{"style":988},[3945],{"type":384,"value":3946}," \"https://my.webhookrelay.com\"",{"type":375,"tag":800,"props":3948,"children":3949},{"style":823},[3950],{"type":384,"value":1231},{"type":375,"tag":800,"props":3952,"children":3953},{"class":802,"line":1150},[3954,3958,3963,3967,3972,3976,3980,3984,3988,3993,3998,4002,4007,4011,4016,4021,4025,4029,4033,4037,4042,4046,4050,4055,4059,4064],{"type":375,"tag":800,"props":3955,"children":3956},{"style":817},[3957],{"type":384,"value":831},{"type":375,"tag":800,"props":3959,"children":3960},{"style":834},[3961],{"type":384,"value":3962}," AUTH",{"type":375,"tag":800,"props":3964,"children":3965},{"style":817},[3966],{"type":384,"value":935},{"type":375,"tag":800,"props":3968,"children":3969},{"style":988},[3970],{"type":384,"value":3971}," \"Basic \"",{"type":375,"tag":800,"props":3973,"children":3974},{"style":817},[3975],{"type":384,"value":1611},{"type":375,"tag":800,"props":3977,"children":3978},{"style":823},[3979],{"type":384,"value":3068},{"type":375,"tag":800,"props":3981,"children":3982},{"style":854},[3983],{"type":384,"value":1221},{"type":375,"tag":800,"props":3985,"children":3986},{"style":823},[3987],{"type":384,"value":862},{"type":375,"tag":800,"props":3989,"children":3990},{"style":988},[3991],{"type":384,"value":3992},"`${",{"type":375,"tag":800,"props":3994,"children":3995},{"style":823},[3996],{"type":384,"value":3997},"process",{"type":375,"tag":800,"props":3999,"children":4000},{"style":988},[4001],{"type":384,"value":425},{"type":375,"tag":800,"props":4003,"children":4004},{"style":823},[4005],{"type":384,"value":4006},"env",{"type":375,"tag":800,"props":4008,"children":4009},{"style":988},[4010],{"type":384,"value":425},{"type":375,"tag":800,"props":4012,"children":4013},{"style":834},[4014],{"type":384,"value":4015},"RELAY_KEY",{"type":375,"tag":800,"props":4017,"children":4018},{"style":988},[4019],{"type":384,"value":4020},"}:${",{"type":375,"tag":800,"props":4022,"children":4023},{"style":823},[4024],{"type":384,"value":3997},{"type":375,"tag":800,"props":4026,"children":4027},{"style":988},[4028],{"type":384,"value":425},{"type":375,"tag":800,"props":4030,"children":4031},{"style":823},[4032],{"type":384,"value":4006},{"type":375,"tag":800,"props":4034,"children":4035},{"style":988},[4036],{"type":384,"value":425},{"type":375,"tag":800,"props":4038,"children":4039},{"style":834},[4040],{"type":384,"value":4041},"RELAY_SECRET",{"type":375,"tag":800,"props":4043,"children":4044},{"style":988},[4045],{"type":384,"value":1402},{"type":375,"tag":800,"props":4047,"children":4048},{"style":823},[4049],{"type":384,"value":3155},{"type":375,"tag":800,"props":4051,"children":4052},{"style":854},[4053],{"type":384,"value":4054},"toString",{"type":375,"tag":800,"props":4056,"children":4057},{"style":823},[4058],{"type":384,"value":862},{"type":375,"tag":800,"props":4060,"children":4061},{"style":988},[4062],{"type":384,"value":4063},"\"base64\"",{"type":375,"tag":800,"props":4065,"children":4066},{"style":823},[4067],{"type":384,"value":1025},{"type":375,"tag":800,"props":4069,"children":4070},{"class":802,"line":1159},[4071,4075,4080,4084,4089,4094,4099,4104],{"type":375,"tag":800,"props":4072,"children":4073},{"style":817},[4074],{"type":384,"value":831},{"type":375,"tag":800,"props":4076,"children":4077},{"style":834},[4078],{"type":384,"value":4079}," DRY_RUN",{"type":375,"tag":800,"props":4081,"children":4082},{"style":817},[4083],{"type":384,"value":935},{"type":375,"tag":800,"props":4085,"children":4086},{"style":823},[4087],{"type":384,"value":4088}," process.env.",{"type":375,"tag":800,"props":4090,"children":4091},{"style":834},[4092],{"type":384,"value":4093},"DRY_RUN",{"type":375,"tag":800,"props":4095,"children":4096},{"style":817},[4097],{"type":384,"value":4098}," !==",{"type":375,"tag":800,"props":4100,"children":4101},{"style":988},[4102],{"type":384,"value":4103}," \"false\"",{"type":375,"tag":800,"props":4105,"children":4106},{"style":823},[4107],{"type":384,"value":1231},{"type":375,"tag":800,"props":4109,"children":4110},{"class":802,"line":1182},[4111,4115,4120,4124,4129,4133],{"type":375,"tag":800,"props":4112,"children":4113},{"style":817},[4114],{"type":384,"value":831},{"type":375,"tag":800,"props":4116,"children":4117},{"style":834},[4118],{"type":384,"value":4119}," STATE_FILE",{"type":375,"tag":800,"props":4121,"children":4122},{"style":817},[4123],{"type":384,"value":935},{"type":375,"tag":800,"props":4125,"children":4126},{"style":988},[4127],{"type":384,"value":4128}," \"migration-state.json\"",{"type":375,"tag":800,"props":4130,"children":4131},{"style":823},[4132],{"type":384,"value":2919},{"type":375,"tag":800,"props":4134,"children":4135},{"style":807},[4136],{"type":384,"value":4137},"// your endpoint row ID -> Webhook Relay endpoint ID. Never secrets.\n",{"type":375,"tag":800,"props":4139,"children":4140},{"class":802,"line":1442},[4141,4145,4150,4154,4159,4164,4169,4174,4178],{"type":375,"tag":800,"props":4142,"children":4143},{"style":817},[4144],{"type":384,"value":831},{"type":375,"tag":800,"props":4146,"children":4147},{"style":834},[4148],{"type":384,"value":4149}," ID",{"type":375,"tag":800,"props":4151,"children":4152},{"style":817},[4153],{"type":384,"value":935},{"type":375,"tag":800,"props":4155,"children":4156},{"style":988},[4157],{"type":384,"value":4158}," /",{"type":375,"tag":800,"props":4160,"children":4161},{"style":817},[4162],{"type":384,"value":4163},"^",{"type":375,"tag":800,"props":4165,"children":4166},{"style":834},[4167],{"type":384,"value":4168},"[a-zA-Z0-9][a-zA-Z0-9_.:-]",{"type":375,"tag":800,"props":4170,"children":4171},{"style":817},[4172],{"type":384,"value":4173},"{0,127}$",{"type":375,"tag":800,"props":4175,"children":4176},{"style":988},[4177],{"type":384,"value":2752},{"type":375,"tag":800,"props":4179,"children":4180},{"style":823},[4181],{"type":384,"value":1231},{"type":375,"tag":800,"props":4183,"children":4184},{"class":802,"line":1695},[4185],{"type":375,"tag":800,"props":4186,"children":4187},{"emptyLinePlaceholder":1237},[4188],{"type":384,"value":1240},{"type":375,"tag":800,"props":4190,"children":4191},{"class":802,"line":1733},[4192,4196,4200,4204,4208,4212],{"type":375,"tag":800,"props":4193,"children":4194},{"style":817},[4195],{"type":384,"value":831},{"type":375,"tag":800,"props":4197,"children":4198},{"style":834},[4199],{"type":384,"value":1252},{"type":375,"tag":800,"props":4201,"children":4202},{"style":817},[4203],{"type":384,"value":935},{"type":375,"tag":800,"props":4205,"children":4206},{"style":817},[4207],{"type":384,"value":1261},{"type":375,"tag":800,"props":4209,"children":4210},{"style":854},[4211],{"type":384,"value":1266},{"type":375,"tag":800,"props":4213,"children":4214},{"style":823},[4215],{"type":384,"value":3173},{"type":375,"tag":800,"props":4217,"children":4218},{"class":802,"line":1746},[4219],{"type":375,"tag":800,"props":4220,"children":4221},{"emptyLinePlaceholder":1237},[4222],{"type":384,"value":1240},{"type":375,"tag":800,"props":4224,"children":4225},{"class":802,"line":1754},[4226,4231,4236,4240],{"type":375,"tag":800,"props":4227,"children":4228},{"style":817},[4229],{"type":384,"value":4230},"type",{"type":375,"tag":800,"props":4232,"children":4233},{"style":854},[4234],{"type":384,"value":4235}," PlanEndpoint",{"type":375,"tag":800,"props":4237,"children":4238},{"style":817},[4239],{"type":384,"value":935},{"type":375,"tag":800,"props":4241,"children":4242},{"style":823},[4243],{"type":384,"value":1667},{"type":375,"tag":800,"props":4245,"children":4246},{"class":802,"line":1912},[4247,4252,4256,4261,4265,4269,4273,4277,4281,4286,4290,4294,4299,4304,4309,4313],{"type":375,"tag":800,"props":4248,"children":4249},{"style":2956},[4250],{"type":384,"value":4251},"  sourceId",{"type":375,"tag":800,"props":4253,"children":4254},{"style":817},[4255],{"type":384,"value":2101},{"type":375,"tag":800,"props":4257,"children":4258},{"style":834},[4259],{"type":384,"value":4260}," string",{"type":375,"tag":800,"props":4262,"children":4263},{"style":823},[4264],{"type":384,"value":2919},{"type":375,"tag":800,"props":4266,"children":4267},{"style":2956},[4268],{"type":384,"value":3636},{"type":375,"tag":800,"props":4270,"children":4271},{"style":817},[4272],{"type":384,"value":2101},{"type":375,"tag":800,"props":4274,"children":4275},{"style":834},[4276],{"type":384,"value":4260},{"type":375,"tag":800,"props":4278,"children":4279},{"style":823},[4280],{"type":384,"value":2919},{"type":375,"tag":800,"props":4282,"children":4283},{"style":2956},[4284],{"type":384,"value":4285},"eventTypes",{"type":375,"tag":800,"props":4287,"children":4288},{"style":817},[4289],{"type":384,"value":2101},{"type":375,"tag":800,"props":4291,"children":4292},{"style":834},[4293],{"type":384,"value":4260},{"type":375,"tag":800,"props":4295,"children":4296},{"style":823},[4297],{"type":384,"value":4298},"[]; ",{"type":375,"tag":800,"props":4300,"children":4301},{"style":2956},[4302],{"type":384,"value":4303},"description",{"type":375,"tag":800,"props":4305,"children":4306},{"style":817},[4307],{"type":384,"value":4308},"?:",{"type":375,"tag":800,"props":4310,"children":4311},{"style":834},[4312],{"type":384,"value":4260},{"type":375,"tag":800,"props":4314,"children":4315},{"style":823},[4316],{"type":384,"value":1231},{"type":375,"tag":800,"props":4318,"children":4320},{"class":802,"line":4319},17,[4321,4326,4330,4335,4340,4345,4349,4353,4358,4362,4366,4371,4375,4380,4384,4389],{"type":375,"tag":800,"props":4322,"children":4323},{"style":2956},[4324],{"type":384,"value":4325},"  headers",{"type":375,"tag":800,"props":4327,"children":4328},{"style":817},[4329],{"type":384,"value":4308},{"type":375,"tag":800,"props":4331,"children":4332},{"style":854},[4333],{"type":384,"value":4334}," Record",{"type":375,"tag":800,"props":4336,"children":4337},{"style":823},[4338],{"type":384,"value":4339},"\u003C",{"type":375,"tag":800,"props":4341,"children":4342},{"style":834},[4343],{"type":384,"value":4344},"string",{"type":375,"tag":800,"props":4346,"children":4347},{"style":823},[4348],{"type":384,"value":725},{"type":375,"tag":800,"props":4350,"children":4351},{"style":834},[4352],{"type":384,"value":4344},{"type":375,"tag":800,"props":4354,"children":4355},{"style":823},[4356],{"type":384,"value":4357},">; ",{"type":375,"tag":800,"props":4359,"children":4360},{"style":2956},[4361],{"type":384,"value":642},{"type":375,"tag":800,"props":4363,"children":4364},{"style":817},[4365],{"type":384,"value":4308},{"type":375,"tag":800,"props":4367,"children":4368},{"style":834},[4369],{"type":384,"value":4370}," number",{"type":375,"tag":800,"props":4372,"children":4373},{"style":823},[4374],{"type":384,"value":2919},{"type":375,"tag":800,"props":4376,"children":4377},{"style":2956},[4378],{"type":384,"value":4379},"disabledAtSource",{"type":375,"tag":800,"props":4381,"children":4382},{"style":817},[4383],{"type":384,"value":4308},{"type":375,"tag":800,"props":4385,"children":4386},{"style":834},[4387],{"type":384,"value":4388}," boolean",{"type":375,"tag":800,"props":4390,"children":4391},{"style":823},[4392],{"type":384,"value":1231},{"type":375,"tag":800,"props":4394,"children":4396},{"class":802,"line":4395},18,[4397,4402,4406,4410,4414],{"type":375,"tag":800,"props":4398,"children":4399},{"style":2956},[4400],{"type":384,"value":4401},"  secret",{"type":375,"tag":800,"props":4403,"children":4404},{"style":817},[4405],{"type":384,"value":4308},{"type":375,"tag":800,"props":4407,"children":4408},{"style":834},[4409],{"type":384,"value":4260},{"type":375,"tag":800,"props":4411,"children":4412},{"style":823},[4413],{"type":384,"value":2919},{"type":375,"tag":800,"props":4415,"children":4416},{"style":807},[4417],{"type":384,"value":4418},"// in memory only: never printed, logged or written to a file\n",{"type":375,"tag":800,"props":4420,"children":4422},{"class":802,"line":4421},19,[4423],{"type":375,"tag":800,"props":4424,"children":4425},{"style":823},[4426],{"type":384,"value":4427},"};\n",{"type":375,"tag":800,"props":4429,"children":4431},{"class":802,"line":4430},20,[4432,4436,4441,4445],{"type":375,"tag":800,"props":4433,"children":4434},{"style":817},[4435],{"type":384,"value":4230},{"type":375,"tag":800,"props":4437,"children":4438},{"style":854},[4439],{"type":384,"value":4440}," Plan",{"type":375,"tag":800,"props":4442,"children":4443},{"style":817},[4444],{"type":384,"value":935},{"type":375,"tag":800,"props":4446,"children":4447},{"style":823},[4448],{"type":384,"value":1667},{"type":375,"tag":800,"props":4450,"children":4452},{"class":802,"line":4451},21,[4453,4458,4462,4467,4472,4476,4480,4484,4488,4492,4496,4500,4505,4509,4513],{"type":375,"tag":800,"props":4454,"children":4455},{"style":2956},[4456],{"type":384,"value":4457},"  eventTypes",{"type":375,"tag":800,"props":4459,"children":4460},{"style":817},[4461],{"type":384,"value":2101},{"type":375,"tag":800,"props":4463,"children":4464},{"style":823},[4465],{"type":384,"value":4466}," { ",{"type":375,"tag":800,"props":4468,"children":4469},{"style":2956},[4470],{"type":384,"value":4471},"name",{"type":375,"tag":800,"props":4473,"children":4474},{"style":817},[4475],{"type":384,"value":2101},{"type":375,"tag":800,"props":4477,"children":4478},{"style":834},[4479],{"type":384,"value":4260},{"type":375,"tag":800,"props":4481,"children":4482},{"style":823},[4483],{"type":384,"value":2919},{"type":375,"tag":800,"props":4485,"children":4486},{"style":2956},[4487],{"type":384,"value":4303},{"type":375,"tag":800,"props":4489,"children":4490},{"style":817},[4491],{"type":384,"value":4308},{"type":375,"tag":800,"props":4493,"children":4494},{"style":834},[4495],{"type":384,"value":4260},{"type":375,"tag":800,"props":4497,"children":4498},{"style":823},[4499],{"type":384,"value":2919},{"type":375,"tag":800,"props":4501,"children":4502},{"style":2956},[4503],{"type":384,"value":4504},"deprecated",{"type":375,"tag":800,"props":4506,"children":4507},{"style":817},[4508],{"type":384,"value":4308},{"type":375,"tag":800,"props":4510,"children":4511},{"style":834},[4512],{"type":384,"value":4388},{"type":375,"tag":800,"props":4514,"children":4515},{"style":823},[4516],{"type":384,"value":4517}," }[];\n",{"type":375,"tag":800,"props":4519,"children":4521},{"class":802,"line":4520},22,[4522,4527,4531,4535,4539,4543,4547,4551,4555,4559,4563,4567,4572,4576,4580],{"type":375,"tag":800,"props":4523,"children":4524},{"style":2956},[4525],{"type":384,"value":4526},"  consumers",{"type":375,"tag":800,"props":4528,"children":4529},{"style":817},[4530],{"type":384,"value":2101},{"type":375,"tag":800,"props":4532,"children":4533},{"style":823},[4534],{"type":384,"value":4466},{"type":375,"tag":800,"props":4536,"children":4537},{"style":2956},[4538],{"type":384,"value":1397},{"type":375,"tag":800,"props":4540,"children":4541},{"style":817},[4542],{"type":384,"value":2101},{"type":375,"tag":800,"props":4544,"children":4545},{"style":834},[4546],{"type":384,"value":4260},{"type":375,"tag":800,"props":4548,"children":4549},{"style":823},[4550],{"type":384,"value":2919},{"type":375,"tag":800,"props":4552,"children":4553},{"style":2956},[4554],{"type":384,"value":4471},{"type":375,"tag":800,"props":4556,"children":4557},{"style":817},[4558],{"type":384,"value":4308},{"type":375,"tag":800,"props":4560,"children":4561},{"style":834},[4562],{"type":384,"value":4260},{"type":375,"tag":800,"props":4564,"children":4565},{"style":823},[4566],{"type":384,"value":2919},{"type":375,"tag":800,"props":4568,"children":4569},{"style":2956},[4570],{"type":384,"value":4571},"endpoints",{"type":375,"tag":800,"props":4573,"children":4574},{"style":817},[4575],{"type":384,"value":2101},{"type":375,"tag":800,"props":4577,"children":4578},{"style":854},[4579],{"type":384,"value":4235},{"type":375,"tag":800,"props":4581,"children":4582},{"style":823},[4583],{"type":384,"value":4584},"[] }[];\n",{"type":375,"tag":800,"props":4586,"children":4588},{"class":802,"line":4587},23,[4589,4594,4598,4602,4606],{"type":375,"tag":800,"props":4590,"children":4591},{"style":2956},[4592],{"type":384,"value":4593},"  newSecrets",{"type":375,"tag":800,"props":4595,"children":4596},{"style":817},[4597],{"type":384,"value":2101},{"type":375,"tag":800,"props":4599,"children":4600},{"style":834},[4601],{"type":384,"value":4260},{"type":375,"tag":800,"props":4603,"children":4604},{"style":823},[4605],{"type":384,"value":4298},{"type":375,"tag":800,"props":4607,"children":4608},{"style":807},[4609],{"type":384,"value":4610},"// source endpoint IDs whose secret can't be imported\n",{"type":375,"tag":800,"props":4612,"children":4614},{"class":802,"line":4613},24,[4615,4620,4624,4628],{"type":375,"tag":800,"props":4616,"children":4617},{"style":2956},[4618],{"type":384,"value":4619},"  warnings",{"type":375,"tag":800,"props":4621,"children":4622},{"style":817},[4623],{"type":384,"value":2101},{"type":375,"tag":800,"props":4625,"children":4626},{"style":834},[4627],{"type":384,"value":4260},{"type":375,"tag":800,"props":4629,"children":4630},{"style":823},[4631],{"type":384,"value":4632},"[];\n",{"type":375,"tag":800,"props":4634,"children":4636},{"class":802,"line":4635},25,[4637],{"type":375,"tag":800,"props":4638,"children":4639},{"style":823},[4640],{"type":384,"value":4427},{"type":375,"tag":800,"props":4642,"children":4644},{"class":802,"line":4643},26,[4645],{"type":375,"tag":800,"props":4646,"children":4647},{"emptyLinePlaceholder":1237},[4648],{"type":384,"value":1240},{"type":375,"tag":800,"props":4650,"children":4652},{"class":802,"line":4651},27,[4653],{"type":375,"tag":800,"props":4654,"children":4655},{"style":807},[4656],{"type":384,"value":4657},"// A secret imports if it is 32-100 standard base64 characters (a key of at least 24 bytes),\n",{"type":375,"tag":800,"props":4659,"children":4661},{"class":802,"line":4660},28,[4662],{"type":375,"tag":800,"props":4663,"children":4664},{"style":807},[4665],{"type":384,"value":4666},"// with or without \"whsec_\". The API makes the final check and never echoes the secret.\n",{"type":375,"tag":800,"props":4668,"children":4670},{"class":802,"line":4669},29,[4671,4676,4681,4685,4690,4694,4698,4702,4707,4711,4716,4720,4724,4728,4732,4736],{"type":375,"tag":800,"props":4672,"children":4673},{"style":817},[4674],{"type":384,"value":4675},"function",{"type":375,"tag":800,"props":4677,"children":4678},{"style":854},[4679],{"type":384,"value":4680}," importable",{"type":375,"tag":800,"props":4682,"children":4683},{"style":823},[4684],{"type":384,"value":862},{"type":375,"tag":800,"props":4686,"children":4687},{"style":2956},[4688],{"type":384,"value":4689},"raw",{"type":375,"tag":800,"props":4691,"children":4692},{"style":817},[4693],{"type":384,"value":2101},{"type":375,"tag":800,"props":4695,"children":4696},{"style":834},[4697],{"type":384,"value":4260},{"type":375,"tag":800,"props":4699,"children":4700},{"style":817},[4701],{"type":384,"value":3463},{"type":375,"tag":800,"props":4703,"children":4704},{"style":834},[4705],{"type":384,"value":4706}," null",{"type":375,"tag":800,"props":4708,"children":4709},{"style":817},[4710],{"type":384,"value":3463},{"type":375,"tag":800,"props":4712,"children":4713},{"style":834},[4714],{"type":384,"value":4715}," undefined",{"type":375,"tag":800,"props":4717,"children":4718},{"style":823},[4719],{"type":384,"value":569},{"type":375,"tag":800,"props":4721,"children":4722},{"style":817},[4723],{"type":384,"value":2101},{"type":375,"tag":800,"props":4725,"children":4726},{"style":834},[4727],{"type":384,"value":4260},{"type":375,"tag":800,"props":4729,"children":4730},{"style":817},[4731],{"type":384,"value":3463},{"type":375,"tag":800,"props":4733,"children":4734},{"style":834},[4735],{"type":384,"value":4715},{"type":375,"tag":800,"props":4737,"children":4738},{"style":823},[4739],{"type":384,"value":1667},{"type":375,"tag":800,"props":4741,"children":4743},{"class":802,"line":4742},30,[4744,4748,4753,4757,4762,4767],{"type":375,"tag":800,"props":4745,"children":4746},{"style":817},[4747],{"type":384,"value":3054},{"type":375,"tag":800,"props":4749,"children":4750},{"style":834},[4751],{"type":384,"value":4752}," secret",{"type":375,"tag":800,"props":4754,"children":4755},{"style":817},[4756],{"type":384,"value":935},{"type":375,"tag":800,"props":4758,"children":4759},{"style":823},[4760],{"type":384,"value":4761}," raw?.",{"type":375,"tag":800,"props":4763,"children":4764},{"style":854},[4765],{"type":384,"value":4766},"trim",{"type":375,"tag":800,"props":4768,"children":4769},{"style":823},[4770],{"type":384,"value":3173},{"type":375,"tag":800,"props":4772,"children":4774},{"class":802,"line":4773},31,[4775,4779,4783,4787,4792,4797,4801],{"type":375,"tag":800,"props":4776,"children":4777},{"style":817},[4778],{"type":384,"value":2981},{"type":375,"tag":800,"props":4780,"children":4781},{"style":823},[4782],{"type":384,"value":826},{"type":375,"tag":800,"props":4784,"children":4785},{"style":817},[4786],{"type":384,"value":1113},{"type":375,"tag":800,"props":4788,"children":4789},{"style":823},[4790],{"type":384,"value":4791},"secret) ",{"type":375,"tag":800,"props":4793,"children":4794},{"style":817},[4795],{"type":384,"value":4796},"return",{"type":375,"tag":800,"props":4798,"children":4799},{"style":834},[4800],{"type":384,"value":4715},{"type":375,"tag":800,"props":4802,"children":4803},{"style":823},[4804],{"type":384,"value":1231},{"type":375,"tag":800,"props":4806,"children":4808},{"class":802,"line":4807},32,[4809,4813,4818,4822,4826,4831,4835,4840,4845,4850,4854,4859,4863,4867,4871,4875,4879,4883],{"type":375,"tag":800,"props":4810,"children":4811},{"style":817},[4812],{"type":384,"value":3054},{"type":375,"tag":800,"props":4814,"children":4815},{"style":834},[4816],{"type":384,"value":4817}," b64",{"type":375,"tag":800,"props":4819,"children":4820},{"style":817},[4821],{"type":384,"value":935},{"type":375,"tag":800,"props":4823,"children":4824},{"style":823},[4825],{"type":384,"value":2783},{"type":375,"tag":800,"props":4827,"children":4828},{"style":854},[4829],{"type":384,"value":4830},"startsWith",{"type":375,"tag":800,"props":4832,"children":4833},{"style":823},[4834],{"type":384,"value":862},{"type":375,"tag":800,"props":4836,"children":4837},{"style":988},[4838],{"type":384,"value":4839},"\"whsec_\"",{"type":375,"tag":800,"props":4841,"children":4842},{"style":823},[4843],{"type":384,"value":4844},") ",{"type":375,"tag":800,"props":4846,"children":4847},{"style":817},[4848],{"type":384,"value":4849},"?",{"type":375,"tag":800,"props":4851,"children":4852},{"style":823},[4853],{"type":384,"value":2783},{"type":375,"tag":800,"props":4855,"children":4856},{"style":854},[4857],{"type":384,"value":4858},"slice",{"type":375,"tag":800,"props":4860,"children":4861},{"style":823},[4862],{"type":384,"value":862},{"type":375,"tag":800,"props":4864,"children":4865},{"style":988},[4866],{"type":384,"value":4839},{"type":375,"tag":800,"props":4868,"children":4869},{"style":823},[4870],{"type":384,"value":425},{"type":375,"tag":800,"props":4872,"children":4873},{"style":834},[4874],{"type":384,"value":3191},{"type":375,"tag":800,"props":4876,"children":4877},{"style":823},[4878],{"type":384,"value":4844},{"type":375,"tag":800,"props":4880,"children":4881},{"style":817},[4882],{"type":384,"value":2101},{"type":375,"tag":800,"props":4884,"children":4885},{"style":823},[4886],{"type":384,"value":4887}," secret;\n",{"type":375,"tag":800,"props":4889,"children":4891},{"class":802,"line":4890},33,[4892,4896,4901,4905,4910,4915,4920,4925,4929,4934,4939,4943,4948,4952,4956,4961,4965,4970,4975,4979,4983,4988,4993,4997,5001],{"type":375,"tag":800,"props":4893,"children":4894},{"style":817},[4895],{"type":384,"value":2981},{"type":375,"tag":800,"props":4897,"children":4898},{"style":823},[4899],{"type":384,"value":4900}," (b64.",{"type":375,"tag":800,"props":4902,"children":4903},{"style":834},[4904],{"type":384,"value":3191},{"type":375,"tag":800,"props":4906,"children":4907},{"style":817},[4908],{"type":384,"value":4909}," \u003C",{"type":375,"tag":800,"props":4911,"children":4912},{"style":834},[4913],{"type":384,"value":4914}," 32",{"type":375,"tag":800,"props":4916,"children":4917},{"style":817},[4918],{"type":384,"value":4919}," ||",{"type":375,"tag":800,"props":4921,"children":4922},{"style":823},[4923],{"type":384,"value":4924}," b64.",{"type":375,"tag":800,"props":4926,"children":4927},{"style":834},[4928],{"type":384,"value":3191},{"type":375,"tag":800,"props":4930,"children":4931},{"style":817},[4932],{"type":384,"value":4933}," >",{"type":375,"tag":800,"props":4935,"children":4936},{"style":834},[4937],{"type":384,"value":4938}," 100",{"type":375,"tag":800,"props":4940,"children":4941},{"style":817},[4942],{"type":384,"value":4919},{"type":375,"tag":800,"props":4944,"children":4945},{"style":817},[4946],{"type":384,"value":4947}," !",{"type":375,"tag":800,"props":4949,"children":4950},{"style":988},[4951],{"type":384,"value":2752},{"type":375,"tag":800,"props":4953,"children":4954},{"style":817},[4955],{"type":384,"value":4163},{"type":375,"tag":800,"props":4957,"children":4958},{"style":834},[4959],{"type":384,"value":4960},"[A-Za-z0-9+/]",{"type":375,"tag":800,"props":4962,"children":4963},{"style":817},[4964],{"type":384,"value":2745},{"type":375,"tag":800,"props":4966,"children":4968},{"style":4967},"--shiki-default:#DBEDFF",[4969],{"type":384,"value":3431},{"type":375,"tag":800,"props":4971,"children":4972},{"style":817},[4973],{"type":384,"value":4974},"{0,2}$",{"type":375,"tag":800,"props":4976,"children":4977},{"style":988},[4978],{"type":384,"value":2752},{"type":375,"tag":800,"props":4980,"children":4981},{"style":823},[4982],{"type":384,"value":425},{"type":375,"tag":800,"props":4984,"children":4985},{"style":854},[4986],{"type":384,"value":4987},"test",{"type":375,"tag":800,"props":4989,"children":4990},{"style":823},[4991],{"type":384,"value":4992},"(b64)) ",{"type":375,"tag":800,"props":4994,"children":4995},{"style":817},[4996],{"type":384,"value":4796},{"type":375,"tag":800,"props":4998,"children":4999},{"style":834},[5000],{"type":384,"value":4715},{"type":375,"tag":800,"props":5002,"children":5003},{"style":823},[5004],{"type":384,"value":1231},{"type":375,"tag":800,"props":5006,"children":5008},{"class":802,"line":5007},34,[5009,5013,5017,5022,5026,5030,5034,5039,5043,5047,5052,5056,5060,5065,5070,5074,5079,5083,5087,5091],{"type":375,"tag":800,"props":5010,"children":5011},{"style":817},[5012],{"type":384,"value":2981},{"type":375,"tag":800,"props":5014,"children":5015},{"style":823},[5016],{"type":384,"value":4900},{"type":375,"tag":800,"props":5018,"children":5019},{"style":854},[5020],{"type":384,"value":5021},"replace",{"type":375,"tag":800,"props":5023,"children":5024},{"style":823},[5025],{"type":384,"value":862},{"type":375,"tag":800,"props":5027,"children":5028},{"style":988},[5029],{"type":384,"value":2752},{"type":375,"tag":800,"props":5031,"children":5032},{"style":4967},[5033],{"type":384,"value":3431},{"type":375,"tag":800,"props":5035,"children":5036},{"style":817},[5037],{"type":384,"value":5038},"+$",{"type":375,"tag":800,"props":5040,"children":5041},{"style":988},[5042],{"type":384,"value":2752},{"type":375,"tag":800,"props":5044,"children":5045},{"style":823},[5046],{"type":384,"value":725},{"type":375,"tag":800,"props":5048,"children":5049},{"style":988},[5050],{"type":384,"value":5051},"\"\"",{"type":375,"tag":800,"props":5053,"children":5054},{"style":823},[5055],{"type":384,"value":3155},{"type":375,"tag":800,"props":5057,"children":5058},{"style":834},[5059],{"type":384,"value":3191},{"type":375,"tag":800,"props":5061,"children":5062},{"style":817},[5063],{"type":384,"value":5064}," %",{"type":375,"tag":800,"props":5066,"children":5067},{"style":834},[5068],{"type":384,"value":5069}," 4",{"type":375,"tag":800,"props":5071,"children":5072},{"style":817},[5073],{"type":384,"value":3196},{"type":375,"tag":800,"props":5075,"children":5076},{"style":834},[5077],{"type":384,"value":5078}," 1",{"type":375,"tag":800,"props":5080,"children":5081},{"style":823},[5082],{"type":384,"value":4844},{"type":375,"tag":800,"props":5084,"children":5085},{"style":817},[5086],{"type":384,"value":4796},{"type":375,"tag":800,"props":5088,"children":5089},{"style":834},[5090],{"type":384,"value":4715},{"type":375,"tag":800,"props":5092,"children":5093},{"style":823},[5094],{"type":384,"value":1231},{"type":375,"tag":800,"props":5096,"children":5098},{"class":802,"line":5097},35,[5099,5103,5108,5112,5116,5120,5125,5129,5133,5137],{"type":375,"tag":800,"props":5100,"children":5101},{"style":817},[5102],{"type":384,"value":3054},{"type":375,"tag":800,"props":5104,"children":5105},{"style":834},[5106],{"type":384,"value":5107}," bytes",{"type":375,"tag":800,"props":5109,"children":5110},{"style":817},[5111],{"type":384,"value":935},{"type":375,"tag":800,"props":5113,"children":5114},{"style":823},[5115],{"type":384,"value":3068},{"type":375,"tag":800,"props":5117,"children":5118},{"style":854},[5119],{"type":384,"value":1221},{"type":375,"tag":800,"props":5121,"children":5122},{"style":823},[5123],{"type":384,"value":5124},"(b64, ",{"type":375,"tag":800,"props":5126,"children":5127},{"style":988},[5128],{"type":384,"value":4063},{"type":375,"tag":800,"props":5130,"children":5131},{"style":823},[5132],{"type":384,"value":3155},{"type":375,"tag":800,"props":5134,"children":5135},{"style":834},[5136],{"type":384,"value":3191},{"type":375,"tag":800,"props":5138,"children":5139},{"style":823},[5140],{"type":384,"value":1231},{"type":375,"tag":800,"props":5142,"children":5144},{"class":802,"line":5143},36,[5145,5149,5154,5159,5164,5169,5174,5178,5182],{"type":375,"tag":800,"props":5146,"children":5147},{"style":817},[5148],{"type":384,"value":3181},{"type":375,"tag":800,"props":5150,"children":5151},{"style":823},[5152],{"type":384,"value":5153}," bytes ",{"type":375,"tag":800,"props":5155,"children":5156},{"style":817},[5157],{"type":384,"value":5158},">=",{"type":375,"tag":800,"props":5160,"children":5161},{"style":834},[5162],{"type":384,"value":5163}," 24",{"type":375,"tag":800,"props":5165,"children":5166},{"style":817},[5167],{"type":384,"value":5168}," ?",{"type":375,"tag":800,"props":5170,"children":5171},{"style":823},[5172],{"type":384,"value":5173}," secret ",{"type":375,"tag":800,"props":5175,"children":5176},{"style":817},[5177],{"type":384,"value":2101},{"type":375,"tag":800,"props":5179,"children":5180},{"style":834},[5181],{"type":384,"value":4715},{"type":375,"tag":800,"props":5183,"children":5184},{"style":823},[5185],{"type":384,"value":1231},{"type":375,"tag":800,"props":5187,"children":5189},{"class":802,"line":5188},37,[5190],{"type":375,"tag":800,"props":5191,"children":5192},{"style":823},[5193],{"type":384,"value":1188},{"type":375,"tag":800,"props":5195,"children":5197},{"class":802,"line":5196},38,[5198],{"type":375,"tag":800,"props":5199,"children":5200},{"emptyLinePlaceholder":1237},[5201],{"type":384,"value":1240},{"type":375,"tag":800,"props":5203,"children":5205},{"class":802,"line":5204},39,[5206],{"type":375,"tag":800,"props":5207,"children":5208},{"style":807},[5209],{"type":384,"value":5210},"// ---- 1. Export from your database (read-only). Adjust to your schema. ----\n",{"type":375,"tag":800,"props":5212,"children":5214},{"class":802,"line":5213},40,[5215,5220,5224,5229,5234,5238,5243,5247,5252],{"type":375,"tag":800,"props":5216,"children":5217},{"style":817},[5218],{"type":384,"value":5219},"async",{"type":375,"tag":800,"props":5221,"children":5222},{"style":817},[5223],{"type":384,"value":2944},{"type":375,"tag":800,"props":5225,"children":5226},{"style":854},[5227],{"type":384,"value":5228}," exportPlan",{"type":375,"tag":800,"props":5230,"children":5231},{"style":823},[5232],{"type":384,"value":5233},"()",{"type":375,"tag":800,"props":5235,"children":5236},{"style":817},[5237],{"type":384,"value":2101},{"type":375,"tag":800,"props":5239,"children":5240},{"style":854},[5241],{"type":384,"value":5242}," Promise",{"type":375,"tag":800,"props":5244,"children":5245},{"style":823},[5246],{"type":384,"value":4339},{"type":375,"tag":800,"props":5248,"children":5249},{"style":854},[5250],{"type":384,"value":5251},"Plan",{"type":375,"tag":800,"props":5253,"children":5254},{"style":823},[5255],{"type":384,"value":5256},"> {\n",{"type":375,"tag":800,"props":5258,"children":5260},{"class":802,"line":5259},41,[5261,5265,5270,5274,5278,5283,5288,5293,5298],{"type":375,"tag":800,"props":5262,"children":5263},{"style":817},[5264],{"type":384,"value":3054},{"type":375,"tag":800,"props":5266,"children":5267},{"style":834},[5268],{"type":384,"value":5269}," db",{"type":375,"tag":800,"props":5271,"children":5272},{"style":817},[5273],{"type":384,"value":935},{"type":375,"tag":800,"props":5275,"children":5276},{"style":817},[5277],{"type":384,"value":1261},{"type":375,"tag":800,"props":5279,"children":5280},{"style":823},[5281],{"type":384,"value":5282}," pg.",{"type":375,"tag":800,"props":5284,"children":5285},{"style":854},[5286],{"type":384,"value":5287},"Client",{"type":375,"tag":800,"props":5289,"children":5290},{"style":823},[5291],{"type":384,"value":5292},"({ connectionString: process.env.",{"type":375,"tag":800,"props":5294,"children":5295},{"style":834},[5296],{"type":384,"value":5297},"DATABASE_URL",{"type":375,"tag":800,"props":5299,"children":5300},{"style":823},[5301],{"type":384,"value":2384},{"type":375,"tag":800,"props":5303,"children":5305},{"class":802,"line":5304},42,[5306,5310,5314,5319],{"type":375,"tag":800,"props":5307,"children":5308},{"style":817},[5309],{"type":384,"value":1165},{"type":375,"tag":800,"props":5311,"children":5312},{"style":823},[5313],{"type":384,"value":851},{"type":375,"tag":800,"props":5315,"children":5316},{"style":854},[5317],{"type":384,"value":5318},"connect",{"type":375,"tag":800,"props":5320,"children":5321},{"style":823},[5322],{"type":384,"value":3173},{"type":375,"tag":800,"props":5324,"children":5326},{"class":802,"line":5325},43,[5327,5332],{"type":375,"tag":800,"props":5328,"children":5329},{"style":817},[5330],{"type":384,"value":5331},"  try",{"type":375,"tag":800,"props":5333,"children":5334},{"style":823},[5335],{"type":384,"value":1667},{"type":375,"tag":800,"props":5337,"children":5339},{"class":802,"line":5338},44,[5340,5344,5348,5353,5358,5362,5366,5370,5375,5379],{"type":375,"tag":800,"props":5341,"children":5342},{"style":817},[5343],{"type":384,"value":925},{"type":375,"tag":800,"props":5345,"children":5346},{"style":823},[5347],{"type":384,"value":4466},{"type":375,"tag":800,"props":5349,"children":5350},{"style":834},[5351],{"type":384,"value":5352},"rows",{"type":375,"tag":800,"props":5354,"children":5355},{"style":823},[5356],{"type":384,"value":5357}," } ",{"type":375,"tag":800,"props":5359,"children":5360},{"style":817},[5361],{"type":384,"value":3431},{"type":375,"tag":800,"props":5363,"children":5364},{"style":817},[5365],{"type":384,"value":846},{"type":375,"tag":800,"props":5367,"children":5368},{"style":823},[5369],{"type":384,"value":851},{"type":375,"tag":800,"props":5371,"children":5372},{"style":854},[5373],{"type":384,"value":5374},"query",{"type":375,"tag":800,"props":5376,"children":5377},{"style":823},[5378],{"type":384,"value":862},{"type":375,"tag":800,"props":5380,"children":5381},{"style":988},[5382],{"type":384,"value":5383},"`\n",{"type":375,"tag":800,"props":5385,"children":5387},{"class":802,"line":5386},45,[5388],{"type":375,"tag":800,"props":5389,"children":5390},{"style":988},[5391],{"type":384,"value":5392},"      SELECT e.id::text AS id, e.customer_id::text AS customer_id, c.name AS customer_name,\n",{"type":375,"tag":800,"props":5394,"children":5396},{"class":802,"line":5395},46,[5397],{"type":375,"tag":800,"props":5398,"children":5399},{"style":988},[5400],{"type":384,"value":5401},"             e.url, e.event_types, e.description, e.enabled, e.secret\n",{"type":375,"tag":800,"props":5403,"children":5405},{"class":802,"line":5404},47,[5406],{"type":375,"tag":800,"props":5407,"children":5408},{"style":988},[5409],{"type":384,"value":5410},"      FROM webhook_endpoints e JOIN customers c ON c.id = e.customer_id\n",{"type":375,"tag":800,"props":5412,"children":5414},{"class":802,"line":5413},48,[5415],{"type":375,"tag":800,"props":5416,"children":5417},{"style":988},[5418],{"type":384,"value":5419},"      WHERE e.deleted_at IS NULL\n",{"type":375,"tag":800,"props":5421,"children":5423},{"class":802,"line":5422},49,[5424,5429],{"type":375,"tag":800,"props":5425,"children":5426},{"style":988},[5427],{"type":384,"value":5428},"      ORDER BY e.customer_id, e.id`",{"type":375,"tag":800,"props":5430,"children":5431},{"style":823},[5432],{"type":384,"value":1025},{"type":375,"tag":800,"props":5434,"children":5436},{"class":802,"line":5435},50,[5437,5441,5445,5449,5453,5458,5462,5466,5470,5474,5478,5482,5487],{"type":375,"tag":800,"props":5438,"children":5439},{"style":817},[5440],{"type":384,"value":925},{"type":375,"tag":800,"props":5442,"children":5443},{"style":823},[5444],{"type":384,"value":4466},{"type":375,"tag":800,"props":5446,"children":5447},{"style":2956},[5448],{"type":384,"value":5352},{"type":375,"tag":800,"props":5450,"children":5451},{"style":823},[5452],{"type":384,"value":1076},{"type":375,"tag":800,"props":5454,"children":5455},{"style":834},[5456],{"type":384,"value":5457},"types",{"type":375,"tag":800,"props":5459,"children":5460},{"style":823},[5461],{"type":384,"value":5357},{"type":375,"tag":800,"props":5463,"children":5464},{"style":817},[5465],{"type":384,"value":3431},{"type":375,"tag":800,"props":5467,"children":5468},{"style":817},[5469],{"type":384,"value":846},{"type":375,"tag":800,"props":5471,"children":5472},{"style":823},[5473],{"type":384,"value":851},{"type":375,"tag":800,"props":5475,"children":5476},{"style":854},[5477],{"type":384,"value":5374},{"type":375,"tag":800,"props":5479,"children":5480},{"style":823},[5481],{"type":384,"value":862},{"type":375,"tag":800,"props":5483,"children":5484},{"style":988},[5485],{"type":384,"value":5486},"`SELECT DISTINCT event_type AS name FROM webhook_outbox`",{"type":375,"tag":800,"props":5488,"children":5489},{"style":823},[5490],{"type":384,"value":1025},{"type":375,"tag":800,"props":5492,"children":5494},{"class":802,"line":5493},51,[5495],{"type":375,"tag":800,"props":5496,"children":5497},{"emptyLinePlaceholder":1237},[5498],{"type":384,"value":1240},{"type":375,"tag":800,"props":5500,"children":5502},{"class":802,"line":5501},52,[5503,5507,5512,5516,5520,5524,5529,5534,5539,5544,5548,5553],{"type":375,"tag":800,"props":5504,"children":5505},{"style":817},[5506],{"type":384,"value":925},{"type":375,"tag":800,"props":5508,"children":5509},{"style":834},[5510],{"type":384,"value":5511}," plan",{"type":375,"tag":800,"props":5513,"children":5514},{"style":817},[5515],{"type":384,"value":2101},{"type":375,"tag":800,"props":5517,"children":5518},{"style":854},[5519],{"type":384,"value":4440},{"type":375,"tag":800,"props":5521,"children":5522},{"style":817},[5523],{"type":384,"value":935},{"type":375,"tag":800,"props":5525,"children":5526},{"style":823},[5527],{"type":384,"value":5528}," { eventTypes: types.",{"type":375,"tag":800,"props":5530,"children":5531},{"style":854},[5532],{"type":384,"value":5533},"map",{"type":375,"tag":800,"props":5535,"children":5536},{"style":823},[5537],{"type":384,"value":5538},"((",{"type":375,"tag":800,"props":5540,"children":5541},{"style":2956},[5542],{"type":384,"value":5543},"t",{"type":375,"tag":800,"props":5545,"children":5546},{"style":823},[5547],{"type":384,"value":4844},{"type":375,"tag":800,"props":5549,"children":5550},{"style":817},[5551],{"type":384,"value":5552},"=>",{"type":375,"tag":800,"props":5554,"children":5555},{"style":823},[5556],{"type":384,"value":5557}," ({ name: t.name })), consumers: [], newSecrets: [], warnings: [] };\n",{"type":375,"tag":800,"props":5559,"children":5561},{"class":802,"line":5560},53,[5562,5566,5571,5575,5579,5584,5588,5592,5596,5600,5605,5610,5615,5620],{"type":375,"tag":800,"props":5563,"children":5564},{"style":817},[5565],{"type":384,"value":925},{"type":375,"tag":800,"props":5567,"children":5568},{"style":834},[5569],{"type":384,"value":5570}," consumers",{"type":375,"tag":800,"props":5572,"children":5573},{"style":817},[5574],{"type":384,"value":935},{"type":375,"tag":800,"props":5576,"children":5577},{"style":817},[5578],{"type":384,"value":1261},{"type":375,"tag":800,"props":5580,"children":5581},{"style":854},[5582],{"type":384,"value":5583}," Map",{"type":375,"tag":800,"props":5585,"children":5586},{"style":823},[5587],{"type":384,"value":4339},{"type":375,"tag":800,"props":5589,"children":5590},{"style":834},[5591],{"type":384,"value":4344},{"type":375,"tag":800,"props":5593,"children":5594},{"style":823},[5595],{"type":384,"value":725},{"type":375,"tag":800,"props":5597,"children":5598},{"style":854},[5599],{"type":384,"value":5251},{"type":375,"tag":800,"props":5601,"children":5602},{"style":823},[5603],{"type":384,"value":5604},"[",{"type":375,"tag":800,"props":5606,"children":5607},{"style":988},[5608],{"type":384,"value":5609},"\"consumers\"",{"type":375,"tag":800,"props":5611,"children":5612},{"style":823},[5613],{"type":384,"value":5614},"][",{"type":375,"tag":800,"props":5616,"children":5617},{"style":834},[5618],{"type":384,"value":5619},"number",{"type":375,"tag":800,"props":5621,"children":5622},{"style":823},[5623],{"type":384,"value":5624},"]>();\n",{"type":375,"tag":800,"props":5626,"children":5628},{"class":802,"line":5627},54,[5629,5634,5638,5642,5647,5651],{"type":375,"tag":800,"props":5630,"children":5631},{"style":817},[5632],{"type":384,"value":5633},"    for",{"type":375,"tag":800,"props":5635,"children":5636},{"style":823},[5637],{"type":384,"value":826},{"type":375,"tag":800,"props":5639,"children":5640},{"style":817},[5641],{"type":384,"value":831},{"type":375,"tag":800,"props":5643,"children":5644},{"style":834},[5645],{"type":384,"value":5646}," r",{"type":375,"tag":800,"props":5648,"children":5649},{"style":817},[5650],{"type":384,"value":841},{"type":375,"tag":800,"props":5652,"children":5653},{"style":823},[5654],{"type":384,"value":5655}," rows) {\n",{"type":375,"tag":800,"props":5657,"children":5659},{"class":802,"line":5658},55,[5660,5665,5670,5674,5679,5684,5689,5693,5698,5703,5707],{"type":375,"tag":800,"props":5661,"children":5662},{"style":817},[5663],{"type":384,"value":5664},"      const",{"type":375,"tag":800,"props":5666,"children":5667},{"style":834},[5668],{"type":384,"value":5669}," consumer",{"type":375,"tag":800,"props":5671,"children":5672},{"style":817},[5673],{"type":384,"value":935},{"type":375,"tag":800,"props":5675,"children":5676},{"style":823},[5677],{"type":384,"value":5678}," consumers.",{"type":375,"tag":800,"props":5680,"children":5681},{"style":854},[5682],{"type":384,"value":5683},"get",{"type":375,"tag":800,"props":5685,"children":5686},{"style":823},[5687],{"type":384,"value":5688},"(r.customer_id) ",{"type":375,"tag":800,"props":5690,"children":5691},{"style":817},[5692],{"type":384,"value":3091},{"type":375,"tag":800,"props":5694,"children":5695},{"style":823},[5696],{"type":384,"value":5697}," { id: r.customer_id, name: r.customer_name, endpoints: [] ",{"type":375,"tag":800,"props":5699,"children":5700},{"style":817},[5701],{"type":384,"value":5702},"as",{"type":375,"tag":800,"props":5704,"children":5705},{"style":854},[5706],{"type":384,"value":4235},{"type":375,"tag":800,"props":5708,"children":5709},{"style":823},[5710],{"type":384,"value":5711},"[] };\n",{"type":375,"tag":800,"props":5713,"children":5715},{"class":802,"line":5714},56,[5716,5720,5725,5729,5733,5738,5742,5747,5751,5755,5760,5764,5769,5774],{"type":375,"tag":800,"props":5717,"children":5718},{"style":817},[5719],{"type":384,"value":5664},{"type":375,"tag":800,"props":5721,"children":5722},{"style":834},[5723],{"type":384,"value":5724}," eventTypes",{"type":375,"tag":800,"props":5726,"children":5727},{"style":817},[5728],{"type":384,"value":2101},{"type":375,"tag":800,"props":5730,"children":5731},{"style":834},[5732],{"type":384,"value":4260},{"type":375,"tag":800,"props":5734,"children":5735},{"style":823},[5736],{"type":384,"value":5737},"[] ",{"type":375,"tag":800,"props":5739,"children":5740},{"style":817},[5741],{"type":384,"value":3431},{"type":375,"tag":800,"props":5743,"children":5744},{"style":823},[5745],{"type":384,"value":5746}," r.event_types?.",{"type":375,"tag":800,"props":5748,"children":5749},{"style":834},[5750],{"type":384,"value":3191},{"type":375,"tag":800,"props":5752,"children":5753},{"style":817},[5754],{"type":384,"value":5168},{"type":375,"tag":800,"props":5756,"children":5757},{"style":823},[5758],{"type":384,"value":5759}," r.event_types ",{"type":375,"tag":800,"props":5761,"children":5762},{"style":817},[5763],{"type":384,"value":2101},{"type":375,"tag":800,"props":5765,"children":5766},{"style":823},[5767],{"type":384,"value":5768}," [",{"type":375,"tag":800,"props":5770,"children":5771},{"style":988},[5772],{"type":384,"value":5773},"\"*\"",{"type":375,"tag":800,"props":5775,"children":5776},{"style":823},[5777],{"type":384,"value":5778},"];\n",{"type":375,"tag":800,"props":5780,"children":5782},{"class":802,"line":5781},57,[5783,5788,5792,5796,5801,5805,5810,5815,5820,5825,5830,5834,5838,5843,5848,5852,5857,5861,5865,5870,5875,5880,5885],{"type":375,"tag":800,"props":5784,"children":5785},{"style":817},[5786],{"type":384,"value":5787},"      for",{"type":375,"tag":800,"props":5789,"children":5790},{"style":823},[5791],{"type":384,"value":826},{"type":375,"tag":800,"props":5793,"children":5794},{"style":817},[5795],{"type":384,"value":831},{"type":375,"tag":800,"props":5797,"children":5798},{"style":834},[5799],{"type":384,"value":5800}," t",{"type":375,"tag":800,"props":5802,"children":5803},{"style":817},[5804],{"type":384,"value":841},{"type":375,"tag":800,"props":5806,"children":5807},{"style":823},[5808],{"type":384,"value":5809}," eventTypes) ",{"type":375,"tag":800,"props":5811,"children":5812},{"style":817},[5813],{"type":384,"value":5814},"if",{"type":375,"tag":800,"props":5816,"children":5817},{"style":823},[5818],{"type":384,"value":5819}," (t ",{"type":375,"tag":800,"props":5821,"children":5822},{"style":817},[5823],{"type":384,"value":5824},"!==",{"type":375,"tag":800,"props":5826,"children":5827},{"style":988},[5828],{"type":384,"value":5829}," \"*\"",{"type":375,"tag":800,"props":5831,"children":5832},{"style":817},[5833],{"type":384,"value":3210},{"type":375,"tag":800,"props":5835,"children":5836},{"style":817},[5837],{"type":384,"value":4947},{"type":375,"tag":800,"props":5839,"children":5840},{"style":823},[5841],{"type":384,"value":5842},"plan.eventTypes.",{"type":375,"tag":800,"props":5844,"children":5845},{"style":854},[5846],{"type":384,"value":5847},"some",{"type":375,"tag":800,"props":5849,"children":5850},{"style":823},[5851],{"type":384,"value":5538},{"type":375,"tag":800,"props":5853,"children":5854},{"style":2956},[5855],{"type":384,"value":5856},"x",{"type":375,"tag":800,"props":5858,"children":5859},{"style":823},[5860],{"type":384,"value":4844},{"type":375,"tag":800,"props":5862,"children":5863},{"style":817},[5864],{"type":384,"value":5552},{"type":375,"tag":800,"props":5866,"children":5867},{"style":823},[5868],{"type":384,"value":5869}," x.name ",{"type":375,"tag":800,"props":5871,"children":5872},{"style":817},[5873],{"type":384,"value":5874},"===",{"type":375,"tag":800,"props":5876,"children":5877},{"style":823},[5878],{"type":384,"value":5879}," t)) plan.eventTypes.",{"type":375,"tag":800,"props":5881,"children":5882},{"style":854},[5883],{"type":384,"value":5884},"push",{"type":375,"tag":800,"props":5886,"children":5887},{"style":823},[5888],{"type":384,"value":5889},"({ name: t });\n",{"type":375,"tag":800,"props":5891,"children":5893},{"class":802,"line":5892},58,[5894,5898,5902,5906,5910],{"type":375,"tag":800,"props":5895,"children":5896},{"style":817},[5897],{"type":384,"value":5664},{"type":375,"tag":800,"props":5899,"children":5900},{"style":834},[5901],{"type":384,"value":4752},{"type":375,"tag":800,"props":5903,"children":5904},{"style":817},[5905],{"type":384,"value":935},{"type":375,"tag":800,"props":5907,"children":5908},{"style":854},[5909],{"type":384,"value":4680},{"type":375,"tag":800,"props":5911,"children":5912},{"style":823},[5913],{"type":384,"value":5914},"(r.secret);\n",{"type":375,"tag":800,"props":5916,"children":5918},{"class":802,"line":5917},59,[5919,5924,5928,5932,5937,5941],{"type":375,"tag":800,"props":5920,"children":5921},{"style":817},[5922],{"type":384,"value":5923},"      if",{"type":375,"tag":800,"props":5925,"children":5926},{"style":823},[5927],{"type":384,"value":826},{"type":375,"tag":800,"props":5929,"children":5930},{"style":817},[5931],{"type":384,"value":1113},{"type":375,"tag":800,"props":5933,"children":5934},{"style":823},[5935],{"type":384,"value":5936},"secret) plan.newSecrets.",{"type":375,"tag":800,"props":5938,"children":5939},{"style":854},[5940],{"type":384,"value":5884},{"type":375,"tag":800,"props":5942,"children":5943},{"style":823},[5944],{"type":384,"value":5945},"(r.id);\n",{"type":375,"tag":800,"props":5947,"children":5949},{"class":802,"line":5948},60,[5950,5955,5959],{"type":375,"tag":800,"props":5951,"children":5952},{"style":823},[5953],{"type":384,"value":5954},"      consumer.endpoints.",{"type":375,"tag":800,"props":5956,"children":5957},{"style":854},[5958],{"type":384,"value":5884},{"type":375,"tag":800,"props":5960,"children":5961},{"style":823},[5962],{"type":384,"value":5963},"({\n",{"type":375,"tag":800,"props":5965,"children":5967},{"class":802,"line":5966},61,[5968,5973,5977,5981,5986,5990],{"type":375,"tag":800,"props":5969,"children":5970},{"style":823},[5971],{"type":384,"value":5972},"        sourceId: r.id, url: r.url, eventTypes, description: r.description ",{"type":375,"tag":800,"props":5974,"children":5975},{"style":817},[5976],{"type":384,"value":3091},{"type":375,"tag":800,"props":5978,"children":5979},{"style":834},[5980],{"type":384,"value":4715},{"type":375,"tag":800,"props":5982,"children":5983},{"style":823},[5984],{"type":384,"value":5985},", disabledAtSource: ",{"type":375,"tag":800,"props":5987,"children":5988},{"style":817},[5989],{"type":384,"value":1113},{"type":375,"tag":800,"props":5991,"children":5992},{"style":823},[5993],{"type":384,"value":5994},"r.enabled, secret,\n",{"type":375,"tag":800,"props":5996,"children":5998},{"class":802,"line":5997},62,[5999],{"type":375,"tag":800,"props":6000,"children":6001},{"style":823},[6002],{"type":384,"value":6003},"      });\n",{"type":375,"tag":800,"props":6005,"children":6007},{"class":802,"line":6006},63,[6008,6013,6018],{"type":375,"tag":800,"props":6009,"children":6010},{"style":823},[6011],{"type":384,"value":6012},"      consumers.",{"type":375,"tag":800,"props":6014,"children":6015},{"style":854},[6016],{"type":384,"value":6017},"set",{"type":375,"tag":800,"props":6019,"children":6020},{"style":823},[6021],{"type":384,"value":6022},"(r.customer_id, consumer);\n",{"type":375,"tag":800,"props":6024,"children":6026},{"class":802,"line":6025},64,[6027],{"type":375,"tag":800,"props":6028,"children":6029},{"style":823},[6030],{"type":384,"value":1692},{"type":375,"tag":800,"props":6032,"children":6034},{"class":802,"line":6033},65,[6035,6040,6044,6048,6053,6058,6063],{"type":375,"tag":800,"props":6036,"children":6037},{"style":823},[6038],{"type":384,"value":6039},"    plan.consumers ",{"type":375,"tag":800,"props":6041,"children":6042},{"style":817},[6043],{"type":384,"value":3431},{"type":375,"tag":800,"props":6045,"children":6046},{"style":823},[6047],{"type":384,"value":5768},{"type":375,"tag":800,"props":6049,"children":6050},{"style":817},[6051],{"type":384,"value":6052},"...",{"type":375,"tag":800,"props":6054,"children":6055},{"style":823},[6056],{"type":384,"value":6057},"consumers.",{"type":375,"tag":800,"props":6059,"children":6060},{"style":854},[6061],{"type":384,"value":6062},"values",{"type":375,"tag":800,"props":6064,"children":6065},{"style":823},[6066],{"type":384,"value":6067},"()];\n",{"type":375,"tag":800,"props":6069,"children":6071},{"class":802,"line":6070},66,[6072,6076],{"type":375,"tag":800,"props":6073,"children":6074},{"style":817},[6075],{"type":384,"value":3012},{"type":375,"tag":800,"props":6077,"children":6078},{"style":823},[6079],{"type":384,"value":6080}," plan;\n",{"type":375,"tag":800,"props":6082,"children":6084},{"class":802,"line":6083},67,[6085,6090,6095],{"type":375,"tag":800,"props":6086,"children":6087},{"style":823},[6088],{"type":384,"value":6089},"  } ",{"type":375,"tag":800,"props":6091,"children":6092},{"style":817},[6093],{"type":384,"value":6094},"finally",{"type":375,"tag":800,"props":6096,"children":6097},{"style":823},[6098],{"type":384,"value":1667},{"type":375,"tag":800,"props":6100,"children":6102},{"class":802,"line":6101},68,[6103,6108,6112,6117],{"type":375,"tag":800,"props":6104,"children":6105},{"style":817},[6106],{"type":384,"value":6107},"    await",{"type":375,"tag":800,"props":6109,"children":6110},{"style":823},[6111],{"type":384,"value":851},{"type":375,"tag":800,"props":6113,"children":6114},{"style":854},[6115],{"type":384,"value":6116},"end",{"type":375,"tag":800,"props":6118,"children":6119},{"style":823},[6120],{"type":384,"value":3173},{"type":375,"tag":800,"props":6122,"children":6124},{"class":802,"line":6123},69,[6125],{"type":375,"tag":800,"props":6126,"children":6127},{"style":823},[6128],{"type":384,"value":1156},{"type":375,"tag":800,"props":6130,"children":6132},{"class":802,"line":6131},70,[6133],{"type":375,"tag":800,"props":6134,"children":6135},{"style":823},[6136],{"type":384,"value":1188},{"type":375,"tag":800,"props":6138,"children":6140},{"class":802,"line":6139},71,[6141],{"type":375,"tag":800,"props":6142,"children":6143},{"emptyLinePlaceholder":1237},[6144],{"type":384,"value":1240},{"type":375,"tag":800,"props":6146,"children":6148},{"class":802,"line":6147},72,[6149],{"type":375,"tag":800,"props":6150,"children":6151},{"style":807},[6152],{"type":384,"value":6153},"// ---- 2. Check access and limits before writing anything ----\n",{"type":375,"tag":800,"props":6155,"children":6157},{"class":802,"line":6156},73,[6158,6162,6166,6171,6175,6180,6184,6188],{"type":375,"tag":800,"props":6159,"children":6160},{"style":817},[6161],{"type":384,"value":5219},{"type":375,"tag":800,"props":6163,"children":6164},{"style":817},[6165],{"type":384,"value":2944},{"type":375,"tag":800,"props":6167,"children":6168},{"style":854},[6169],{"type":384,"value":6170}," checkPlan",{"type":375,"tag":800,"props":6172,"children":6173},{"style":823},[6174],{"type":384,"value":862},{"type":375,"tag":800,"props":6176,"children":6177},{"style":2956},[6178],{"type":384,"value":6179},"plan",{"type":375,"tag":800,"props":6181,"children":6182},{"style":817},[6183],{"type":384,"value":2101},{"type":375,"tag":800,"props":6185,"children":6186},{"style":854},[6187],{"type":384,"value":4440},{"type":375,"tag":800,"props":6189,"children":6190},{"style":823},[6191],{"type":384,"value":2973},{"type":375,"tag":800,"props":6193,"children":6195},{"class":802,"line":6194},74,[6196,6200,6204,6208,6212,6216,6220,6224,6229,6234,6239,6244],{"type":375,"tag":800,"props":6197,"children":6198},{"style":817},[6199],{"type":384,"value":3054},{"type":375,"tag":800,"props":6201,"children":6202},{"style":834},[6203],{"type":384,"value":1038},{"type":375,"tag":800,"props":6205,"children":6206},{"style":817},[6207],{"type":384,"value":935},{"type":375,"tag":800,"props":6209,"children":6210},{"style":817},[6211],{"type":384,"value":846},{"type":375,"tag":800,"props":6213,"children":6214},{"style":854},[6215],{"type":384,"value":1051},{"type":375,"tag":800,"props":6217,"children":6218},{"style":823},[6219],{"type":384,"value":862},{"type":375,"tag":800,"props":6221,"children":6222},{"style":988},[6223],{"type":384,"value":3992},{"type":375,"tag":800,"props":6225,"children":6226},{"style":834},[6227],{"type":384,"value":6228},"RELAY_API",{"type":375,"tag":800,"props":6230,"children":6231},{"style":988},[6232],{"type":384,"value":6233},"}/v1/outbound/access`",{"type":375,"tag":800,"props":6235,"children":6236},{"style":823},[6237],{"type":384,"value":6238},", { headers: { Authorization: ",{"type":375,"tag":800,"props":6240,"children":6241},{"style":834},[6242],{"type":384,"value":6243},"AUTH",{"type":375,"tag":800,"props":6245,"children":6246},{"style":823},[6247],{"type":384,"value":6248}," } });\n",{"type":375,"tag":800,"props":6250,"children":6252},{"class":802,"line":6251},75,[6253,6257,6262,6266,6270,6275,6280],{"type":375,"tag":800,"props":6254,"children":6255},{"style":817},[6256],{"type":384,"value":3054},{"type":375,"tag":800,"props":6258,"children":6259},{"style":834},[6260],{"type":384,"value":6261}," access",{"type":375,"tag":800,"props":6263,"children":6264},{"style":817},[6265],{"type":384,"value":935},{"type":375,"tag":800,"props":6267,"children":6268},{"style":817},[6269],{"type":384,"value":846},{"type":375,"tag":800,"props":6271,"children":6272},{"style":823},[6273],{"type":384,"value":6274}," res.",{"type":375,"tag":800,"props":6276,"children":6277},{"style":854},[6278],{"type":384,"value":6279},"json",{"type":375,"tag":800,"props":6281,"children":6282},{"style":823},[6283],{"type":384,"value":3173},{"type":375,"tag":800,"props":6285,"children":6287},{"class":802,"line":6286},76,[6288,6292,6296,6300,6305,6310,6314,6319,6323,6328],{"type":375,"tag":800,"props":6289,"children":6290},{"style":817},[6291],{"type":384,"value":2981},{"type":375,"tag":800,"props":6293,"children":6294},{"style":823},[6295],{"type":384,"value":826},{"type":375,"tag":800,"props":6297,"children":6298},{"style":817},[6299],{"type":384,"value":1113},{"type":375,"tag":800,"props":6301,"children":6302},{"style":823},[6303],{"type":384,"value":6304},"access.enabled) ",{"type":375,"tag":800,"props":6306,"children":6307},{"style":817},[6308],{"type":384,"value":6309},"throw",{"type":375,"tag":800,"props":6311,"children":6312},{"style":817},[6313],{"type":384,"value":1261},{"type":375,"tag":800,"props":6315,"children":6316},{"style":854},[6317],{"type":384,"value":6318}," Error",{"type":375,"tag":800,"props":6320,"children":6321},{"style":823},[6322],{"type":384,"value":862},{"type":375,"tag":800,"props":6324,"children":6325},{"style":988},[6326],{"type":384,"value":6327},"\"The Outbound Gateway needs a Basic, Business or Pro plan: upgrade at https://my.webhookrelay.com/account.\"",{"type":375,"tag":800,"props":6329,"children":6330},{"style":823},[6331],{"type":384,"value":1025},{"type":375,"tag":800,"props":6333,"children":6335},{"class":802,"line":6334},77,[6336,6340,6345,6349,6354,6358,6362,6367,6371,6375,6379,6384,6388,6392,6396,6400,6404,6408],{"type":375,"tag":800,"props":6337,"children":6338},{"style":817},[6339],{"type":384,"value":3054},{"type":375,"tag":800,"props":6341,"children":6342},{"style":834},[6343],{"type":384,"value":6344}," limits",{"type":375,"tag":800,"props":6346,"children":6347},{"style":817},[6348],{"type":384,"value":935},{"type":375,"tag":800,"props":6350,"children":6351},{"style":823},[6352],{"type":384,"value":6353}," access.limits ",{"type":375,"tag":800,"props":6355,"children":6356},{"style":817},[6357],{"type":384,"value":5702},{"type":375,"tag":800,"props":6359,"children":6360},{"style":823},[6361],{"type":384,"value":4466},{"type":375,"tag":800,"props":6363,"children":6364},{"style":2956},[6365],{"type":384,"value":6366},"consumers",{"type":375,"tag":800,"props":6368,"children":6369},{"style":817},[6370],{"type":384,"value":2101},{"type":375,"tag":800,"props":6372,"children":6373},{"style":834},[6374],{"type":384,"value":4370},{"type":375,"tag":800,"props":6376,"children":6377},{"style":823},[6378],{"type":384,"value":2919},{"type":375,"tag":800,"props":6380,"children":6381},{"style":2956},[6382],{"type":384,"value":6383},"endpoints_per_consumer",{"type":375,"tag":800,"props":6385,"children":6386},{"style":817},[6387],{"type":384,"value":2101},{"type":375,"tag":800,"props":6389,"children":6390},{"style":834},[6391],{"type":384,"value":4370},{"type":375,"tag":800,"props":6393,"children":6394},{"style":823},[6395],{"type":384,"value":2919},{"type":375,"tag":800,"props":6397,"children":6398},{"style":2956},[6399],{"type":384,"value":527},{"type":375,"tag":800,"props":6401,"children":6402},{"style":817},[6403],{"type":384,"value":2101},{"type":375,"tag":800,"props":6405,"children":6406},{"style":834},[6407],{"type":384,"value":4370},{"type":375,"tag":800,"props":6409,"children":6410},{"style":823},[6411],{"type":384,"value":6412}," };\n",{"type":375,"tag":800,"props":6414,"children":6416},{"class":802,"line":6415},78,[6417],{"type":375,"tag":800,"props":6418,"children":6419},{"emptyLinePlaceholder":1237},[6420],{"type":384,"value":1240},{"type":375,"tag":800,"props":6422,"children":6424},{"class":802,"line":6423},79,[6425,6429,6434,6438,6442,6447,6451,6455,6459,6464,6469,6473,6477,6482,6486,6490],{"type":375,"tag":800,"props":6426,"children":6427},{"style":817},[6428],{"type":384,"value":3054},{"type":375,"tag":800,"props":6430,"children":6431},{"style":834},[6432],{"type":384,"value":6433}," haveConsumers",{"type":375,"tag":800,"props":6435,"children":6436},{"style":817},[6437],{"type":384,"value":935},{"type":375,"tag":800,"props":6439,"children":6440},{"style":817},[6441],{"type":384,"value":1261},{"type":375,"tag":800,"props":6443,"children":6444},{"style":854},[6445],{"type":384,"value":6446}," Set",{"type":375,"tag":800,"props":6448,"children":6449},{"style":823},[6450],{"type":384,"value":5538},{"type":375,"tag":800,"props":6452,"children":6453},{"style":817},[6454],{"type":384,"value":1123},{"type":375,"tag":800,"props":6456,"children":6457},{"style":823},[6458],{"type":384,"value":2329},{"type":375,"tag":800,"props":6460,"children":6461},{"style":854},[6462],{"type":384,"value":6463},"list",{"type":375,"tag":800,"props":6465,"children":6466},{"style":823},[6467],{"type":384,"value":6468},"()).",{"type":375,"tag":800,"props":6470,"children":6471},{"style":854},[6472],{"type":384,"value":5533},{"type":375,"tag":800,"props":6474,"children":6475},{"style":823},[6476],{"type":384,"value":5538},{"type":375,"tag":800,"props":6478,"children":6479},{"style":2956},[6480],{"type":384,"value":6481},"c",{"type":375,"tag":800,"props":6483,"children":6484},{"style":823},[6485],{"type":384,"value":4844},{"type":375,"tag":800,"props":6487,"children":6488},{"style":817},[6489],{"type":384,"value":5552},{"type":375,"tag":800,"props":6491,"children":6492},{"style":823},[6493],{"type":384,"value":6494}," c.id));\n",{"type":375,"tag":800,"props":6496,"children":6498},{"class":802,"line":6497},80,[6499,6503,6508,6512,6516,6520,6524,6528,6533,6537,6541,6545,6549,6554,6558,6562],{"type":375,"tag":800,"props":6500,"children":6501},{"style":817},[6502],{"type":384,"value":3054},{"type":375,"tag":800,"props":6504,"children":6505},{"style":834},[6506],{"type":384,"value":6507}," haveTypes",{"type":375,"tag":800,"props":6509,"children":6510},{"style":817},[6511],{"type":384,"value":935},{"type":375,"tag":800,"props":6513,"children":6514},{"style":817},[6515],{"type":384,"value":1261},{"type":375,"tag":800,"props":6517,"children":6518},{"style":854},[6519],{"type":384,"value":6446},{"type":375,"tag":800,"props":6521,"children":6522},{"style":823},[6523],{"type":384,"value":5538},{"type":375,"tag":800,"props":6525,"children":6526},{"style":817},[6527],{"type":384,"value":1123},{"type":375,"tag":800,"props":6529,"children":6530},{"style":823},[6531],{"type":384,"value":6532}," relay.outbound.eventTypes.",{"type":375,"tag":800,"props":6534,"children":6535},{"style":854},[6536],{"type":384,"value":6463},{"type":375,"tag":800,"props":6538,"children":6539},{"style":823},[6540],{"type":384,"value":6468},{"type":375,"tag":800,"props":6542,"children":6543},{"style":854},[6544],{"type":384,"value":5533},{"type":375,"tag":800,"props":6546,"children":6547},{"style":823},[6548],{"type":384,"value":5538},{"type":375,"tag":800,"props":6550,"children":6551},{"style":2956},[6552],{"type":384,"value":6553},"e",{"type":375,"tag":800,"props":6555,"children":6556},{"style":823},[6557],{"type":384,"value":4844},{"type":375,"tag":800,"props":6559,"children":6560},{"style":817},[6561],{"type":384,"value":5552},{"type":375,"tag":800,"props":6563,"children":6564},{"style":823},[6565],{"type":384,"value":6566}," e.name));\n",{"type":375,"tag":800,"props":6568,"children":6570},{"class":802,"line":6569},81,[6571,6575,6579,6583,6587,6591,6596,6600,6605,6609,6614,6618,6622,6626,6630,6634],{"type":375,"tag":800,"props":6572,"children":6573},{"style":817},[6574],{"type":384,"value":3054},{"type":375,"tag":800,"props":6576,"children":6577},{"style":834},[6578],{"type":384,"value":5570},{"type":375,"tag":800,"props":6580,"children":6581},{"style":817},[6582],{"type":384,"value":935},{"type":375,"tag":800,"props":6584,"children":6585},{"style":817},[6586],{"type":384,"value":1261},{"type":375,"tag":800,"props":6588,"children":6589},{"style":854},[6590],{"type":384,"value":6446},{"type":375,"tag":800,"props":6592,"children":6593},{"style":823},[6594],{"type":384,"value":6595},"([",{"type":375,"tag":800,"props":6597,"children":6598},{"style":817},[6599],{"type":384,"value":6052},{"type":375,"tag":800,"props":6601,"children":6602},{"style":823},[6603],{"type":384,"value":6604},"haveConsumers, ",{"type":375,"tag":800,"props":6606,"children":6607},{"style":817},[6608],{"type":384,"value":6052},{"type":375,"tag":800,"props":6610,"children":6611},{"style":823},[6612],{"type":384,"value":6613},"plan.consumers.",{"type":375,"tag":800,"props":6615,"children":6616},{"style":854},[6617],{"type":384,"value":5533},{"type":375,"tag":800,"props":6619,"children":6620},{"style":823},[6621],{"type":384,"value":5538},{"type":375,"tag":800,"props":6623,"children":6624},{"style":2956},[6625],{"type":384,"value":6481},{"type":375,"tag":800,"props":6627,"children":6628},{"style":823},[6629],{"type":384,"value":4844},{"type":375,"tag":800,"props":6631,"children":6632},{"style":817},[6633],{"type":384,"value":5552},{"type":375,"tag":800,"props":6635,"children":6636},{"style":823},[6637],{"type":384,"value":6638}," c.id)]).size;\n",{"type":375,"tag":800,"props":6640,"children":6642},{"class":802,"line":6641},82,[6643,6647,6652,6656,6660,6664,6668,6672,6677,6681,6685,6689,6693,6697,6701,6705],{"type":375,"tag":800,"props":6644,"children":6645},{"style":817},[6646],{"type":384,"value":3054},{"type":375,"tag":800,"props":6648,"children":6649},{"style":834},[6650],{"type":384,"value":6651}," types",{"type":375,"tag":800,"props":6653,"children":6654},{"style":817},[6655],{"type":384,"value":935},{"type":375,"tag":800,"props":6657,"children":6658},{"style":817},[6659],{"type":384,"value":1261},{"type":375,"tag":800,"props":6661,"children":6662},{"style":854},[6663],{"type":384,"value":6446},{"type":375,"tag":800,"props":6665,"children":6666},{"style":823},[6667],{"type":384,"value":6595},{"type":375,"tag":800,"props":6669,"children":6670},{"style":817},[6671],{"type":384,"value":6052},{"type":375,"tag":800,"props":6673,"children":6674},{"style":823},[6675],{"type":384,"value":6676},"haveTypes, ",{"type":375,"tag":800,"props":6678,"children":6679},{"style":817},[6680],{"type":384,"value":6052},{"type":375,"tag":800,"props":6682,"children":6683},{"style":823},[6684],{"type":384,"value":5842},{"type":375,"tag":800,"props":6686,"children":6687},{"style":854},[6688],{"type":384,"value":5533},{"type":375,"tag":800,"props":6690,"children":6691},{"style":823},[6692],{"type":384,"value":5538},{"type":375,"tag":800,"props":6694,"children":6695},{"style":2956},[6696],{"type":384,"value":6553},{"type":375,"tag":800,"props":6698,"children":6699},{"style":823},[6700],{"type":384,"value":4844},{"type":375,"tag":800,"props":6702,"children":6703},{"style":817},[6704],{"type":384,"value":5552},{"type":375,"tag":800,"props":6706,"children":6707},{"style":823},[6708],{"type":384,"value":6709}," e.name)]).size;\n",{"type":375,"tag":800,"props":6711,"children":6713},{"class":802,"line":6712},83,[6714],{"type":375,"tag":800,"props":6715,"children":6716},{"emptyLinePlaceholder":1237},[6717],{"type":384,"value":1240},{"type":375,"tag":800,"props":6719,"children":6721},{"class":802,"line":6720},84,[6722,6726,6731,6735,6739,6743,6747],{"type":375,"tag":800,"props":6723,"children":6724},{"style":817},[6725],{"type":384,"value":3054},{"type":375,"tag":800,"props":6727,"children":6728},{"style":834},[6729],{"type":384,"value":6730}," problems",{"type":375,"tag":800,"props":6732,"children":6733},{"style":817},[6734],{"type":384,"value":2101},{"type":375,"tag":800,"props":6736,"children":6737},{"style":834},[6738],{"type":384,"value":4260},{"type":375,"tag":800,"props":6740,"children":6741},{"style":823},[6742],{"type":384,"value":5737},{"type":375,"tag":800,"props":6744,"children":6745},{"style":817},[6746],{"type":384,"value":3431},{"type":375,"tag":800,"props":6748,"children":6749},{"style":823},[6750],{"type":384,"value":6751}," [];\n",{"type":375,"tag":800,"props":6753,"children":6755},{"class":802,"line":6754},85,[6756,6760,6765,6770,6775,6779,6783,6787,6791,6796,6801,6805,6809,6813],{"type":375,"tag":800,"props":6757,"children":6758},{"style":817},[6759],{"type":384,"value":2981},{"type":375,"tag":800,"props":6761,"children":6762},{"style":823},[6763],{"type":384,"value":6764}," (consumers ",{"type":375,"tag":800,"props":6766,"children":6767},{"style":817},[6768],{"type":384,"value":6769},">",{"type":375,"tag":800,"props":6771,"children":6772},{"style":823},[6773],{"type":384,"value":6774}," limits.consumers) problems.",{"type":375,"tag":800,"props":6776,"children":6777},{"style":854},[6778],{"type":384,"value":5884},{"type":375,"tag":800,"props":6780,"children":6781},{"style":823},[6782],{"type":384,"value":862},{"type":375,"tag":800,"props":6784,"children":6785},{"style":988},[6786],{"type":384,"value":3992},{"type":375,"tag":800,"props":6788,"children":6789},{"style":823},[6790],{"type":384,"value":6366},{"type":375,"tag":800,"props":6792,"children":6793},{"style":988},[6794],{"type":384,"value":6795},"} consumers exceed the limit of ${",{"type":375,"tag":800,"props":6797,"children":6798},{"style":823},[6799],{"type":384,"value":6800},"limits",{"type":375,"tag":800,"props":6802,"children":6803},{"style":988},[6804],{"type":384,"value":425},{"type":375,"tag":800,"props":6806,"children":6807},{"style":823},[6808],{"type":384,"value":6366},{"type":375,"tag":800,"props":6810,"children":6811},{"style":988},[6812],{"type":384,"value":1402},{"type":375,"tag":800,"props":6814,"children":6815},{"style":823},[6816],{"type":384,"value":1025},{"type":375,"tag":800,"props":6818,"children":6820},{"class":802,"line":6819},86,[6821,6825,6830,6834,6839,6843,6847,6851,6855,6860,6864,6868,6872,6876],{"type":375,"tag":800,"props":6822,"children":6823},{"style":817},[6824],{"type":384,"value":2981},{"type":375,"tag":800,"props":6826,"children":6827},{"style":823},[6828],{"type":384,"value":6829}," (types ",{"type":375,"tag":800,"props":6831,"children":6832},{"style":817},[6833],{"type":384,"value":6769},{"type":375,"tag":800,"props":6835,"children":6836},{"style":823},[6837],{"type":384,"value":6838}," limits.event_types) problems.",{"type":375,"tag":800,"props":6840,"children":6841},{"style":854},[6842],{"type":384,"value":5884},{"type":375,"tag":800,"props":6844,"children":6845},{"style":823},[6846],{"type":384,"value":862},{"type":375,"tag":800,"props":6848,"children":6849},{"style":988},[6850],{"type":384,"value":3992},{"type":375,"tag":800,"props":6852,"children":6853},{"style":823},[6854],{"type":384,"value":5457},{"type":375,"tag":800,"props":6856,"children":6857},{"style":988},[6858],{"type":384,"value":6859},"} event types exceed the limit of ${",{"type":375,"tag":800,"props":6861,"children":6862},{"style":823},[6863],{"type":384,"value":6800},{"type":375,"tag":800,"props":6865,"children":6866},{"style":988},[6867],{"type":384,"value":425},{"type":375,"tag":800,"props":6869,"children":6870},{"style":823},[6871],{"type":384,"value":527},{"type":375,"tag":800,"props":6873,"children":6874},{"style":988},[6875],{"type":384,"value":1402},{"type":375,"tag":800,"props":6877,"children":6878},{"style":823},[6879],{"type":384,"value":1025},{"type":375,"tag":800,"props":6881,"children":6883},{"class":802,"line":6882},87,[6884,6888,6892,6896,6901,6905,6910,6914,6918,6922,6927,6931,6935,6940,6944,6948,6953,6958,6962,6966,6971],{"type":375,"tag":800,"props":6885,"children":6886},{"style":817},[6887],{"type":384,"value":881},{"type":375,"tag":800,"props":6889,"children":6890},{"style":823},[6891],{"type":384,"value":826},{"type":375,"tag":800,"props":6893,"children":6894},{"style":817},[6895],{"type":384,"value":831},{"type":375,"tag":800,"props":6897,"children":6898},{"style":834},[6899],{"type":384,"value":6900}," et",{"type":375,"tag":800,"props":6902,"children":6903},{"style":817},[6904],{"type":384,"value":841},{"type":375,"tag":800,"props":6906,"children":6907},{"style":823},[6908],{"type":384,"value":6909}," plan.eventTypes) ",{"type":375,"tag":800,"props":6911,"children":6912},{"style":817},[6913],{"type":384,"value":5814},{"type":375,"tag":800,"props":6915,"children":6916},{"style":823},[6917],{"type":384,"value":826},{"type":375,"tag":800,"props":6919,"children":6920},{"style":817},[6921],{"type":384,"value":1113},{"type":375,"tag":800,"props":6923,"children":6924},{"style":834},[6925],{"type":384,"value":6926},"ID",{"type":375,"tag":800,"props":6928,"children":6929},{"style":823},[6930],{"type":384,"value":425},{"type":375,"tag":800,"props":6932,"children":6933},{"style":854},[6934],{"type":384,"value":4987},{"type":375,"tag":800,"props":6936,"children":6937},{"style":823},[6938],{"type":384,"value":6939},"(et.name)) problems.",{"type":375,"tag":800,"props":6941,"children":6942},{"style":854},[6943],{"type":384,"value":5884},{"type":375,"tag":800,"props":6945,"children":6946},{"style":823},[6947],{"type":384,"value":862},{"type":375,"tag":800,"props":6949,"children":6950},{"style":988},[6951],{"type":384,"value":6952},"`event type \"${",{"type":375,"tag":800,"props":6954,"children":6955},{"style":823},[6956],{"type":384,"value":6957},"et",{"type":375,"tag":800,"props":6959,"children":6960},{"style":988},[6961],{"type":384,"value":425},{"type":375,"tag":800,"props":6963,"children":6964},{"style":823},[6965],{"type":384,"value":4471},{"type":375,"tag":800,"props":6967,"children":6968},{"style":988},[6969],{"type":384,"value":6970},"}\" is not a valid name`",{"type":375,"tag":800,"props":6972,"children":6973},{"style":823},[6974],{"type":384,"value":1025},{"type":375,"tag":800,"props":6976,"children":6978},{"class":802,"line":6977},88,[6979,6983,6987,6991,6996,7000],{"type":375,"tag":800,"props":6980,"children":6981},{"style":817},[6982],{"type":384,"value":881},{"type":375,"tag":800,"props":6984,"children":6985},{"style":823},[6986],{"type":384,"value":826},{"type":375,"tag":800,"props":6988,"children":6989},{"style":817},[6990],{"type":384,"value":831},{"type":375,"tag":800,"props":6992,"children":6993},{"style":834},[6994],{"type":384,"value":6995}," c",{"type":375,"tag":800,"props":6997,"children":6998},{"style":817},[6999],{"type":384,"value":841},{"type":375,"tag":800,"props":7001,"children":7002},{"style":823},[7003],{"type":384,"value":7004}," plan.consumers) {\n",{"type":375,"tag":800,"props":7006,"children":7008},{"class":802,"line":7007},89,[7009,7013,7017,7021,7025,7029,7033,7038,7042,7046,7051,7055,7059,7063,7068],{"type":375,"tag":800,"props":7010,"children":7011},{"style":817},[7012],{"type":384,"value":1104},{"type":375,"tag":800,"props":7014,"children":7015},{"style":823},[7016],{"type":384,"value":826},{"type":375,"tag":800,"props":7018,"children":7019},{"style":817},[7020],{"type":384,"value":1113},{"type":375,"tag":800,"props":7022,"children":7023},{"style":834},[7024],{"type":384,"value":6926},{"type":375,"tag":800,"props":7026,"children":7027},{"style":823},[7028],{"type":384,"value":425},{"type":375,"tag":800,"props":7030,"children":7031},{"style":854},[7032],{"type":384,"value":4987},{"type":375,"tag":800,"props":7034,"children":7035},{"style":823},[7036],{"type":384,"value":7037},"(c.id)) problems.",{"type":375,"tag":800,"props":7039,"children":7040},{"style":854},[7041],{"type":384,"value":5884},{"type":375,"tag":800,"props":7043,"children":7044},{"style":823},[7045],{"type":384,"value":862},{"type":375,"tag":800,"props":7047,"children":7048},{"style":988},[7049],{"type":384,"value":7050},"`consumer \"${",{"type":375,"tag":800,"props":7052,"children":7053},{"style":823},[7054],{"type":384,"value":6481},{"type":375,"tag":800,"props":7056,"children":7057},{"style":988},[7058],{"type":384,"value":425},{"type":375,"tag":800,"props":7060,"children":7061},{"style":823},[7062],{"type":384,"value":1397},{"type":375,"tag":800,"props":7064,"children":7065},{"style":988},[7066],{"type":384,"value":7067},"}\" is not a valid ID: map it to another customer ID`",{"type":375,"tag":800,"props":7069,"children":7070},{"style":823},[7071],{"type":384,"value":1025},{"type":375,"tag":800,"props":7073,"children":7075},{"class":802,"line":7074},90,[7076,7080,7085,7089,7093],{"type":375,"tag":800,"props":7077,"children":7078},{"style":817},[7079],{"type":384,"value":1104},{"type":375,"tag":800,"props":7081,"children":7082},{"style":823},[7083],{"type":384,"value":7084}," (c.endpoints.",{"type":375,"tag":800,"props":7086,"children":7087},{"style":834},[7088],{"type":384,"value":3191},{"type":375,"tag":800,"props":7090,"children":7091},{"style":817},[7092],{"type":384,"value":4933},{"type":375,"tag":800,"props":7094,"children":7095},{"style":823},[7096],{"type":384,"value":7097}," limits.endpoints_per_consumer)\n",{"type":375,"tag":800,"props":7099,"children":7101},{"class":802,"line":7100},91,[7102,7107,7111,7115,7119,7123,7127,7131,7136,7140,7144,7148,7152,7156,7161,7165,7169,7173,7177],{"type":375,"tag":800,"props":7103,"children":7104},{"style":823},[7105],{"type":384,"value":7106},"      problems.",{"type":375,"tag":800,"props":7108,"children":7109},{"style":854},[7110],{"type":384,"value":5884},{"type":375,"tag":800,"props":7112,"children":7113},{"style":823},[7114],{"type":384,"value":862},{"type":375,"tag":800,"props":7116,"children":7117},{"style":988},[7118],{"type":384,"value":3992},{"type":375,"tag":800,"props":7120,"children":7121},{"style":823},[7122],{"type":384,"value":6481},{"type":375,"tag":800,"props":7124,"children":7125},{"style":988},[7126],{"type":384,"value":425},{"type":375,"tag":800,"props":7128,"children":7129},{"style":823},[7130],{"type":384,"value":1397},{"type":375,"tag":800,"props":7132,"children":7133},{"style":988},[7134],{"type":384,"value":7135},"} has ${",{"type":375,"tag":800,"props":7137,"children":7138},{"style":823},[7139],{"type":384,"value":6481},{"type":375,"tag":800,"props":7141,"children":7142},{"style":988},[7143],{"type":384,"value":425},{"type":375,"tag":800,"props":7145,"children":7146},{"style":823},[7147],{"type":384,"value":4571},{"type":375,"tag":800,"props":7149,"children":7150},{"style":988},[7151],{"type":384,"value":425},{"type":375,"tag":800,"props":7153,"children":7154},{"style":834},[7155],{"type":384,"value":3191},{"type":375,"tag":800,"props":7157,"children":7158},{"style":988},[7159],{"type":384,"value":7160},"} endpoints, the limit is ${",{"type":375,"tag":800,"props":7162,"children":7163},{"style":823},[7164],{"type":384,"value":6800},{"type":375,"tag":800,"props":7166,"children":7167},{"style":988},[7168],{"type":384,"value":425},{"type":375,"tag":800,"props":7170,"children":7171},{"style":823},[7172],{"type":384,"value":6383},{"type":375,"tag":800,"props":7174,"children":7175},{"style":988},[7176],{"type":384,"value":1402},{"type":375,"tag":800,"props":7178,"children":7179},{"style":823},[7180],{"type":384,"value":1025},{"type":375,"tag":800,"props":7182,"children":7184},{"class":802,"line":7183},92,[7185,7189,7193,7197,7202,7206],{"type":375,"tag":800,"props":7186,"children":7187},{"style":817},[7188],{"type":384,"value":5633},{"type":375,"tag":800,"props":7190,"children":7191},{"style":823},[7192],{"type":384,"value":826},{"type":375,"tag":800,"props":7194,"children":7195},{"style":817},[7196],{"type":384,"value":831},{"type":375,"tag":800,"props":7198,"children":7199},{"style":834},[7200],{"type":384,"value":7201}," e",{"type":375,"tag":800,"props":7203,"children":7204},{"style":817},[7205],{"type":384,"value":841},{"type":375,"tag":800,"props":7207,"children":7208},{"style":823},[7209],{"type":384,"value":7210}," c.endpoints) {\n",{"type":375,"tag":800,"props":7212,"children":7214},{"class":802,"line":7213},93,[7215,7219,7223,7227,7232,7236,7240,7245,7250,7254,7258,7262,7266,7270,7274,7279,7283,7287,7291,7296],{"type":375,"tag":800,"props":7216,"children":7217},{"style":817},[7218],{"type":384,"value":5923},{"type":375,"tag":800,"props":7220,"children":7221},{"style":823},[7222],{"type":384,"value":826},{"type":375,"tag":800,"props":7224,"children":7225},{"style":817},[7226],{"type":384,"value":1113},{"type":375,"tag":800,"props":7228,"children":7229},{"style":823},[7230],{"type":384,"value":7231},"e.url.",{"type":375,"tag":800,"props":7233,"children":7234},{"style":854},[7235],{"type":384,"value":4830},{"type":375,"tag":800,"props":7237,"children":7238},{"style":823},[7239],{"type":384,"value":862},{"type":375,"tag":800,"props":7241,"children":7242},{"style":988},[7243],{"type":384,"value":7244},"\"https://\"",{"type":375,"tag":800,"props":7246,"children":7247},{"style":823},[7248],{"type":384,"value":7249},")) problems.",{"type":375,"tag":800,"props":7251,"children":7252},{"style":854},[7253],{"type":384,"value":5884},{"type":375,"tag":800,"props":7255,"children":7256},{"style":823},[7257],{"type":384,"value":862},{"type":375,"tag":800,"props":7259,"children":7260},{"style":988},[7261],{"type":384,"value":3992},{"type":375,"tag":800,"props":7263,"children":7264},{"style":823},[7265],{"type":384,"value":6481},{"type":375,"tag":800,"props":7267,"children":7268},{"style":988},[7269],{"type":384,"value":425},{"type":375,"tag":800,"props":7271,"children":7272},{"style":823},[7273],{"type":384,"value":1397},{"type":375,"tag":800,"props":7275,"children":7276},{"style":988},[7277],{"type":384,"value":7278},"} ${",{"type":375,"tag":800,"props":7280,"children":7281},{"style":823},[7282],{"type":384,"value":6553},{"type":375,"tag":800,"props":7284,"children":7285},{"style":988},[7286],{"type":384,"value":425},{"type":375,"tag":800,"props":7288,"children":7289},{"style":823},[7290],{"type":384,"value":3636},{"type":375,"tag":800,"props":7292,"children":7293},{"style":988},[7294],{"type":384,"value":7295},"}: endpoints must be public HTTPS`",{"type":375,"tag":800,"props":7297,"children":7298},{"style":823},[7299],{"type":384,"value":1025},{"type":375,"tag":800,"props":7301,"children":7303},{"class":802,"line":7302},94,[7304,7308,7313,7317,7321,7325,7330,7334,7338,7342,7346,7350,7354,7358,7362,7366,7370,7375],{"type":375,"tag":800,"props":7305,"children":7306},{"style":817},[7307],{"type":384,"value":5923},{"type":375,"tag":800,"props":7309,"children":7310},{"style":823},[7311],{"type":384,"value":7312}," (e.eventTypes.",{"type":375,"tag":800,"props":7314,"children":7315},{"style":834},[7316],{"type":384,"value":3191},{"type":375,"tag":800,"props":7318,"children":7319},{"style":817},[7320],{"type":384,"value":4933},{"type":375,"tag":800,"props":7322,"children":7323},{"style":834},[7324],{"type":384,"value":4938},{"type":375,"tag":800,"props":7326,"children":7327},{"style":823},[7328],{"type":384,"value":7329},") problems.",{"type":375,"tag":800,"props":7331,"children":7332},{"style":854},[7333],{"type":384,"value":5884},{"type":375,"tag":800,"props":7335,"children":7336},{"style":823},[7337],{"type":384,"value":862},{"type":375,"tag":800,"props":7339,"children":7340},{"style":988},[7341],{"type":384,"value":3992},{"type":375,"tag":800,"props":7343,"children":7344},{"style":823},[7345],{"type":384,"value":6481},{"type":375,"tag":800,"props":7347,"children":7348},{"style":988},[7349],{"type":384,"value":425},{"type":375,"tag":800,"props":7351,"children":7352},{"style":823},[7353],{"type":384,"value":1397},{"type":375,"tag":800,"props":7355,"children":7356},{"style":988},[7357],{"type":384,"value":7278},{"type":375,"tag":800,"props":7359,"children":7360},{"style":823},[7361],{"type":384,"value":6553},{"type":375,"tag":800,"props":7363,"children":7364},{"style":988},[7365],{"type":384,"value":425},{"type":375,"tag":800,"props":7367,"children":7368},{"style":823},[7369],{"type":384,"value":3636},{"type":375,"tag":800,"props":7371,"children":7372},{"style":988},[7373],{"type":384,"value":7374},"}: more than 100 event types`",{"type":375,"tag":800,"props":7376,"children":7377},{"style":823},[7378],{"type":384,"value":1025},{"type":375,"tag":800,"props":7380,"children":7382},{"class":802,"line":7381},95,[7383],{"type":375,"tag":800,"props":7384,"children":7385},{"style":823},[7386],{"type":384,"value":1692},{"type":375,"tag":800,"props":7388,"children":7390},{"class":802,"line":7389},96,[7391],{"type":375,"tag":800,"props":7392,"children":7393},{"style":823},[7394],{"type":384,"value":1156},{"type":375,"tag":800,"props":7396,"children":7398},{"class":802,"line":7397},97,[7399,7403,7407,7411,7416,7420,7425,7430,7434,7439,7444,7448],{"type":375,"tag":800,"props":7400,"children":7401},{"style":817},[7402],{"type":384,"value":881},{"type":375,"tag":800,"props":7404,"children":7405},{"style":823},[7406],{"type":384,"value":826},{"type":375,"tag":800,"props":7408,"children":7409},{"style":817},[7410],{"type":384,"value":831},{"type":375,"tag":800,"props":7412,"children":7413},{"style":834},[7414],{"type":384,"value":7415}," w",{"type":375,"tag":800,"props":7417,"children":7418},{"style":817},[7419],{"type":384,"value":841},{"type":375,"tag":800,"props":7421,"children":7422},{"style":823},[7423],{"type":384,"value":7424}," plan.warnings) console.",{"type":375,"tag":800,"props":7426,"children":7427},{"style":854},[7428],{"type":384,"value":7429},"warn",{"type":375,"tag":800,"props":7431,"children":7432},{"style":823},[7433],{"type":384,"value":862},{"type":375,"tag":800,"props":7435,"children":7436},{"style":988},[7437],{"type":384,"value":7438},"`warning: ${",{"type":375,"tag":800,"props":7440,"children":7441},{"style":823},[7442],{"type":384,"value":7443},"w",{"type":375,"tag":800,"props":7445,"children":7446},{"style":988},[7447],{"type":384,"value":1402},{"type":375,"tag":800,"props":7449,"children":7450},{"style":823},[7451],{"type":384,"value":1025},{"type":375,"tag":800,"props":7453,"children":7455},{"class":802,"line":7454},98,[7456,7460,7465,7469],{"type":375,"tag":800,"props":7457,"children":7458},{"style":817},[7459],{"type":384,"value":2981},{"type":375,"tag":800,"props":7461,"children":7462},{"style":823},[7463],{"type":384,"value":7464}," (problems.",{"type":375,"tag":800,"props":7466,"children":7467},{"style":834},[7468],{"type":384,"value":3191},{"type":375,"tag":800,"props":7470,"children":7471},{"style":823},[7472],{"type":384,"value":2973},{"type":375,"tag":800,"props":7474,"children":7476},{"class":802,"line":7475},99,[7477,7482,7487,7491,7496,7501,7506,7511,7515,7520,7524,7528,7532,7537,7541,7545],{"type":375,"tag":800,"props":7478,"children":7479},{"style":823},[7480],{"type":384,"value":7481},"    console.",{"type":375,"tag":800,"props":7483,"children":7484},{"style":854},[7485],{"type":384,"value":7486},"error",{"type":375,"tag":800,"props":7488,"children":7489},{"style":823},[7490],{"type":384,"value":862},{"type":375,"tag":800,"props":7492,"children":7493},{"style":988},[7494],{"type":384,"value":7495},"`Not importing:",{"type":375,"tag":800,"props":7497,"children":7498},{"style":834},[7499],{"type":384,"value":7500},"\\n",{"type":375,"tag":800,"props":7502,"children":7503},{"style":988},[7504],{"type":384,"value":7505},"- ${",{"type":375,"tag":800,"props":7507,"children":7508},{"style":823},[7509],{"type":384,"value":7510},"problems",{"type":375,"tag":800,"props":7512,"children":7513},{"style":988},[7514],{"type":384,"value":425},{"type":375,"tag":800,"props":7516,"children":7517},{"style":854},[7518],{"type":384,"value":7519},"join",{"type":375,"tag":800,"props":7521,"children":7522},{"style":988},[7523],{"type":384,"value":862},{"type":375,"tag":800,"props":7525,"children":7526},{"style":988},[7527],{"type":384,"value":2111},{"type":375,"tag":800,"props":7529,"children":7530},{"style":834},[7531],{"type":384,"value":7500},{"type":375,"tag":800,"props":7533,"children":7534},{"style":988},[7535],{"type":384,"value":7536},"- \"",{"type":375,"tag":800,"props":7538,"children":7539},{"style":988},[7540],{"type":384,"value":569},{"type":375,"tag":800,"props":7542,"children":7543},{"style":988},[7544],{"type":384,"value":1402},{"type":375,"tag":800,"props":7546,"children":7547},{"style":823},[7548],{"type":384,"value":1025},{"type":375,"tag":800,"props":7550,"children":7552},{"class":802,"line":7551},100,[7553,7558,7563,7567,7572],{"type":375,"tag":800,"props":7554,"children":7555},{"style":823},[7556],{"type":384,"value":7557},"    process.",{"type":375,"tag":800,"props":7559,"children":7560},{"style":854},[7561],{"type":384,"value":7562},"exit",{"type":375,"tag":800,"props":7564,"children":7565},{"style":823},[7566],{"type":384,"value":862},{"type":375,"tag":800,"props":7568,"children":7569},{"style":834},[7570],{"type":384,"value":7571},"1",{"type":375,"tag":800,"props":7573,"children":7574},{"style":823},[7575],{"type":384,"value":1025},{"type":375,"tag":800,"props":7577,"children":7579},{"class":802,"line":7578},101,[7580],{"type":375,"tag":800,"props":7581,"children":7582},{"style":823},[7583],{"type":384,"value":1156},{"type":375,"tag":800,"props":7585,"children":7587},{"class":802,"line":7586},102,[7588],{"type":375,"tag":800,"props":7589,"children":7590},{"style":823},[7591],{"type":384,"value":1188},{"type":375,"tag":800,"props":7593,"children":7595},{"class":802,"line":7594},103,[7596],{"type":375,"tag":800,"props":7597,"children":7598},{"emptyLinePlaceholder":1237},[7599],{"type":384,"value":1240},{"type":375,"tag":800,"props":7601,"children":7603},{"class":802,"line":7602},104,[7604],{"type":375,"tag":800,"props":7605,"children":7606},{"style":807},[7607],{"type":384,"value":7608},"// ---- 3. Import into Webhook Relay ----\n",{"type":375,"tag":800,"props":7610,"children":7612},{"class":802,"line":7611},105,[7613,7617,7622,7626,7630,7634,7638,7642,7646,7651,7655,7660,7664,7669,7673,7677,7681,7685,7690,7694,7699,7703,7707,7711,7716,7721,7725],{"type":375,"tag":800,"props":7614,"children":7615},{"style":817},[7616],{"type":384,"value":831},{"type":375,"tag":800,"props":7618,"children":7619},{"style":834},[7620],{"type":384,"value":7621}," state",{"type":375,"tag":800,"props":7623,"children":7624},{"style":817},[7625],{"type":384,"value":2101},{"type":375,"tag":800,"props":7627,"children":7628},{"style":854},[7629],{"type":384,"value":4334},{"type":375,"tag":800,"props":7631,"children":7632},{"style":823},[7633],{"type":384,"value":4339},{"type":375,"tag":800,"props":7635,"children":7636},{"style":834},[7637],{"type":384,"value":4344},{"type":375,"tag":800,"props":7639,"children":7640},{"style":823},[7641],{"type":384,"value":725},{"type":375,"tag":800,"props":7643,"children":7644},{"style":834},[7645],{"type":384,"value":4344},{"type":375,"tag":800,"props":7647,"children":7648},{"style":823},[7649],{"type":384,"value":7650},"> ",{"type":375,"tag":800,"props":7652,"children":7653},{"style":817},[7654],{"type":384,"value":3431},{"type":375,"tag":800,"props":7656,"children":7657},{"style":854},[7658],{"type":384,"value":7659}," existsSync",{"type":375,"tag":800,"props":7661,"children":7662},{"style":823},[7663],{"type":384,"value":862},{"type":375,"tag":800,"props":7665,"children":7666},{"style":834},[7667],{"type":384,"value":7668},"STATE_FILE",{"type":375,"tag":800,"props":7670,"children":7671},{"style":823},[7672],{"type":384,"value":4844},{"type":375,"tag":800,"props":7674,"children":7675},{"style":817},[7676],{"type":384,"value":4849},{"type":375,"tag":800,"props":7678,"children":7679},{"style":834},[7680],{"type":384,"value":940},{"type":375,"tag":800,"props":7682,"children":7683},{"style":823},[7684],{"type":384,"value":425},{"type":375,"tag":800,"props":7686,"children":7687},{"style":854},[7688],{"type":384,"value":7689},"parse",{"type":375,"tag":800,"props":7691,"children":7692},{"style":823},[7693],{"type":384,"value":862},{"type":375,"tag":800,"props":7695,"children":7696},{"style":854},[7697],{"type":384,"value":7698},"readFileSync",{"type":375,"tag":800,"props":7700,"children":7701},{"style":823},[7702],{"type":384,"value":862},{"type":375,"tag":800,"props":7704,"children":7705},{"style":834},[7706],{"type":384,"value":7668},{"type":375,"tag":800,"props":7708,"children":7709},{"style":823},[7710],{"type":384,"value":725},{"type":375,"tag":800,"props":7712,"children":7713},{"style":988},[7714],{"type":384,"value":7715},"\"utf8\"",{"type":375,"tag":800,"props":7717,"children":7718},{"style":823},[7719],{"type":384,"value":7720},")) ",{"type":375,"tag":800,"props":7722,"children":7723},{"style":817},[7724],{"type":384,"value":2101},{"type":375,"tag":800,"props":7726,"children":7727},{"style":823},[7728],{"type":384,"value":7729}," {};\n",{"type":375,"tag":800,"props":7731,"children":7733},{"class":802,"line":7732},106,[7734],{"type":375,"tag":800,"props":7735,"children":7736},{"emptyLinePlaceholder":1237},[7737],{"type":384,"value":1240},{"type":375,"tag":800,"props":7739,"children":7741},{"class":802,"line":7740},107,[7742,7747,7752,7757,7761],{"type":375,"tag":800,"props":7743,"children":7744},{"style":817},[7745],{"type":384,"value":7746},"class",{"type":375,"tag":800,"props":7748,"children":7749},{"style":854},[7750],{"type":384,"value":7751}," HTTPError",{"type":375,"tag":800,"props":7753,"children":7754},{"style":817},[7755],{"type":384,"value":7756}," extends",{"type":375,"tag":800,"props":7758,"children":7759},{"style":854},[7760],{"type":384,"value":6318},{"type":375,"tag":800,"props":7762,"children":7763},{"style":823},[7764],{"type":384,"value":1667},{"type":375,"tag":800,"props":7766,"children":7768},{"class":802,"line":7767},108,[7769,7774,7778,7783,7788,7792,7796,7800,7805,7809,7813,7818,7823],{"type":375,"tag":800,"props":7770,"children":7771},{"style":817},[7772],{"type":384,"value":7773},"  constructor",{"type":375,"tag":800,"props":7775,"children":7776},{"style":823},[7777],{"type":384,"value":862},{"type":375,"tag":800,"props":7779,"children":7780},{"style":817},[7781],{"type":384,"value":7782},"readonly",{"type":375,"tag":800,"props":7784,"children":7785},{"style":2956},[7786],{"type":384,"value":7787}," status",{"type":375,"tag":800,"props":7789,"children":7790},{"style":817},[7791],{"type":384,"value":2101},{"type":375,"tag":800,"props":7793,"children":7794},{"style":834},[7795],{"type":384,"value":4370},{"type":375,"tag":800,"props":7797,"children":7798},{"style":823},[7799],{"type":384,"value":725},{"type":375,"tag":800,"props":7801,"children":7802},{"style":2956},[7803],{"type":384,"value":7804},"message",{"type":375,"tag":800,"props":7806,"children":7807},{"style":817},[7808],{"type":384,"value":2101},{"type":375,"tag":800,"props":7810,"children":7811},{"style":834},[7812],{"type":384,"value":4260},{"type":375,"tag":800,"props":7814,"children":7815},{"style":823},[7816],{"type":384,"value":7817},") { ",{"type":375,"tag":800,"props":7819,"children":7820},{"style":834},[7821],{"type":384,"value":7822},"super",{"type":375,"tag":800,"props":7824,"children":7825},{"style":823},[7826],{"type":384,"value":7827},"(message); }\n",{"type":375,"tag":800,"props":7829,"children":7831},{"class":802,"line":7830},109,[7832],{"type":375,"tag":800,"props":7833,"children":7834},{"style":823},[7835],{"type":384,"value":1188},{"type":375,"tag":800,"props":7837,"children":7839},{"class":802,"line":7838},110,[7840,7844,7849,7853,7857,7862,7866,7871,7875],{"type":375,"tag":800,"props":7841,"children":7842},{"style":817},[7843],{"type":384,"value":831},{"type":375,"tag":800,"props":7845,"children":7846},{"style":854},[7847],{"type":384,"value":7848}," statusOf",{"type":375,"tag":800,"props":7850,"children":7851},{"style":817},[7852],{"type":384,"value":935},{"type":375,"tag":800,"props":7854,"children":7855},{"style":823},[7856],{"type":384,"value":826},{"type":375,"tag":800,"props":7858,"children":7859},{"style":2956},[7860],{"type":384,"value":7861},"err",{"type":375,"tag":800,"props":7863,"children":7864},{"style":817},[7865],{"type":384,"value":2101},{"type":375,"tag":800,"props":7867,"children":7868},{"style":834},[7869],{"type":384,"value":7870}," unknown",{"type":375,"tag":800,"props":7872,"children":7873},{"style":823},[7874],{"type":384,"value":4844},{"type":375,"tag":800,"props":7876,"children":7877},{"style":817},[7878],{"type":384,"value":7879},"=>\n",{"type":375,"tag":800,"props":7881,"children":7883},{"class":802,"line":7882},111,[7884,7889,7894,7899,7903,7907,7911,7915,7919,7924,7928,7932],{"type":375,"tag":800,"props":7885,"children":7886},{"style":823},[7887],{"type":384,"value":7888},"  err ",{"type":375,"tag":800,"props":7890,"children":7891},{"style":817},[7892],{"type":384,"value":7893},"instanceof",{"type":375,"tag":800,"props":7895,"children":7896},{"style":854},[7897],{"type":384,"value":7898}," WebhookRelayAPIError",{"type":375,"tag":800,"props":7900,"children":7901},{"style":817},[7902],{"type":384,"value":4919},{"type":375,"tag":800,"props":7904,"children":7905},{"style":823},[7906],{"type":384,"value":1652},{"type":375,"tag":800,"props":7908,"children":7909},{"style":817},[7910],{"type":384,"value":7893},{"type":375,"tag":800,"props":7912,"children":7913},{"style":854},[7914],{"type":384,"value":7751},{"type":375,"tag":800,"props":7916,"children":7917},{"style":817},[7918],{"type":384,"value":5168},{"type":375,"tag":800,"props":7920,"children":7921},{"style":823},[7922],{"type":384,"value":7923}," err.status ",{"type":375,"tag":800,"props":7925,"children":7926},{"style":817},[7927],{"type":384,"value":2101},{"type":375,"tag":800,"props":7929,"children":7930},{"style":834},[7931],{"type":384,"value":4715},{"type":375,"tag":800,"props":7933,"children":7934},{"style":823},[7935],{"type":384,"value":1231},{"type":375,"tag":800,"props":7937,"children":7939},{"class":802,"line":7938},112,[7940],{"type":375,"tag":800,"props":7941,"children":7942},{"emptyLinePlaceholder":1237},[7943],{"type":384,"value":1240},{"type":375,"tag":800,"props":7945,"children":7947},{"class":802,"line":7946},113,[7948],{"type":375,"tag":800,"props":7949,"children":7950},{"style":807},[7951],{"type":384,"value":7952},"// REST create, so the existing secret can be passed (the SDKs add a `secret` option in their next release).\n",{"type":375,"tag":800,"props":7954,"children":7956},{"class":802,"line":7955},114,[7957,7961,7965,7970,7974,7978,7982,7986,7990,7994,7998,8002,8006,8010,8014,8019,8023,8027,8031],{"type":375,"tag":800,"props":7958,"children":7959},{"style":817},[7960],{"type":384,"value":5219},{"type":375,"tag":800,"props":7962,"children":7963},{"style":817},[7964],{"type":384,"value":2944},{"type":375,"tag":800,"props":7966,"children":7967},{"style":854},[7968],{"type":384,"value":7969}," createEndpoint",{"type":375,"tag":800,"props":7971,"children":7972},{"style":823},[7973],{"type":384,"value":862},{"type":375,"tag":800,"props":7975,"children":7976},{"style":2956},[7977],{"type":384,"value":2190},{"type":375,"tag":800,"props":7979,"children":7980},{"style":817},[7981],{"type":384,"value":2101},{"type":375,"tag":800,"props":7983,"children":7984},{"style":834},[7985],{"type":384,"value":4260},{"type":375,"tag":800,"props":7987,"children":7988},{"style":823},[7989],{"type":384,"value":725},{"type":375,"tag":800,"props":7991,"children":7992},{"style":2956},[7993],{"type":384,"value":6553},{"type":375,"tag":800,"props":7995,"children":7996},{"style":817},[7997],{"type":384,"value":2101},{"type":375,"tag":800,"props":7999,"children":8000},{"style":854},[8001],{"type":384,"value":4235},{"type":375,"tag":800,"props":8003,"children":8004},{"style":823},[8005],{"type":384,"value":569},{"type":375,"tag":800,"props":8007,"children":8008},{"style":817},[8009],{"type":384,"value":2101},{"type":375,"tag":800,"props":8011,"children":8012},{"style":854},[8013],{"type":384,"value":5242},{"type":375,"tag":800,"props":8015,"children":8016},{"style":823},[8017],{"type":384,"value":8018},"\u003C{ ",{"type":375,"tag":800,"props":8020,"children":8021},{"style":2956},[8022],{"type":384,"value":1397},{"type":375,"tag":800,"props":8024,"children":8025},{"style":817},[8026],{"type":384,"value":2101},{"type":375,"tag":800,"props":8028,"children":8029},{"style":834},[8030],{"type":384,"value":4260},{"type":375,"tag":800,"props":8032,"children":8033},{"style":823},[8034],{"type":384,"value":8035}," }> {\n",{"type":375,"tag":800,"props":8037,"children":8039},{"class":802,"line":8038},115,[8040,8044,8048,8052,8056,8060,8064,8068,8072,8077,8082,8086,8090,8094,8099],{"type":375,"tag":800,"props":8041,"children":8042},{"style":817},[8043],{"type":384,"value":3054},{"type":375,"tag":800,"props":8045,"children":8046},{"style":834},[8047],{"type":384,"value":1038},{"type":375,"tag":800,"props":8049,"children":8050},{"style":817},[8051],{"type":384,"value":935},{"type":375,"tag":800,"props":8053,"children":8054},{"style":817},[8055],{"type":384,"value":846},{"type":375,"tag":800,"props":8057,"children":8058},{"style":854},[8059],{"type":384,"value":1051},{"type":375,"tag":800,"props":8061,"children":8062},{"style":823},[8063],{"type":384,"value":862},{"type":375,"tag":800,"props":8065,"children":8066},{"style":988},[8067],{"type":384,"value":3992},{"type":375,"tag":800,"props":8069,"children":8070},{"style":834},[8071],{"type":384,"value":6228},{"type":375,"tag":800,"props":8073,"children":8074},{"style":988},[8075],{"type":384,"value":8076},"}/v1/outbound/consumers/${",{"type":375,"tag":800,"props":8078,"children":8079},{"style":854},[8080],{"type":384,"value":8081},"encodeURIComponent",{"type":375,"tag":800,"props":8083,"children":8084},{"style":988},[8085],{"type":384,"value":862},{"type":375,"tag":800,"props":8087,"children":8088},{"style":823},[8089],{"type":384,"value":2190},{"type":375,"tag":800,"props":8091,"children":8092},{"style":988},[8093],{"type":384,"value":569},{"type":375,"tag":800,"props":8095,"children":8096},{"style":988},[8097],{"type":384,"value":8098},"}/endpoints`",{"type":375,"tag":800,"props":8100,"children":8101},{"style":823},[8102],{"type":384,"value":8103},", {\n",{"type":375,"tag":800,"props":8105,"children":8107},{"class":802,"line":8106},116,[8108,8113,8117],{"type":375,"tag":800,"props":8109,"children":8110},{"style":823},[8111],{"type":384,"value":8112},"    method: ",{"type":375,"tag":800,"props":8114,"children":8115},{"style":988},[8116],{"type":384,"value":1061},{"type":375,"tag":800,"props":8118,"children":8119},{"style":823},[8120],{"type":384,"value":8121},",\n",{"type":375,"tag":800,"props":8123,"children":8125},{"class":802,"line":8124},117,[8126,8131,8135,8139,8144,8148,8152],{"type":375,"tag":800,"props":8127,"children":8128},{"style":823},[8129],{"type":384,"value":8130},"    headers: { Authorization: ",{"type":375,"tag":800,"props":8132,"children":8133},{"style":834},[8134],{"type":384,"value":6243},{"type":375,"tag":800,"props":8136,"children":8137},{"style":823},[8138],{"type":384,"value":725},{"type":375,"tag":800,"props":8140,"children":8141},{"style":988},[8142],{"type":384,"value":8143},"\"Content-Type\"",{"type":375,"tag":800,"props":8145,"children":8146},{"style":823},[8147],{"type":384,"value":1076},{"type":375,"tag":800,"props":8149,"children":8150},{"style":988},[8151],{"type":384,"value":1081},{"type":375,"tag":800,"props":8153,"children":8154},{"style":823},[8155],{"type":384,"value":8156}," },\n",{"type":375,"tag":800,"props":8158,"children":8160},{"class":802,"line":8159},118,[8161,8166,8171,8175,8179],{"type":375,"tag":800,"props":8162,"children":8163},{"style":823},[8164],{"type":384,"value":8165},"    body: ",{"type":375,"tag":800,"props":8167,"children":8168},{"style":834},[8169],{"type":384,"value":8170},"JSON",{"type":375,"tag":800,"props":8172,"children":8173},{"style":823},[8174],{"type":384,"value":425},{"type":375,"tag":800,"props":8176,"children":8177},{"style":854},[8178],{"type":384,"value":949},{"type":375,"tag":800,"props":8180,"children":8181},{"style":823},[8182],{"type":384,"value":5963},{"type":375,"tag":800,"props":8184,"children":8186},{"class":802,"line":8185},119,[8187],{"type":375,"tag":800,"props":8188,"children":8189},{"style":823},[8190],{"type":384,"value":8191},"      url: e.url, event_types: e.eventTypes, description: e.description, headers: e.headers, rate: e.rate,\n",{"type":375,"tag":800,"props":8193,"children":8195},{"class":802,"line":8194},120,[8196,8201,8206,8210,8215,8219],{"type":375,"tag":800,"props":8197,"children":8198},{"style":817},[8199],{"type":384,"value":8200},"      ...",{"type":375,"tag":800,"props":8202,"children":8203},{"style":823},[8204],{"type":384,"value":8205},"(e.secret ",{"type":375,"tag":800,"props":8207,"children":8208},{"style":817},[8209],{"type":384,"value":4849},{"type":375,"tag":800,"props":8211,"children":8212},{"style":823},[8213],{"type":384,"value":8214}," { secret: e.secret } ",{"type":375,"tag":800,"props":8216,"children":8217},{"style":817},[8218],{"type":384,"value":2101},{"type":375,"tag":800,"props":8220,"children":8221},{"style":823},[8222],{"type":384,"value":8223}," {}),\n",{"type":375,"tag":800,"props":8225,"children":8227},{"class":802,"line":8226},121,[8228],{"type":375,"tag":800,"props":8229,"children":8230},{"style":823},[8231],{"type":384,"value":8232},"    }),\n",{"type":375,"tag":800,"props":8234,"children":8236},{"class":802,"line":8235},122,[8237],{"type":375,"tag":800,"props":8238,"children":8239},{"style":823},[8240],{"type":384,"value":8241},"  });\n",{"type":375,"tag":800,"props":8243,"children":8245},{"class":802,"line":8244},123,[8246],{"type":375,"tag":800,"props":8247,"children":8248},{"style":807},[8249],{"type":384,"value":8250},"  // Error bodies never echo the secret; the success body contains it, so read only the ID.\n",{"type":375,"tag":800,"props":8252,"children":8254},{"class":802,"line":8253},124,[8255,8259,8263,8267,8271,8275,8279,8283,8288,8293,8298,8302,8307,8311,8315,8319,8323,8327,8331,8335],{"type":375,"tag":800,"props":8256,"children":8257},{"style":817},[8258],{"type":384,"value":2981},{"type":375,"tag":800,"props":8260,"children":8261},{"style":823},[8262],{"type":384,"value":826},{"type":375,"tag":800,"props":8264,"children":8265},{"style":817},[8266],{"type":384,"value":1113},{"type":375,"tag":800,"props":8268,"children":8269},{"style":823},[8270],{"type":384,"value":1118},{"type":375,"tag":800,"props":8272,"children":8273},{"style":817},[8274],{"type":384,"value":6309},{"type":375,"tag":800,"props":8276,"children":8277},{"style":817},[8278],{"type":384,"value":1261},{"type":375,"tag":800,"props":8280,"children":8281},{"style":854},[8282],{"type":384,"value":7751},{"type":375,"tag":800,"props":8284,"children":8285},{"style":823},[8286],{"type":384,"value":8287},"(res.status, ",{"type":375,"tag":800,"props":8289,"children":8290},{"style":988},[8291],{"type":384,"value":8292},"`POST endpoint: ${",{"type":375,"tag":800,"props":8294,"children":8295},{"style":823},[8296],{"type":384,"value":8297},"res",{"type":375,"tag":800,"props":8299,"children":8300},{"style":988},[8301],{"type":384,"value":425},{"type":375,"tag":800,"props":8303,"children":8304},{"style":823},[8305],{"type":384,"value":8306},"status",{"type":375,"tag":800,"props":8308,"children":8309},{"style":988},[8310],{"type":384,"value":7278},{"type":375,"tag":800,"props":8312,"children":8313},{"style":817},[8314],{"type":384,"value":1123},{"type":375,"tag":800,"props":8316,"children":8317},{"style":823},[8318],{"type":384,"value":1038},{"type":375,"tag":800,"props":8320,"children":8321},{"style":988},[8322],{"type":384,"value":425},{"type":375,"tag":800,"props":8324,"children":8325},{"style":854},[8326],{"type":384,"value":384},{"type":375,"tag":800,"props":8328,"children":8329},{"style":988},[8330],{"type":384,"value":5233},{"type":375,"tag":800,"props":8332,"children":8333},{"style":988},[8334],{"type":384,"value":1402},{"type":375,"tag":800,"props":8336,"children":8337},{"style":823},[8338],{"type":384,"value":1025},{"type":375,"tag":800,"props":8340,"children":8342},{"class":802,"line":8341},125,[8343,8347,8351,8355,8359,8363,8367,8371,8375,8379,8384,8388,8392,8396,8400,8404],{"type":375,"tag":800,"props":8344,"children":8345},{"style":817},[8346],{"type":384,"value":3054},{"type":375,"tag":800,"props":8348,"children":8349},{"style":823},[8350],{"type":384,"value":4466},{"type":375,"tag":800,"props":8352,"children":8353},{"style":834},[8354],{"type":384,"value":1397},{"type":375,"tag":800,"props":8356,"children":8357},{"style":823},[8358],{"type":384,"value":5357},{"type":375,"tag":800,"props":8360,"children":8361},{"style":817},[8362],{"type":384,"value":3431},{"type":375,"tag":800,"props":8364,"children":8365},{"style":823},[8366],{"type":384,"value":826},{"type":375,"tag":800,"props":8368,"children":8369},{"style":817},[8370],{"type":384,"value":1123},{"type":375,"tag":800,"props":8372,"children":8373},{"style":823},[8374],{"type":384,"value":6274},{"type":375,"tag":800,"props":8376,"children":8377},{"style":854},[8378],{"type":384,"value":6279},{"type":375,"tag":800,"props":8380,"children":8381},{"style":823},[8382],{"type":384,"value":8383},"()) ",{"type":375,"tag":800,"props":8385,"children":8386},{"style":817},[8387],{"type":384,"value":5702},{"type":375,"tag":800,"props":8389,"children":8390},{"style":823},[8391],{"type":384,"value":4466},{"type":375,"tag":800,"props":8393,"children":8394},{"style":2956},[8395],{"type":384,"value":1397},{"type":375,"tag":800,"props":8397,"children":8398},{"style":817},[8399],{"type":384,"value":2101},{"type":375,"tag":800,"props":8401,"children":8402},{"style":834},[8403],{"type":384,"value":4260},{"type":375,"tag":800,"props":8405,"children":8406},{"style":823},[8407],{"type":384,"value":6412},{"type":375,"tag":800,"props":8409,"children":8411},{"class":802,"line":8410},126,[8412,8416],{"type":375,"tag":800,"props":8413,"children":8414},{"style":817},[8415],{"type":384,"value":3181},{"type":375,"tag":800,"props":8417,"children":8418},{"style":823},[8419],{"type":384,"value":8420}," { id };\n",{"type":375,"tag":800,"props":8422,"children":8424},{"class":802,"line":8423},127,[8425],{"type":375,"tag":800,"props":8426,"children":8427},{"style":823},[8428],{"type":384,"value":1188},{"type":375,"tag":800,"props":8430,"children":8432},{"class":802,"line":8431},128,[8433],{"type":375,"tag":800,"props":8434,"children":8435},{"emptyLinePlaceholder":1237},[8436],{"type":384,"value":1240},{"type":375,"tag":800,"props":8438,"children":8440},{"class":802,"line":8439},129,[8441,8445,8449,8454,8458,8463,8468,8473,8477,8481,8485,8490,8494,8499,8503,8507,8511,8515,8520,8524,8528,8532,8536],{"type":375,"tag":800,"props":8442,"children":8443},{"style":817},[8444],{"type":384,"value":5219},{"type":375,"tag":800,"props":8446,"children":8447},{"style":817},[8448],{"type":384,"value":2944},{"type":375,"tag":800,"props":8450,"children":8451},{"style":854},[8452],{"type":384,"value":8453}," step",{"type":375,"tag":800,"props":8455,"children":8456},{"style":823},[8457],{"type":384,"value":4339},{"type":375,"tag":800,"props":8459,"children":8460},{"style":854},[8461],{"type":384,"value":8462},"T",{"type":375,"tag":800,"props":8464,"children":8465},{"style":823},[8466],{"type":384,"value":8467},">(",{"type":375,"tag":800,"props":8469,"children":8470},{"style":2956},[8471],{"type":384,"value":8472},"what",{"type":375,"tag":800,"props":8474,"children":8475},{"style":817},[8476],{"type":384,"value":2101},{"type":375,"tag":800,"props":8478,"children":8479},{"style":834},[8480],{"type":384,"value":4260},{"type":375,"tag":800,"props":8482,"children":8483},{"style":823},[8484],{"type":384,"value":725},{"type":375,"tag":800,"props":8486,"children":8487},{"style":854},[8488],{"type":384,"value":8489},"fn",{"type":375,"tag":800,"props":8491,"children":8492},{"style":817},[8493],{"type":384,"value":2101},{"type":375,"tag":800,"props":8495,"children":8496},{"style":823},[8497],{"type":384,"value":8498}," () ",{"type":375,"tag":800,"props":8500,"children":8501},{"style":817},[8502],{"type":384,"value":5552},{"type":375,"tag":800,"props":8504,"children":8505},{"style":854},[8506],{"type":384,"value":5242},{"type":375,"tag":800,"props":8508,"children":8509},{"style":823},[8510],{"type":384,"value":4339},{"type":375,"tag":800,"props":8512,"children":8513},{"style":854},[8514],{"type":384,"value":8462},{"type":375,"tag":800,"props":8516,"children":8517},{"style":823},[8518],{"type":384,"value":8519},">)",{"type":375,"tag":800,"props":8521,"children":8522},{"style":817},[8523],{"type":384,"value":2101},{"type":375,"tag":800,"props":8525,"children":8526},{"style":854},[8527],{"type":384,"value":5242},{"type":375,"tag":800,"props":8529,"children":8530},{"style":823},[8531],{"type":384,"value":4339},{"type":375,"tag":800,"props":8533,"children":8534},{"style":854},[8535],{"type":384,"value":8462},{"type":375,"tag":800,"props":8537,"children":8538},{"style":823},[8539],{"type":384,"value":5256},{"type":375,"tag":800,"props":8541,"children":8543},{"class":802,"line":8542},130,[8544,8548,8552,8557,8562,8566,8570,8575,8580],{"type":375,"tag":800,"props":8545,"children":8546},{"style":817},[8547],{"type":384,"value":881},{"type":375,"tag":800,"props":8549,"children":8550},{"style":823},[8551],{"type":384,"value":826},{"type":375,"tag":800,"props":8553,"children":8554},{"style":817},[8555],{"type":384,"value":8556},"let",{"type":375,"tag":800,"props":8558,"children":8559},{"style":823},[8560],{"type":384,"value":8561}," attempt ",{"type":375,"tag":800,"props":8563,"children":8564},{"style":817},[8565],{"type":384,"value":3431},{"type":375,"tag":800,"props":8567,"children":8568},{"style":834},[8569],{"type":384,"value":5078},{"type":375,"tag":800,"props":8571,"children":8572},{"style":823},[8573],{"type":384,"value":8574},"; ; attempt",{"type":375,"tag":800,"props":8576,"children":8577},{"style":817},[8578],{"type":384,"value":8579},"++",{"type":375,"tag":800,"props":8581,"children":8582},{"style":823},[8583],{"type":384,"value":2973},{"type":375,"tag":800,"props":8585,"children":8587},{"class":802,"line":8586},131,[8588,8593],{"type":375,"tag":800,"props":8589,"children":8590},{"style":817},[8591],{"type":384,"value":8592},"    try",{"type":375,"tag":800,"props":8594,"children":8595},{"style":823},[8596],{"type":384,"value":1667},{"type":375,"tag":800,"props":8598,"children":8600},{"class":802,"line":8599},132,[8601,8606,8610,8615],{"type":375,"tag":800,"props":8602,"children":8603},{"style":817},[8604],{"type":384,"value":8605},"      return",{"type":375,"tag":800,"props":8607,"children":8608},{"style":817},[8609],{"type":384,"value":846},{"type":375,"tag":800,"props":8611,"children":8612},{"style":854},[8613],{"type":384,"value":8614}," fn",{"type":375,"tag":800,"props":8616,"children":8617},{"style":823},[8618],{"type":384,"value":3173},{"type":375,"tag":800,"props":8620,"children":8622},{"class":802,"line":8621},133,[8623,8628,8633],{"type":375,"tag":800,"props":8624,"children":8625},{"style":823},[8626],{"type":384,"value":8627},"    } ",{"type":375,"tag":800,"props":8629,"children":8630},{"style":817},[8631],{"type":384,"value":8632},"catch",{"type":375,"tag":800,"props":8634,"children":8635},{"style":823},[8636],{"type":384,"value":8637}," (err) {\n",{"type":375,"tag":800,"props":8639,"children":8641},{"class":802,"line":8640},134,[8642,8646,8650,8655,8660,8664,8669,8673,8677,8681,8686],{"type":375,"tag":800,"props":8643,"children":8644},{"style":817},[8645],{"type":384,"value":5923},{"type":375,"tag":800,"props":8647,"children":8648},{"style":823},[8649],{"type":384,"value":826},{"type":375,"tag":800,"props":8651,"children":8652},{"style":854},[8653],{"type":384,"value":8654},"statusOf",{"type":375,"tag":800,"props":8656,"children":8657},{"style":823},[8658],{"type":384,"value":8659},"(err) ",{"type":375,"tag":800,"props":8661,"children":8662},{"style":817},[8663],{"type":384,"value":5874},{"type":375,"tag":800,"props":8665,"children":8666},{"style":834},[8667],{"type":384,"value":8668}," 429",{"type":375,"tag":800,"props":8670,"children":8671},{"style":817},[8672],{"type":384,"value":3210},{"type":375,"tag":800,"props":8674,"children":8675},{"style":823},[8676],{"type":384,"value":8561},{"type":375,"tag":800,"props":8678,"children":8679},{"style":817},[8680],{"type":384,"value":4339},{"type":375,"tag":800,"props":8682,"children":8683},{"style":834},[8684],{"type":384,"value":8685}," 5",{"type":375,"tag":800,"props":8687,"children":8688},{"style":823},[8689],{"type":384,"value":2973},{"type":375,"tag":800,"props":8691,"children":8693},{"class":802,"line":8692},135,[8694,8699,8703,8707,8711,8716,8720,8724,8729,8734,8738,8743],{"type":375,"tag":800,"props":8695,"children":8696},{"style":817},[8697],{"type":384,"value":8698},"        await",{"type":375,"tag":800,"props":8700,"children":8701},{"style":817},[8702],{"type":384,"value":1261},{"type":375,"tag":800,"props":8704,"children":8705},{"style":834},[8706],{"type":384,"value":5242},{"type":375,"tag":800,"props":8708,"children":8709},{"style":823},[8710],{"type":384,"value":5538},{"type":375,"tag":800,"props":8712,"children":8713},{"style":2956},[8714],{"type":384,"value":8715},"r",{"type":375,"tag":800,"props":8717,"children":8718},{"style":823},[8719],{"type":384,"value":4844},{"type":375,"tag":800,"props":8721,"children":8722},{"style":817},[8723],{"type":384,"value":5552},{"type":375,"tag":800,"props":8725,"children":8726},{"style":854},[8727],{"type":384,"value":8728}," setTimeout",{"type":375,"tag":800,"props":8730,"children":8731},{"style":823},[8732],{"type":384,"value":8733},"(r, attempt ",{"type":375,"tag":800,"props":8735,"children":8736},{"style":817},[8737],{"type":384,"value":3692},{"type":375,"tag":800,"props":8739,"children":8740},{"style":834},[8741],{"type":384,"value":8742}," 2000",{"type":375,"tag":800,"props":8744,"children":8745},{"style":823},[8746],{"type":384,"value":8747},"));\n",{"type":375,"tag":800,"props":8749,"children":8751},{"class":802,"line":8750},136,[8752,8757],{"type":375,"tag":800,"props":8753,"children":8754},{"style":817},[8755],{"type":384,"value":8756},"        continue",{"type":375,"tag":800,"props":8758,"children":8759},{"style":823},[8760],{"type":384,"value":1231},{"type":375,"tag":800,"props":8762,"children":8764},{"class":802,"line":8763},137,[8765],{"type":375,"tag":800,"props":8766,"children":8767},{"style":823},[8768],{"type":384,"value":8769},"      }\n",{"type":375,"tag":800,"props":8771,"children":8773},{"class":802,"line":8772},138,[8774,8779,8783,8787,8792,8796,8801,8805,8810,8814,8818,8823,8827,8831,8836,8841,8845,8849,8853,8857],{"type":375,"tag":800,"props":8775,"children":8776},{"style":823},[8777],{"type":384,"value":8778},"      console.",{"type":375,"tag":800,"props":8780,"children":8781},{"style":854},[8782],{"type":384,"value":7486},{"type":375,"tag":800,"props":8784,"children":8785},{"style":823},[8786],{"type":384,"value":862},{"type":375,"tag":800,"props":8788,"children":8789},{"style":988},[8790],{"type":384,"value":8791},"`Stopped at ${",{"type":375,"tag":800,"props":8793,"children":8794},{"style":823},[8795],{"type":384,"value":8472},{"type":375,"tag":800,"props":8797,"children":8798},{"style":988},[8799],{"type":384,"value":8800},"}: ${",{"type":375,"tag":800,"props":8802,"children":8803},{"style":823},[8804],{"type":384,"value":7861},{"type":375,"tag":800,"props":8806,"children":8807},{"style":817},[8808],{"type":384,"value":8809}," instanceof",{"type":375,"tag":800,"props":8811,"children":8812},{"style":854},[8813],{"type":384,"value":6318},{"type":375,"tag":800,"props":8815,"children":8816},{"style":817},[8817],{"type":384,"value":5168},{"type":375,"tag":800,"props":8819,"children":8820},{"style":823},[8821],{"type":384,"value":8822}," err",{"type":375,"tag":800,"props":8824,"children":8825},{"style":988},[8826],{"type":384,"value":425},{"type":375,"tag":800,"props":8828,"children":8829},{"style":823},[8830],{"type":384,"value":7804},{"type":375,"tag":800,"props":8832,"children":8833},{"style":817},[8834],{"type":384,"value":8835}," :",{"type":375,"tag":800,"props":8837,"children":8838},{"style":854},[8839],{"type":384,"value":8840}," String",{"type":375,"tag":800,"props":8842,"children":8843},{"style":988},[8844],{"type":384,"value":862},{"type":375,"tag":800,"props":8846,"children":8847},{"style":823},[8848],{"type":384,"value":7861},{"type":375,"tag":800,"props":8850,"children":8851},{"style":988},[8852],{"type":384,"value":569},{"type":375,"tag":800,"props":8854,"children":8855},{"style":988},[8856],{"type":384,"value":1402},{"type":375,"tag":800,"props":8858,"children":8859},{"style":823},[8860],{"type":384,"value":1025},{"type":375,"tag":800,"props":8862,"children":8864},{"class":802,"line":8863},139,[8865,8869,8873,8877,8882,8886,8891],{"type":375,"tag":800,"props":8866,"children":8867},{"style":823},[8868],{"type":384,"value":8778},{"type":375,"tag":800,"props":8870,"children":8871},{"style":854},[8872],{"type":384,"value":7486},{"type":375,"tag":800,"props":8874,"children":8875},{"style":823},[8876],{"type":384,"value":862},{"type":375,"tag":800,"props":8878,"children":8879},{"style":988},[8880],{"type":384,"value":8881},"`Progress is saved in ${",{"type":375,"tag":800,"props":8883,"children":8884},{"style":834},[8885],{"type":384,"value":7668},{"type":375,"tag":800,"props":8887,"children":8888},{"style":988},[8889],{"type":384,"value":8890},"}. Fix the cause and run the script again.`",{"type":375,"tag":800,"props":8892,"children":8893},{"style":823},[8894],{"type":384,"value":1025},{"type":375,"tag":800,"props":8896,"children":8898},{"class":802,"line":8897},140,[8899,8904,8908,8912,8916],{"type":375,"tag":800,"props":8900,"children":8901},{"style":823},[8902],{"type":384,"value":8903},"      process.",{"type":375,"tag":800,"props":8905,"children":8906},{"style":854},[8907],{"type":384,"value":7562},{"type":375,"tag":800,"props":8909,"children":8910},{"style":823},[8911],{"type":384,"value":862},{"type":375,"tag":800,"props":8913,"children":8914},{"style":834},[8915],{"type":384,"value":7571},{"type":375,"tag":800,"props":8917,"children":8918},{"style":823},[8919],{"type":384,"value":1025},{"type":375,"tag":800,"props":8921,"children":8923},{"class":802,"line":8922},141,[8924],{"type":375,"tag":800,"props":8925,"children":8926},{"style":823},[8927],{"type":384,"value":1692},{"type":375,"tag":800,"props":8929,"children":8931},{"class":802,"line":8930},142,[8932],{"type":375,"tag":800,"props":8933,"children":8934},{"style":823},[8935],{"type":384,"value":1156},{"type":375,"tag":800,"props":8937,"children":8939},{"class":802,"line":8938},143,[8940],{"type":375,"tag":800,"props":8941,"children":8942},{"style":823},[8943],{"type":384,"value":1188},{"type":375,"tag":800,"props":8945,"children":8947},{"class":802,"line":8946},144,[8948],{"type":375,"tag":800,"props":8949,"children":8950},{"emptyLinePlaceholder":1237},[8951],{"type":384,"value":1240},{"type":375,"tag":800,"props":8953,"children":8955},{"class":802,"line":8954},145,[8956,8960,8964,8969,8973,8977,8981,8985],{"type":375,"tag":800,"props":8957,"children":8958},{"style":817},[8959],{"type":384,"value":5219},{"type":375,"tag":800,"props":8961,"children":8962},{"style":817},[8963],{"type":384,"value":2944},{"type":375,"tag":800,"props":8965,"children":8966},{"style":854},[8967],{"type":384,"value":8968}," importPlan",{"type":375,"tag":800,"props":8970,"children":8971},{"style":823},[8972],{"type":384,"value":862},{"type":375,"tag":800,"props":8974,"children":8975},{"style":2956},[8976],{"type":384,"value":6179},{"type":375,"tag":800,"props":8978,"children":8979},{"style":817},[8980],{"type":384,"value":2101},{"type":375,"tag":800,"props":8982,"children":8983},{"style":854},[8984],{"type":384,"value":4440},{"type":375,"tag":800,"props":8986,"children":8987},{"style":823},[8988],{"type":384,"value":2973},{"type":375,"tag":800,"props":8990,"children":8992},{"class":802,"line":8991},146,[8993,8997,9001,9005,9009,9013],{"type":375,"tag":800,"props":8994,"children":8995},{"style":817},[8996],{"type":384,"value":881},{"type":375,"tag":800,"props":8998,"children":8999},{"style":823},[9000],{"type":384,"value":826},{"type":375,"tag":800,"props":9002,"children":9003},{"style":817},[9004],{"type":384,"value":831},{"type":375,"tag":800,"props":9006,"children":9007},{"style":834},[9008],{"type":384,"value":6900},{"type":375,"tag":800,"props":9010,"children":9011},{"style":817},[9012],{"type":384,"value":841},{"type":375,"tag":800,"props":9014,"children":9015},{"style":823},[9016],{"type":384,"value":9017}," plan.eventTypes) {\n",{"type":375,"tag":800,"props":9019,"children":9021},{"class":802,"line":9020},147,[9022,9026,9030,9034,9039,9043,9047,9051,9055,9060],{"type":375,"tag":800,"props":9023,"children":9024},{"style":817},[9025],{"type":384,"value":6107},{"type":375,"tag":800,"props":9027,"children":9028},{"style":854},[9029],{"type":384,"value":8453},{"type":375,"tag":800,"props":9031,"children":9032},{"style":823},[9033],{"type":384,"value":862},{"type":375,"tag":800,"props":9035,"children":9036},{"style":988},[9037],{"type":384,"value":9038},"`event type ${",{"type":375,"tag":800,"props":9040,"children":9041},{"style":823},[9042],{"type":384,"value":6957},{"type":375,"tag":800,"props":9044,"children":9045},{"style":988},[9046],{"type":384,"value":425},{"type":375,"tag":800,"props":9048,"children":9049},{"style":823},[9050],{"type":384,"value":4471},{"type":375,"tag":800,"props":9052,"children":9053},{"style":988},[9054],{"type":384,"value":1402},{"type":375,"tag":800,"props":9056,"children":9057},{"style":823},[9058],{"type":384,"value":9059},", () ",{"type":375,"tag":800,"props":9061,"children":9062},{"style":817},[9063],{"type":384,"value":7879},{"type":375,"tag":800,"props":9065,"children":9067},{"class":802,"line":9066},148,[9068,9073,9077],{"type":375,"tag":800,"props":9069,"children":9070},{"style":823},[9071],{"type":384,"value":9072},"      relay.outbound.eventTypes.",{"type":375,"tag":800,"props":9074,"children":9075},{"style":854},[9076],{"type":384,"value":2334},{"type":375,"tag":800,"props":9078,"children":9079},{"style":823},[9080],{"type":384,"value":9081},"(et.name, { description: et.description, deprecated: et.deprecated }));\n",{"type":375,"tag":800,"props":9083,"children":9085},{"class":802,"line":9084},149,[9086],{"type":375,"tag":800,"props":9087,"children":9088},{"style":823},[9089],{"type":384,"value":1156},{"type":375,"tag":800,"props":9091,"children":9093},{"class":802,"line":9092},150,[9094,9098,9102,9106,9110,9114],{"type":375,"tag":800,"props":9095,"children":9096},{"style":817},[9097],{"type":384,"value":881},{"type":375,"tag":800,"props":9099,"children":9100},{"style":823},[9101],{"type":384,"value":826},{"type":375,"tag":800,"props":9103,"children":9104},{"style":817},[9105],{"type":384,"value":831},{"type":375,"tag":800,"props":9107,"children":9108},{"style":834},[9109],{"type":384,"value":6995},{"type":375,"tag":800,"props":9111,"children":9112},{"style":817},[9113],{"type":384,"value":841},{"type":375,"tag":800,"props":9115,"children":9116},{"style":823},[9117],{"type":384,"value":7004},{"type":375,"tag":800,"props":9119,"children":9121},{"class":802,"line":9120},151,[9122,9126,9130,9134,9139,9143,9147,9151,9155,9159,9163,9167,9171],{"type":375,"tag":800,"props":9123,"children":9124},{"style":817},[9125],{"type":384,"value":6107},{"type":375,"tag":800,"props":9127,"children":9128},{"style":854},[9129],{"type":384,"value":8453},{"type":375,"tag":800,"props":9131,"children":9132},{"style":823},[9133],{"type":384,"value":862},{"type":375,"tag":800,"props":9135,"children":9136},{"style":988},[9137],{"type":384,"value":9138},"`consumer ${",{"type":375,"tag":800,"props":9140,"children":9141},{"style":823},[9142],{"type":384,"value":6481},{"type":375,"tag":800,"props":9144,"children":9145},{"style":988},[9146],{"type":384,"value":425},{"type":375,"tag":800,"props":9148,"children":9149},{"style":823},[9150],{"type":384,"value":1397},{"type":375,"tag":800,"props":9152,"children":9153},{"style":988},[9154],{"type":384,"value":1402},{"type":375,"tag":800,"props":9156,"children":9157},{"style":823},[9158],{"type":384,"value":9059},{"type":375,"tag":800,"props":9160,"children":9161},{"style":817},[9162],{"type":384,"value":5552},{"type":375,"tag":800,"props":9164,"children":9165},{"style":823},[9166],{"type":384,"value":2329},{"type":375,"tag":800,"props":9168,"children":9169},{"style":854},[9170],{"type":384,"value":2334},{"type":375,"tag":800,"props":9172,"children":9173},{"style":823},[9174],{"type":384,"value":9175},"(c.id, { name: c.name }));\n",{"type":375,"tag":800,"props":9177,"children":9179},{"class":802,"line":9178},152,[9180,9184,9188,9192,9196,9200],{"type":375,"tag":800,"props":9181,"children":9182},{"style":817},[9183],{"type":384,"value":5633},{"type":375,"tag":800,"props":9185,"children":9186},{"style":823},[9187],{"type":384,"value":826},{"type":375,"tag":800,"props":9189,"children":9190},{"style":817},[9191],{"type":384,"value":831},{"type":375,"tag":800,"props":9193,"children":9194},{"style":834},[9195],{"type":384,"value":7201},{"type":375,"tag":800,"props":9197,"children":9198},{"style":817},[9199],{"type":384,"value":841},{"type":375,"tag":800,"props":9201,"children":9202},{"style":823},[9203],{"type":384,"value":7210},{"type":375,"tag":800,"props":9205,"children":9207},{"class":802,"line":9206},153,[9208,9212,9217,9222,9226],{"type":375,"tag":800,"props":9209,"children":9210},{"style":817},[9211],{"type":384,"value":5923},{"type":375,"tag":800,"props":9213,"children":9214},{"style":823},[9215],{"type":384,"value":9216}," (state[e.sourceId]) ",{"type":375,"tag":800,"props":9218,"children":9219},{"style":817},[9220],{"type":384,"value":9221},"continue",{"type":375,"tag":800,"props":9223,"children":9224},{"style":823},[9225],{"type":384,"value":2919},{"type":375,"tag":800,"props":9227,"children":9228},{"style":807},[9229],{"type":384,"value":9230},"// imported on an earlier run\n",{"type":375,"tag":800,"props":9232,"children":9234},{"class":802,"line":9233},154,[9235,9239,9243,9247,9251,9256,9260,9264,9268,9272,9276,9281,9285,9289,9293,9297,9301,9305,9309,9313,9317,9321,9325,9329],{"type":375,"tag":800,"props":9236,"children":9237},{"style":817},[9238],{"type":384,"value":5664},{"type":375,"tag":800,"props":9240,"children":9241},{"style":823},[9242],{"type":384,"value":4466},{"type":375,"tag":800,"props":9244,"children":9245},{"style":834},[9246],{"type":384,"value":1397},{"type":375,"tag":800,"props":9248,"children":9249},{"style":823},[9250],{"type":384,"value":725},{"type":375,"tag":800,"props":9252,"children":9253},{"style":834},[9254],{"type":384,"value":9255},"created",{"type":375,"tag":800,"props":9257,"children":9258},{"style":823},[9259],{"type":384,"value":5357},{"type":375,"tag":800,"props":9261,"children":9262},{"style":817},[9263],{"type":384,"value":3431},{"type":375,"tag":800,"props":9265,"children":9266},{"style":817},[9267],{"type":384,"value":846},{"type":375,"tag":800,"props":9269,"children":9270},{"style":854},[9271],{"type":384,"value":8453},{"type":375,"tag":800,"props":9273,"children":9274},{"style":823},[9275],{"type":384,"value":862},{"type":375,"tag":800,"props":9277,"children":9278},{"style":988},[9279],{"type":384,"value":9280},"`endpoint ${",{"type":375,"tag":800,"props":9282,"children":9283},{"style":823},[9284],{"type":384,"value":6481},{"type":375,"tag":800,"props":9286,"children":9287},{"style":988},[9288],{"type":384,"value":425},{"type":375,"tag":800,"props":9290,"children":9291},{"style":823},[9292],{"type":384,"value":1397},{"type":375,"tag":800,"props":9294,"children":9295},{"style":988},[9296],{"type":384,"value":7278},{"type":375,"tag":800,"props":9298,"children":9299},{"style":823},[9300],{"type":384,"value":6553},{"type":375,"tag":800,"props":9302,"children":9303},{"style":988},[9304],{"type":384,"value":425},{"type":375,"tag":800,"props":9306,"children":9307},{"style":823},[9308],{"type":384,"value":3636},{"type":375,"tag":800,"props":9310,"children":9311},{"style":988},[9312],{"type":384,"value":1402},{"type":375,"tag":800,"props":9314,"children":9315},{"style":823},[9316],{"type":384,"value":725},{"type":375,"tag":800,"props":9318,"children":9319},{"style":817},[9320],{"type":384,"value":5219},{"type":375,"tag":800,"props":9322,"children":9323},{"style":823},[9324],{"type":384,"value":8498},{"type":375,"tag":800,"props":9326,"children":9327},{"style":817},[9328],{"type":384,"value":5552},{"type":375,"tag":800,"props":9330,"children":9331},{"style":823},[9332],{"type":384,"value":1667},{"type":375,"tag":800,"props":9334,"children":9336},{"class":802,"line":9335},155,[9337,9342],{"type":375,"tag":800,"props":9338,"children":9339},{"style":817},[9340],{"type":384,"value":9341},"        try",{"type":375,"tag":800,"props":9343,"children":9344},{"style":823},[9345],{"type":384,"value":1667},{"type":375,"tag":800,"props":9347,"children":9349},{"class":802,"line":9348},156,[9350,9355,9359,9363,9367,9371,9375,9380,9384],{"type":375,"tag":800,"props":9351,"children":9352},{"style":817},[9353],{"type":384,"value":9354},"          return",{"type":375,"tag":800,"props":9356,"children":9357},{"style":823},[9358],{"type":384,"value":4466},{"type":375,"tag":800,"props":9360,"children":9361},{"style":817},[9362],{"type":384,"value":6052},{"type":375,"tag":800,"props":9364,"children":9365},{"style":823},[9366],{"type":384,"value":862},{"type":375,"tag":800,"props":9368,"children":9369},{"style":817},[9370],{"type":384,"value":1123},{"type":375,"tag":800,"props":9372,"children":9373},{"style":854},[9374],{"type":384,"value":7969},{"type":375,"tag":800,"props":9376,"children":9377},{"style":823},[9378],{"type":384,"value":9379},"(c.id, e)), created: ",{"type":375,"tag":800,"props":9381,"children":9382},{"style":834},[9383],{"type":384,"value":2379},{"type":375,"tag":800,"props":9385,"children":9386},{"style":823},[9387],{"type":384,"value":6412},{"type":375,"tag":800,"props":9389,"children":9391},{"class":802,"line":9390},157,[9392,9397,9401],{"type":375,"tag":800,"props":9393,"children":9394},{"style":823},[9395],{"type":384,"value":9396},"        } ",{"type":375,"tag":800,"props":9398,"children":9399},{"style":817},[9400],{"type":384,"value":8632},{"type":375,"tag":800,"props":9402,"children":9403},{"style":823},[9404],{"type":384,"value":8637},{"type":375,"tag":800,"props":9406,"children":9408},{"class":802,"line":9407},158,[9409,9414,9418,9422,9426,9430,9435],{"type":375,"tag":800,"props":9410,"children":9411},{"style":817},[9412],{"type":384,"value":9413},"          if",{"type":375,"tag":800,"props":9415,"children":9416},{"style":823},[9417],{"type":384,"value":826},{"type":375,"tag":800,"props":9419,"children":9420},{"style":854},[9421],{"type":384,"value":8654},{"type":375,"tag":800,"props":9423,"children":9424},{"style":823},[9425],{"type":384,"value":8659},{"type":375,"tag":800,"props":9427,"children":9428},{"style":817},[9429],{"type":384,"value":5874},{"type":375,"tag":800,"props":9431,"children":9432},{"style":834},[9433],{"type":384,"value":9434}," 409",{"type":375,"tag":800,"props":9436,"children":9437},{"style":823},[9438],{"type":384,"value":2973},{"type":375,"tag":800,"props":9440,"children":9442},{"class":802,"line":9441},159,[9443,9448,9453,9457,9461,9465,9469,9473,9478,9483,9487,9491,9495,9499,9504,9508],{"type":375,"tag":800,"props":9444,"children":9445},{"style":817},[9446],{"type":384,"value":9447},"            const",{"type":375,"tag":800,"props":9449,"children":9450},{"style":834},[9451],{"type":384,"value":9452}," existing",{"type":375,"tag":800,"props":9454,"children":9455},{"style":817},[9456],{"type":384,"value":935},{"type":375,"tag":800,"props":9458,"children":9459},{"style":823},[9460],{"type":384,"value":826},{"type":375,"tag":800,"props":9462,"children":9463},{"style":817},[9464],{"type":384,"value":1123},{"type":375,"tag":800,"props":9466,"children":9467},{"style":823},[9468],{"type":384,"value":2364},{"type":375,"tag":800,"props":9470,"children":9471},{"style":854},[9472],{"type":384,"value":6463},{"type":375,"tag":800,"props":9474,"children":9475},{"style":823},[9476],{"type":384,"value":9477},"(c.id)).",{"type":375,"tag":800,"props":9479,"children":9480},{"style":854},[9481],{"type":384,"value":9482},"find",{"type":375,"tag":800,"props":9484,"children":9485},{"style":823},[9486],{"type":384,"value":5538},{"type":375,"tag":800,"props":9488,"children":9489},{"style":2956},[9490],{"type":384,"value":5856},{"type":375,"tag":800,"props":9492,"children":9493},{"style":823},[9494],{"type":384,"value":4844},{"type":375,"tag":800,"props":9496,"children":9497},{"style":817},[9498],{"type":384,"value":5552},{"type":375,"tag":800,"props":9500,"children":9501},{"style":823},[9502],{"type":384,"value":9503}," x.url ",{"type":375,"tag":800,"props":9505,"children":9506},{"style":817},[9507],{"type":384,"value":5874},{"type":375,"tag":800,"props":9509,"children":9510},{"style":823},[9511],{"type":384,"value":9512}," e.url);\n",{"type":375,"tag":800,"props":9514,"children":9516},{"class":802,"line":9515},160,[9517,9522,9527,9531,9536,9541,9546],{"type":375,"tag":800,"props":9518,"children":9519},{"style":817},[9520],{"type":384,"value":9521},"            if",{"type":375,"tag":800,"props":9523,"children":9524},{"style":823},[9525],{"type":384,"value":9526}," (existing) ",{"type":375,"tag":800,"props":9528,"children":9529},{"style":817},[9530],{"type":384,"value":4796},{"type":375,"tag":800,"props":9532,"children":9533},{"style":823},[9534],{"type":384,"value":9535}," { id: existing.id, created: ",{"type":375,"tag":800,"props":9537,"children":9538},{"style":834},[9539],{"type":384,"value":9540},"false",{"type":375,"tag":800,"props":9542,"children":9543},{"style":823},[9544],{"type":384,"value":9545}," }; ",{"type":375,"tag":800,"props":9547,"children":9548},{"style":807},[9549],{"type":384,"value":9550},"// already there: leave its state alone\n",{"type":375,"tag":800,"props":9552,"children":9554},{"class":802,"line":9553},161,[9555],{"type":375,"tag":800,"props":9556,"children":9557},{"style":823},[9558],{"type":384,"value":9559},"          }\n",{"type":375,"tag":800,"props":9561,"children":9563},{"class":802,"line":9562},162,[9564,9569],{"type":375,"tag":800,"props":9565,"children":9566},{"style":817},[9567],{"type":384,"value":9568},"          throw",{"type":375,"tag":800,"props":9570,"children":9571},{"style":823},[9572],{"type":384,"value":9573}," err;\n",{"type":375,"tag":800,"props":9575,"children":9577},{"class":802,"line":9576},163,[9578],{"type":375,"tag":800,"props":9579,"children":9580},{"style":823},[9581],{"type":384,"value":9582},"        }\n",{"type":375,"tag":800,"props":9584,"children":9586},{"class":802,"line":9585},164,[9587],{"type":375,"tag":800,"props":9588,"children":9589},{"style":823},[9590],{"type":384,"value":6003},{"type":375,"tag":800,"props":9592,"children":9594},{"class":802,"line":9593},165,[9595,9599,9604,9608,9612,9616,9621,9625,9629,9633,9637,9641,9646],{"type":375,"tag":800,"props":9596,"children":9597},{"style":817},[9598],{"type":384,"value":5923},{"type":375,"tag":800,"props":9600,"children":9601},{"style":823},[9602],{"type":384,"value":9603}," (created) ",{"type":375,"tag":800,"props":9605,"children":9606},{"style":817},[9607],{"type":384,"value":1123},{"type":375,"tag":800,"props":9609,"children":9610},{"style":854},[9611],{"type":384,"value":8453},{"type":375,"tag":800,"props":9613,"children":9614},{"style":823},[9615],{"type":384,"value":862},{"type":375,"tag":800,"props":9617,"children":9618},{"style":988},[9619],{"type":384,"value":9620},"`pause ${",{"type":375,"tag":800,"props":9622,"children":9623},{"style":823},[9624],{"type":384,"value":1397},{"type":375,"tag":800,"props":9626,"children":9627},{"style":988},[9628],{"type":384,"value":1402},{"type":375,"tag":800,"props":9630,"children":9631},{"style":823},[9632],{"type":384,"value":9059},{"type":375,"tag":800,"props":9634,"children":9635},{"style":817},[9636],{"type":384,"value":5552},{"type":375,"tag":800,"props":9638,"children":9639},{"style":823},[9640],{"type":384,"value":2364},{"type":375,"tag":800,"props":9642,"children":9643},{"style":854},[9644],{"type":384,"value":9645},"pause",{"type":375,"tag":800,"props":9647,"children":9648},{"style":823},[9649],{"type":384,"value":9650},"(id));\n",{"type":375,"tag":800,"props":9652,"children":9654},{"class":802,"line":9653},166,[9655,9660,9664],{"type":375,"tag":800,"props":9656,"children":9657},{"style":823},[9658],{"type":384,"value":9659},"      state[e.sourceId] ",{"type":375,"tag":800,"props":9661,"children":9662},{"style":817},[9663],{"type":384,"value":3431},{"type":375,"tag":800,"props":9665,"children":9666},{"style":823},[9667],{"type":384,"value":9668}," id;\n",{"type":375,"tag":800,"props":9670,"children":9672},{"class":802,"line":9671},167,[9673,9678,9682,9686,9690,9694,9698,9702,9707,9712,9716,9721],{"type":375,"tag":800,"props":9674,"children":9675},{"style":854},[9676],{"type":384,"value":9677},"      writeFileSync",{"type":375,"tag":800,"props":9679,"children":9680},{"style":823},[9681],{"type":384,"value":862},{"type":375,"tag":800,"props":9683,"children":9684},{"style":834},[9685],{"type":384,"value":7668},{"type":375,"tag":800,"props":9687,"children":9688},{"style":823},[9689],{"type":384,"value":725},{"type":375,"tag":800,"props":9691,"children":9692},{"style":834},[9693],{"type":384,"value":8170},{"type":375,"tag":800,"props":9695,"children":9696},{"style":823},[9697],{"type":384,"value":425},{"type":375,"tag":800,"props":9699,"children":9700},{"style":854},[9701],{"type":384,"value":949},{"type":375,"tag":800,"props":9703,"children":9704},{"style":823},[9705],{"type":384,"value":9706},"(state, ",{"type":375,"tag":800,"props":9708,"children":9709},{"style":834},[9710],{"type":384,"value":9711},"null",{"type":375,"tag":800,"props":9713,"children":9714},{"style":823},[9715],{"type":384,"value":725},{"type":375,"tag":800,"props":9717,"children":9718},{"style":834},[9719],{"type":384,"value":9720},"2",{"type":375,"tag":800,"props":9722,"children":9723},{"style":823},[9724],{"type":384,"value":8747},{"type":375,"tag":800,"props":9726,"children":9728},{"class":802,"line":9727},168,[9729,9733,9738,9742,9747,9751,9756,9760,9765],{"type":375,"tag":800,"props":9730,"children":9731},{"style":817},[9732],{"type":384,"value":5664},{"type":375,"tag":800,"props":9734,"children":9735},{"style":834},[9736],{"type":384,"value":9737}," secretNote",{"type":375,"tag":800,"props":9739,"children":9740},{"style":817},[9741],{"type":384,"value":935},{"type":375,"tag":800,"props":9743,"children":9744},{"style":823},[9745],{"type":384,"value":9746}," e.secret ",{"type":375,"tag":800,"props":9748,"children":9749},{"style":817},[9750],{"type":384,"value":4849},{"type":375,"tag":800,"props":9752,"children":9753},{"style":988},[9754],{"type":384,"value":9755}," \"secret imported\"",{"type":375,"tag":800,"props":9757,"children":9758},{"style":817},[9759],{"type":384,"value":8835},{"type":375,"tag":800,"props":9761,"children":9762},{"style":988},[9763],{"type":384,"value":9764}," \"new secret\"",{"type":375,"tag":800,"props":9766,"children":9767},{"style":823},[9768],{"type":384,"value":1231},{"type":375,"tag":800,"props":9770,"children":9772},{"class":802,"line":9771},169,[9773,9777,9782,9786,9790,9794,9798,9802,9806,9810,9814,9818,9823,9827,9831,9835,9839,9844,9849,9854,9858,9863,9867,9871,9875,9879,9884,9888,9893],{"type":375,"tag":800,"props":9774,"children":9775},{"style":823},[9776],{"type":384,"value":8778},{"type":375,"tag":800,"props":9778,"children":9779},{"style":854},[9780],{"type":384,"value":9781},"log",{"type":375,"tag":800,"props":9783,"children":9784},{"style":823},[9785],{"type":384,"value":862},{"type":375,"tag":800,"props":9787,"children":9788},{"style":988},[9789],{"type":384,"value":3992},{"type":375,"tag":800,"props":9791,"children":9792},{"style":823},[9793],{"type":384,"value":6481},{"type":375,"tag":800,"props":9795,"children":9796},{"style":988},[9797],{"type":384,"value":425},{"type":375,"tag":800,"props":9799,"children":9800},{"style":823},[9801],{"type":384,"value":1397},{"type":375,"tag":800,"props":9803,"children":9804},{"style":988},[9805],{"type":384,"value":8800},{"type":375,"tag":800,"props":9807,"children":9808},{"style":823},[9809],{"type":384,"value":6553},{"type":375,"tag":800,"props":9811,"children":9812},{"style":988},[9813],{"type":384,"value":425},{"type":375,"tag":800,"props":9815,"children":9816},{"style":823},[9817],{"type":384,"value":3636},{"type":375,"tag":800,"props":9819,"children":9820},{"style":988},[9821],{"type":384,"value":9822},"} -> ${",{"type":375,"tag":800,"props":9824,"children":9825},{"style":823},[9826],{"type":384,"value":1397},{"type":375,"tag":800,"props":9828,"children":9829},{"style":988},[9830],{"type":384,"value":7278},{"type":375,"tag":800,"props":9832,"children":9833},{"style":823},[9834],{"type":384,"value":9255},{"type":375,"tag":800,"props":9836,"children":9837},{"style":817},[9838],{"type":384,"value":5168},{"type":375,"tag":800,"props":9840,"children":9841},{"style":988},[9842],{"type":384,"value":9843}," `(created, paused, ${",{"type":375,"tag":800,"props":9845,"children":9846},{"style":823},[9847],{"type":384,"value":9848},"secretNote",{"type":375,"tag":800,"props":9850,"children":9851},{"style":988},[9852],{"type":384,"value":9853},"})`",{"type":375,"tag":800,"props":9855,"children":9856},{"style":817},[9857],{"type":384,"value":8835},{"type":375,"tag":800,"props":9859,"children":9860},{"style":988},[9861],{"type":384,"value":9862}," \"(already existed, unchanged)\"}${",{"type":375,"tag":800,"props":9864,"children":9865},{"style":823},[9866],{"type":384,"value":6553},{"type":375,"tag":800,"props":9868,"children":9869},{"style":988},[9870],{"type":384,"value":425},{"type":375,"tag":800,"props":9872,"children":9873},{"style":823},[9874],{"type":384,"value":4379},{"type":375,"tag":800,"props":9876,"children":9877},{"style":817},[9878],{"type":384,"value":5168},{"type":375,"tag":800,"props":9880,"children":9881},{"style":988},[9882],{"type":384,"value":9883}," \" [disabled in your DB]\"",{"type":375,"tag":800,"props":9885,"children":9886},{"style":817},[9887],{"type":384,"value":8835},{"type":375,"tag":800,"props":9889,"children":9890},{"style":988},[9891],{"type":384,"value":9892}," \"\"}`",{"type":375,"tag":800,"props":9894,"children":9895},{"style":823},[9896],{"type":384,"value":1025},{"type":375,"tag":800,"props":9898,"children":9900},{"class":802,"line":9899},170,[9901],{"type":375,"tag":800,"props":9902,"children":9903},{"style":823},[9904],{"type":384,"value":1692},{"type":375,"tag":800,"props":9906,"children":9908},{"class":802,"line":9907},171,[9909],{"type":375,"tag":800,"props":9910,"children":9911},{"style":823},[9912],{"type":384,"value":1156},{"type":375,"tag":800,"props":9914,"children":9916},{"class":802,"line":9915},172,[9917],{"type":375,"tag":800,"props":9918,"children":9919},{"style":823},[9920],{"type":384,"value":1188},{"type":375,"tag":800,"props":9922,"children":9924},{"class":802,"line":9923},173,[9925],{"type":375,"tag":800,"props":9926,"children":9927},{"emptyLinePlaceholder":1237},[9928],{"type":384,"value":1240},{"type":375,"tag":800,"props":9930,"children":9932},{"class":802,"line":9931},174,[9933,9937,9941,9945,9949,9953],{"type":375,"tag":800,"props":9934,"children":9935},{"style":817},[9936],{"type":384,"value":831},{"type":375,"tag":800,"props":9938,"children":9939},{"style":834},[9940],{"type":384,"value":5511},{"type":375,"tag":800,"props":9942,"children":9943},{"style":817},[9944],{"type":384,"value":935},{"type":375,"tag":800,"props":9946,"children":9947},{"style":817},[9948],{"type":384,"value":846},{"type":375,"tag":800,"props":9950,"children":9951},{"style":854},[9952],{"type":384,"value":5228},{"type":375,"tag":800,"props":9954,"children":9955},{"style":823},[9956],{"type":384,"value":3173},{"type":375,"tag":800,"props":9958,"children":9960},{"class":802,"line":9959},175,[9961,9965,9969],{"type":375,"tag":800,"props":9962,"children":9963},{"style":817},[9964],{"type":384,"value":1123},{"type":375,"tag":800,"props":9966,"children":9967},{"style":854},[9968],{"type":384,"value":6170},{"type":375,"tag":800,"props":9970,"children":9971},{"style":823},[9972],{"type":384,"value":9973},"(plan);\n",{"type":375,"tag":800,"props":9975,"children":9977},{"class":802,"line":9976},176,[9978,9982,9987,9991,9996,10001,10005,10010,10014,10018,10022,10026,10031,10035,10040,10044,10048,10053],{"type":375,"tag":800,"props":9979,"children":9980},{"style":817},[9981],{"type":384,"value":831},{"type":375,"tag":800,"props":9983,"children":9984},{"style":834},[9985],{"type":384,"value":9986}," endpoints",{"type":375,"tag":800,"props":9988,"children":9989},{"style":817},[9990],{"type":384,"value":935},{"type":375,"tag":800,"props":9992,"children":9993},{"style":823},[9994],{"type":384,"value":9995}," plan.consumers.",{"type":375,"tag":800,"props":9997,"children":9998},{"style":854},[9999],{"type":384,"value":10000},"reduce",{"type":375,"tag":800,"props":10002,"children":10003},{"style":823},[10004],{"type":384,"value":5538},{"type":375,"tag":800,"props":10006,"children":10007},{"style":2956},[10008],{"type":384,"value":10009},"n",{"type":375,"tag":800,"props":10011,"children":10012},{"style":823},[10013],{"type":384,"value":725},{"type":375,"tag":800,"props":10015,"children":10016},{"style":2956},[10017],{"type":384,"value":6481},{"type":375,"tag":800,"props":10019,"children":10020},{"style":823},[10021],{"type":384,"value":4844},{"type":375,"tag":800,"props":10023,"children":10024},{"style":817},[10025],{"type":384,"value":5552},{"type":375,"tag":800,"props":10027,"children":10028},{"style":823},[10029],{"type":384,"value":10030}," n ",{"type":375,"tag":800,"props":10032,"children":10033},{"style":817},[10034],{"type":384,"value":2745},{"type":375,"tag":800,"props":10036,"children":10037},{"style":823},[10038],{"type":384,"value":10039}," c.endpoints.",{"type":375,"tag":800,"props":10041,"children":10042},{"style":834},[10043],{"type":384,"value":3191},{"type":375,"tag":800,"props":10045,"children":10046},{"style":823},[10047],{"type":384,"value":725},{"type":375,"tag":800,"props":10049,"children":10050},{"style":834},[10051],{"type":384,"value":10052},"0",{"type":375,"tag":800,"props":10054,"children":10055},{"style":823},[10056],{"type":384,"value":1025},{"type":375,"tag":800,"props":10058,"children":10060},{"class":802,"line":10059},177,[10061,10066,10070,10074,10079,10083,10087,10091,10095,10099,10104,10108,10112,10116,10120,10124,10129,10133,10138],{"type":375,"tag":800,"props":10062,"children":10063},{"style":823},[10064],{"type":384,"value":10065},"console.",{"type":375,"tag":800,"props":10067,"children":10068},{"style":854},[10069],{"type":384,"value":9781},{"type":375,"tag":800,"props":10071,"children":10072},{"style":823},[10073],{"type":384,"value":862},{"type":375,"tag":800,"props":10075,"children":10076},{"style":988},[10077],{"type":384,"value":10078},"`Plan: ${",{"type":375,"tag":800,"props":10080,"children":10081},{"style":823},[10082],{"type":384,"value":6179},{"type":375,"tag":800,"props":10084,"children":10085},{"style":988},[10086],{"type":384,"value":425},{"type":375,"tag":800,"props":10088,"children":10089},{"style":823},[10090],{"type":384,"value":4285},{"type":375,"tag":800,"props":10092,"children":10093},{"style":988},[10094],{"type":384,"value":425},{"type":375,"tag":800,"props":10096,"children":10097},{"style":834},[10098],{"type":384,"value":3191},{"type":375,"tag":800,"props":10100,"children":10101},{"style":988},[10102],{"type":384,"value":10103},"} event types, ${",{"type":375,"tag":800,"props":10105,"children":10106},{"style":823},[10107],{"type":384,"value":6179},{"type":375,"tag":800,"props":10109,"children":10110},{"style":988},[10111],{"type":384,"value":425},{"type":375,"tag":800,"props":10113,"children":10114},{"style":823},[10115],{"type":384,"value":6366},{"type":375,"tag":800,"props":10117,"children":10118},{"style":988},[10119],{"type":384,"value":425},{"type":375,"tag":800,"props":10121,"children":10122},{"style":834},[10123],{"type":384,"value":3191},{"type":375,"tag":800,"props":10125,"children":10126},{"style":988},[10127],{"type":384,"value":10128},"} consumers, ${",{"type":375,"tag":800,"props":10130,"children":10131},{"style":823},[10132],{"type":384,"value":4571},{"type":375,"tag":800,"props":10134,"children":10135},{"style":988},[10136],{"type":384,"value":10137},"} endpoints.`",{"type":375,"tag":800,"props":10139,"children":10140},{"style":823},[10141],{"type":384,"value":1025},{"type":375,"tag":800,"props":10143,"children":10145},{"class":802,"line":10144},178,[10146,10150,10154,10158,10163,10167,10172,10176,10180,10185,10189,10193,10198,10202,10206,10210,10214,10218,10223],{"type":375,"tag":800,"props":10147,"children":10148},{"style":823},[10149],{"type":384,"value":10065},{"type":375,"tag":800,"props":10151,"children":10152},{"style":854},[10153],{"type":384,"value":9781},{"type":375,"tag":800,"props":10155,"children":10156},{"style":823},[10157],{"type":384,"value":862},{"type":375,"tag":800,"props":10159,"children":10160},{"style":988},[10161],{"type":384,"value":10162},"`Secrets: ${",{"type":375,"tag":800,"props":10164,"children":10165},{"style":823},[10166],{"type":384,"value":4571},{"type":375,"tag":800,"props":10168,"children":10169},{"style":817},[10170],{"type":384,"value":10171}," -",{"type":375,"tag":800,"props":10173,"children":10174},{"style":823},[10175],{"type":384,"value":5511},{"type":375,"tag":800,"props":10177,"children":10178},{"style":988},[10179],{"type":384,"value":425},{"type":375,"tag":800,"props":10181,"children":10182},{"style":823},[10183],{"type":384,"value":10184},"newSecrets",{"type":375,"tag":800,"props":10186,"children":10187},{"style":988},[10188],{"type":384,"value":425},{"type":375,"tag":800,"props":10190,"children":10191},{"style":834},[10192],{"type":384,"value":3191},{"type":375,"tag":800,"props":10194,"children":10195},{"style":988},[10196],{"type":384,"value":10197},"} import, ${",{"type":375,"tag":800,"props":10199,"children":10200},{"style":823},[10201],{"type":384,"value":6179},{"type":375,"tag":800,"props":10203,"children":10204},{"style":988},[10205],{"type":384,"value":425},{"type":375,"tag":800,"props":10207,"children":10208},{"style":823},[10209],{"type":384,"value":10184},{"type":375,"tag":800,"props":10211,"children":10212},{"style":988},[10213],{"type":384,"value":425},{"type":375,"tag":800,"props":10215,"children":10216},{"style":834},[10217],{"type":384,"value":3191},{"type":375,"tag":800,"props":10219,"children":10220},{"style":988},[10221],{"type":384,"value":10222},"} get a new whsec_ secret.`",{"type":375,"tag":800,"props":10224,"children":10225},{"style":823},[10226],{"type":384,"value":1025},{"type":375,"tag":800,"props":10228,"children":10230},{"class":802,"line":10229},179,[10231,10235,10240,10244,10249,10253,10257,10262,10266,10270,10274,10278,10282,10286,10291,10295,10299],{"type":375,"tag":800,"props":10232,"children":10233},{"style":817},[10234],{"type":384,"value":5814},{"type":375,"tag":800,"props":10236,"children":10237},{"style":823},[10238],{"type":384,"value":10239}," (plan.newSecrets.",{"type":375,"tag":800,"props":10241,"children":10242},{"style":834},[10243],{"type":384,"value":3191},{"type":375,"tag":800,"props":10245,"children":10246},{"style":823},[10247],{"type":384,"value":10248},") console.",{"type":375,"tag":800,"props":10250,"children":10251},{"style":854},[10252],{"type":384,"value":9781},{"type":375,"tag":800,"props":10254,"children":10255},{"style":823},[10256],{"type":384,"value":862},{"type":375,"tag":800,"props":10258,"children":10259},{"style":988},[10260],{"type":384,"value":10261},"`New secret for endpoint rows: ${",{"type":375,"tag":800,"props":10263,"children":10264},{"style":823},[10265],{"type":384,"value":6179},{"type":375,"tag":800,"props":10267,"children":10268},{"style":988},[10269],{"type":384,"value":425},{"type":375,"tag":800,"props":10271,"children":10272},{"style":823},[10273],{"type":384,"value":10184},{"type":375,"tag":800,"props":10275,"children":10276},{"style":988},[10277],{"type":384,"value":425},{"type":375,"tag":800,"props":10279,"children":10280},{"style":854},[10281],{"type":384,"value":7519},{"type":375,"tag":800,"props":10283,"children":10284},{"style":988},[10285],{"type":384,"value":862},{"type":375,"tag":800,"props":10287,"children":10288},{"style":988},[10289],{"type":384,"value":10290},"\", \"",{"type":375,"tag":800,"props":10292,"children":10293},{"style":988},[10294],{"type":384,"value":569},{"type":375,"tag":800,"props":10296,"children":10297},{"style":988},[10298],{"type":384,"value":1402},{"type":375,"tag":800,"props":10300,"children":10301},{"style":823},[10302],{"type":384,"value":1025},{"type":375,"tag":800,"props":10304,"children":10306},{"class":802,"line":10305},180,[10307,10311,10315,10319,10323,10327,10331,10336],{"type":375,"tag":800,"props":10308,"children":10309},{"style":817},[10310],{"type":384,"value":5814},{"type":375,"tag":800,"props":10312,"children":10313},{"style":823},[10314],{"type":384,"value":826},{"type":375,"tag":800,"props":10316,"children":10317},{"style":834},[10318],{"type":384,"value":4093},{"type":375,"tag":800,"props":10320,"children":10321},{"style":823},[10322],{"type":384,"value":10248},{"type":375,"tag":800,"props":10324,"children":10325},{"style":854},[10326],{"type":384,"value":9781},{"type":375,"tag":800,"props":10328,"children":10329},{"style":823},[10330],{"type":384,"value":862},{"type":375,"tag":800,"props":10332,"children":10333},{"style":988},[10334],{"type":384,"value":10335},"\"Dry run: nothing was written. Run again with DRY_RUN=false to import.\"",{"type":375,"tag":800,"props":10337,"children":10338},{"style":823},[10339],{"type":384,"value":1025},{"type":375,"tag":800,"props":10341,"children":10343},{"class":802,"line":10342},181,[10344,10349,10353,10357],{"type":375,"tag":800,"props":10345,"children":10346},{"style":817},[10347],{"type":384,"value":10348},"else",{"type":375,"tag":800,"props":10350,"children":10351},{"style":817},[10352],{"type":384,"value":846},{"type":375,"tag":800,"props":10354,"children":10355},{"style":854},[10356],{"type":384,"value":8968},{"type":375,"tag":800,"props":10358,"children":10359},{"style":823},[10360],{"type":384,"value":9973},{"type":375,"tag":376,"props":10362,"children":10363},{},[10364,10366,10372,10374,10380],{"type":384,"value":10365},"Store the Webhook Relay endpoint ID next to your endpoint row (from ",{"type":375,"tag":389,"props":10367,"children":10369},{"className":10368},[],[10370],{"type":384,"value":10371},"migration-state.json",{"type":384,"value":10373},") so your product can show the secret and delivery history for it. If the API refuses a secret that passed the local check (",{"type":375,"tag":389,"props":10375,"children":10377},{"className":10376},[],[10378],{"type":384,"value":10379},"400",{"type":384,"value":10381},"), the script stops without printing it; clear that row's secret in your export query so the endpoint gets a new one, or fix the stored value, and run again. With more than a few hundred endpoints, run the script in batches and review the output between runs. There is no bulk import endpoint.",{"type":375,"tag":427,"props":10383,"children":10385},{"id":10384},"let-your-agent-do-it",[10386],{"type":384,"value":10387},"Let your agent do it",{"type":375,"tag":10389,"props":10390,"children":10392},"agent-prompt",{"title":10391},"Replace our homegrown webhook sender with Webhook Relay",[10393,10407,10443],{"type":375,"tag":376,"props":10394,"children":10395},{},[10396,10398,10405],{"type":384,"value":10397},"Read ",{"type":375,"tag":403,"props":10399,"children":10403},{"href":10400,"rel":10401},"https://webhookrelay.com/outbound-migration/diy.md",[10402],"nofollow",[10404],{"type":384,"value":10400},{"type":384,"value":10406}," and follow it step by step in this repository.",{"type":375,"tag":3244,"props":10408,"children":10409},{},[10410,10415,10428,10433,10438],{"type":375,"tag":2820,"props":10411,"children":10412},{},[10413],{"type":384,"value":10414},"Inventory how we send webhooks to customers today: the tables or queues that hold events and endpoints, the worker or job that POSTs them, the signing code, the retry logic and the receiver docs we give customers.",{"type":375,"tag":2820,"props":10416,"children":10417},{},[10418,10420,10426],{"type":384,"value":10419},"Check GET ",{"type":375,"tag":403,"props":10421,"children":10424},{"href":10422,"rel":10423},"https://my.webhookrelay.com/v1/outbound/access",[10402],[10425],{"type":384,"value":10422},{"type":384,"value":10427},": confirm enabled is true and that our customers, endpoints and event types fit within the returned limits. Stop and tell me if they don't.",{"type":375,"tag":2820,"props":10429,"children":10430},{},[10431],{"type":384,"value":10432},"Adapt the playbook's import script to our schema and import event types, consumers and endpoints, dry run first, passing each endpoint's existing signing secret when it fits the format. Every new endpoint must be paused. Report which endpoints get a new secret, by ID only.",{"type":375,"tag":2820,"props":10434,"children":10435},{},[10436],{"type":384,"value":10437},"Make the worker also publish each event to Webhook Relay with a stable idempotency key (the outbox row or job ID), behind a feature flag. Keep our own delivery running.",{"type":375,"tag":2820,"props":10439,"children":10440},{},[10441],{"type":384,"value":10442},"Run the playbook's verification checks with a Webhook Bin and report the results.",{"type":375,"tag":376,"props":10444,"children":10445},{},[10446],{"type":384,"value":10447},"Never print, log or commit signing secrets. Never delete endpoint rows, outbox data or the old worker code. Stop and ask me for approval before resuming any Webhook Relay endpoint or turning off our own delivery for any customer.",{"type":375,"tag":427,"props":10449,"children":10451},{"id":10450},"next-steps",[10452],{"type":384,"value":10453},"Next steps",{"type":375,"tag":2816,"props":10455,"children":10456},{},[10457,10467,10476],{"type":375,"tag":2820,"props":10458,"children":10459},{},[10460,10465],{"type":375,"tag":403,"props":10461,"children":10462},{"href":77},[10463],{"type":384,"value":10464},"Migration overview",{"type":384,"value":10466},": limits, what doesn't carry over and the general cutover plan.",{"type":375,"tag":2820,"props":10468,"children":10469},{},[10470,10474],{"type":375,"tag":403,"props":10471,"children":10472},{"href":71},[10473],{"type":384,"value":72},{"type":384,"value":10475},": send this to customers whose receivers change.",{"type":375,"tag":2820,"props":10477,"children":10478},{},[10479,10483],{"type":375,"tag":403,"props":10480,"children":10481},{"href":74},[10482],{"type":384,"value":75},{"type":384,"value":10484},": delivery history, endpoint health, pause and resume.",{"type":375,"tag":10486,"props":10487,"children":10488},"style",{},[10489],{"type":384,"value":10490},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":345,"searchDepth":875,"depth":875,"links":10492},[10493,10494,10499,10500,10501,10502,10503,10504],{"id":429,"depth":813,"text":432},{"id":769,"depth":813,"text":772,"children":10495},[10496,10497,10498],{"id":776,"depth":875,"text":779},{"id":1762,"depth":875,"text":1765},{"id":2292,"depth":875,"text":2295},{"id":2562,"depth":813,"text":2565},{"id":3239,"depth":813,"text":3242},{"id":3392,"depth":813,"text":3395},{"id":3784,"depth":813,"text":3787},{"id":10384,"depth":813,"text":10387},{"id":10450,"depth":813,"text":10453},"markdown","content:docs:outbound:5.migrate:6.diy.md","content","docs/outbound/5.migrate/6.diy.md","docs/outbound/5.migrate/6.diy","md",{"loc":92},1792946407895]